v4.6.0¶
v4.6.0은 주요 기능 릴리스입니다. 핵심 내용으로는, 카메라 모듈이 sensor에서 csi로 이름이 변경되었고(하위 호환성을 위한 sensor 별칭 포함), 새로운 ml.postprocessing 모듈, Prophesee GenX320 이벤트 센서, PAG7936, FLIR Boson 열화상 카메라 지원, 새로운 TinyUSB 기반 DFU 부트로더, Nema GPU 가속, 그리고 MicroPython 1.24가 추가되었습니다. 또한 그리기 alpha 범위가 변경되었으므로 아래의 호환성 변경 사항을 읽어보십시오.
주요 내용¶
sensor는 이제csi이기도 합니다 — 카메라 모듈의 이름이csi로 변경되었습니다.sensor는 하위 호환성을 위한 별칭으로 남아 있습니다(아직 코드를 변경할 필요는 없습니다).새로운
ml.postprocessing모듈 —fomo_postprocess,yolo_v2_postprocess,yolo_v5_postprocess.새로운 센서 — Prophesee GenX320 이벤트 카메라, PAG7936, FLIR Boson 320/640 열화상.
새로운 DFU 부트로더 — 모든 보드에서 기존 CDC 부트로더를 대체하는 TinyUSB 기반 표준 DFU 부트로더.
Nema GPU — STM32에서의 2D/벡터 그래픽 가속.
MicroPython이 1.24.0으로 업데이트되었습니다.
호환성 변경: 그리기
alpha범위가 0–256에서 0–255로 변경되었습니다(alpha 범위 변경 참조).
새로운 기능¶
ml.postprocessing— 모델 출력을 디코딩하는 새로운 모듈로, FOMO 디코더(fomo_postprocess,find_blobs+ NMS, 설정 가능한threshold)와yolo_v2_postprocess/yolo_v5_postprocess(threshold,anchors,nms_threshold,nms_sigma포함)를 제공합니다.이벤트 카메라 시각화 — 새로운
Image.to_evt_dark()/Image.to_evt_light()메서드와PALETTE_EVT_DARK/PALETTE_EVT_LIGHT색상 팔레트.깊이 시각화 — 새로운
Image.to_depth()메서드와PALETTE_DEPTH색상 팔레트(ToF 지원 보드).센서 인트로스펙션 —
(R, Gb, Gr, B)채널 통계 튜플을 반환하는 새로운IOCTL_GET_RGB_STATSioctl.GenX320 바이어스 프리셋 —
GENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEED프리셋을 포함하는 새로운IOCTL_GENX320_SET_BIASESioctl.omv.debug_mode()— USB 디버그 인터페이스가 활성 상태인지 조회하는 새로운 함수.Nema GPU — STM32에서의 Cortex-M55 NemaGFX/NemaVG 드라이버 통합으로,
draw_image에 대한 인플레이스 GPU 컷스루를 지원합니다.PAG7936 — 컬러바 출력, 자동 노출 / 자동 게인, 슬립, MIPI 모드가 추가되었습니다.
기타 변경 사항 및 개선 사항¶
MicroPython이 1.24.0으로 업데이트되었습니다; ulab이 6.7.3으로 업데이트되었습니다(
keepdims추가).공통 부트 스크립트 — STM32 / i.MX RT / RP2가 이제 기본
main.py와README.txt로 플래시/SD 파일 시스템을 자동 생성하고 임시 시작 전역 변수를 해제하는_boot.py를 공유합니다.STM32N6 기반 작업 — 기본 STM32N6 지원, XSPI 드라이버, 공통 MPU 드라이버, 그리고 STM32에서의 펌웨어/부트로더 서명.
Computed-goto VM — 인터프리터 속도 향상을 위해 STM32 및 nRF에서 활성화되었습니다.
버그 수정¶
카메라 및 센서:
OV5640 PCLK/노출 계산을 수정했습니다(두 개의 MIPI 레인, 분주기 테이블 수정).
MT9V0xx Bayer-CFA 변형이 이제 RGB565/BAYER/GRAYSCALE를 허용하고 오류를 발생시키는 대신 올바른 raw Bayer 데이터를 출력합니다.
PAG7936 렌즈 셰이딩 보정을 활성화하고 HD 이미지 이동 문제를 수정했습니다.
set_framerate()는 이제 해상도별로 상한이 적용됩니다.i.MX RT1060에서 FLIR Lepton 열화상 캡처를 수정했고(VoSPI CPOL/CPHA 수정), 이제 Lepton 스냅샷이 특정 오류 코드를 반환합니다.
GenX320 주파수 반올림을 수정했습니다.
이미지 처리:
그레이스케일 이미지에서
to_ndarray()의 메모리 손상을 수정했습니다.Bayer→RGB/그레이스케일 변환에서 디베이어 경계 예측을 수정했습니다.
SDRAM이 없는 보드에서
draw_image()의transpose를 수정했습니다(청크 버퍼).Image.binary()와ml.Model의load_to_fb플래그에서 불리언 인자 처리를 수정했습니다.
시스템:
STM32 및 i.MX RT에서 SPI RX 전용 / TX 전용 핀 구성을 수정했습니다.
Portenta H7 이더넷 DMA 버퍼를 SRAM3으로 이동하여 이더넷이 작동하도록 했습니다.
USB를 통한 디버그 채널 텍스트 출력에서 문자가 누락되는 문제를 수정했습니다. 또한 ML 동적 할당 크기를 올림하여 모델 버퍼가 너무 작아지는 것을 방지했습니다.
하드웨어 및 보드 지원¶
Prophesee GenX320 이벤트 기반 비전 센서(STM32F7 + i.MX RT1060).
PAG7936 센서(MIPI 모드 포함).
FLIR Boson 320/640 열화상 카메라(IDD 4 드라이버).
STM32에서의 Nema GPU 가속.
STM32N6 부트로더/XSPI 기반 작업.
VL53L5CX — 전원 활성화 핀 지원이 추가되었습니다.
호환성을 깨는 API 변경¶
v4.5.9와 v4.6.0 사이의 사용자에게 보이는 API 변경 사항입니다. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.
각 변경 사항은 영향도에 따라 태그가 지정됩니다:
major — 해당 기능을 사용한 대부분의 스크립트를 수정해야 합니다.
minor — 좁은 범위의 API로, 해당 기능을 사용한 스크립트에만 영향을 줍니다.
behavior — 동일한 API이지만 결과가 다릅니다. 튜닝된 스크립트를 다시 확인하십시오.
tooling — 플래싱 / 호스트 도구 / 보드 가용성에만 영향을 줍니다.
변경 사항은 해당 순서대로 영향도별로 그룹화됩니다. 코드를 포팅하기만 원한다면 끝부분의 마이그레이션 체크리스트로 이동하십시오. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다. 참고: 이번 릴리스의 sensor → csi 모듈 이름 변경은 호환성을 깨지 않습니다 — sensor는 여전히 별칭으로 작동합니다.
그리기 alpha 범위가 이제 0–255입니다 (major)¶
draw_image()의 alpha 인자와 이를 받는 모든 오버레이(FIR, ToF, 디스플레이, TV, MJPEG, alpha 테이블)는 이제 0–256 대신 0–255 범위를 사용합니다. 완전히 불투명하게 하려고 256을 전달했거나 256을 기준으로 alpha를 계산한 스크립트는 0–255로 다시 스케일링해야 합니다.
커밋: 1f87b5bb6
FLIR Lepton ioctl 상수 이름 변경 (minor)¶
세 개의 Lepton ioctl 상수가 단축되었습니다: IOCTL_LEPTON_SET_MEASUREMENT_MODE → IOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGE → IOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATURE → IOCTL_LEPTON_GET_FPA_TEMP. 번들된 예제도 업데이트되었습니다.
커밋: 12582d54d
ML 후처리 API 변동 (minor)¶
ml.postprocessing는 이번 릴리스에서 새로 추가되었으며 진행 중에 API가 변경되었습니다: yolo_v2_postprocess 생성자 키워드 score_threshold가 threshold로 이름이 변경되었고, 빈 후처리 결과는 이제 [] 대신 ()를 반환합니다. 번들된 모델 yolov5_rgb_person은 yolo_v5_224_nano로 이름이 변경되었습니다. ml.apps.MicroSpeech는 이제 고정된 gain_db=24 대신 임의의 **kwargs를 audio.init()로 전달합니다.
AGAST가 기본 코너 검출기입니다 (behavior)¶
find_keypoints()는 이제 모든 보드에서 기본 코너 검출기로 FAST 대신 AGAST를 사용합니다. 키포인트 집합(따라서 디스크립터 매칭)이 이전 릴리스와 달라지므로, 튜닝된 키포인트 파이프라인을 다시 확인하십시오. 또한 IDE 프레임 버퍼 스트리밍은 USB 부하를 줄이기 위해 이제 20Hz로 상한이 적용됩니다.
부트로더, 제거된 보드 및 기능 (tooling)¶
기존 CDC 부트로더가 모든 보드에서 새로운 TinyUSB 기반 표준 DFU 부트로더로 대체되었습니다 — 펌웨어 업데이트 메커니즘이 변경되었으므로 그에 맞게 플래싱 워크플로/도구를 업데이트하십시오. OpenMV Pro 보드, 독립형 Raspberry Pi Pico 빌드, 그리고 WiFi 디버그(wifidbg) 원격 IDE 기능이 제거되었습니다.
커밋: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
마이그레이션 체크리스트¶
v4.6.0으로 깔끔하게 포팅하기 위한 일반적인 작업은 다음과 같습니다:
모든 그리기/오버레이
alpha값을 0–256 범위에서 0–255로 다시 스케일링하십시오(alpha 범위 변경).FLIR Lepton ioctl 상수를 단축된 형태로 이름을 변경하십시오(Lepton ioctl 이름 변경).
새로운 ML 후처리기를 사용했다면
score_threshold를threshold로 바꾸고,()빈 결과를 처리하며,yolo_v5_224_nano모델 이름을 업데이트하십시오(ML 변경 사항).AGAST 검출기 변경에 대해
find_keypoints()기반 파이프라인을 다시 확인하십시오(코너 검출기 변경).새로운 DFU 부트로더에 맞게 펌웨어 플래싱 워크플로를 업데이트하십시오(부트로더/보드 변경 사항).