v3.0.0¶
v3.0.0은 주요 v2 → v3 릴리스입니다. OpenMV Cam M7(STM32F7)과 새로운 nn CMSIS-NN 신경망 모듈(기존의 하드코딩된 find_number() / classify_object() 메서드를 대체)을 도입하고, MT9V034 글로벌 셔터 및 FLIR Lepton 센서 지원, sensor.WVGA 프레임 크기를 추가하며, 코어를 MicroPython 1.9.4로 업데이트합니다. 여러 image / sensor / WiFi 동작이 변경되었습니다 — 아래의 호환성 변경 사항을 확인하세요.
주요 사항¶
OpenMV Cam M7 — 새로운 STM32F7 보드.
nn모듈 — CMSIS-NN 추론:nn.load(),Net.forward(),Net.search(), 모델 변환기 및 예제 포함.새로운 센서 — MT9V034 글로벌 셔터(FSIN 트리거)와 FLIR Lepton.
MicroPython 1.9.4 코어 업데이트.
호환성 변경: 하드코딩된
image.find_number()/image.classify_object()가 제거되었고,sensor.sleep()이 이제 예외를 발생시키며, WINC 소켓이 실제 바이트 수를 반환하고,image.binary()가 새 이미지를 반환하며,find_apriltags()가 64K 픽셀로 제한됩니다 — 호환성 변경 사항을 참고하세요.
새로운 기능¶
nn— 새로운 CMSIS-NN 신경망 모듈:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(0.0–1.0 부동소수점 반환), 멀티 스케일/위치 검출을 위한Net.search(), 그리고Net.test()와 더불어 CMSIS-NN 모델 변환기(nn_convert.py/nn_quantizer.py), 번들된 CIFAR-10 / LeNet / smile 모델, NN / NN 검색 예제 스크립트를 제공합니다.Sensors — OpenMV 4의 MT9V034 글로벌 셔터 지원(FSIN 트리거 스냅샷), Lepton 스냅샷을 지원하는 업데이트된 FLIR Lepton 드라이버, 그리고 새로운
sensor.WVGA(720x480) /sensor.WVGA2(752x480) 프레임 크기.이미징 —
image.find_circles()에r_min/r_max/r_step키워드(더 빠른 Hough)가 추가되었고,find_keypoints()와 Haarfind_features()가 이제 RGB 이미지를 받으며,image.compress()/ JPEG 인코딩이 이제 바이너리(비트맵) 이미지를 지원합니다.부팅 —
boot.py가 이제 USB 초기화 전에 실행되어 USB 모드(예: HID)를 재정의할 수 있습니다.예제 — 소형/고해상도 AprilTag 예제, I2C LIDAR-Lite V3 예제, 데이터셋 도구(
augment_images.py/make_patches.py)를 추가했습니다.
기타 변경 및 개선 사항¶
번들된 MicroPython을 1.9.4로 업데이트했고(pyexec 파싱/컴파일/실행 되돌리기 및 PendSV 수정 포함),
fb_alloc/xalloc메모리 부족 오류 메시지를 더 명확하게 했으며, 네트워크 로딩 중nnprintf 잡음을 억제하고, 저장소를 재구성했습니다(예제 →scripts/, 도구 →tools/, Haar 캐스케이드 →ml/).nn모듈은 OpenMV 2에서는 사용할 수 없습니다(플래시 부족).
버그 수정¶
이미징:
x≤0에 대한
fast_atan2f(이전에는 항상 0이었음 — 블롭 / 선 / 키포인트 각도를 다시 확인하세요),find_apriltags()메모리 처리(OOM 시 내용 손실 및 잘못된 realloc), 바이너리/비트맵 bpp별 행 포인터(손상된 바이너리 결과), ROI를 사용한find_edges(EDGE_CANNY),TO_GS_PIXEL매크로(적분 / 모폴로지), 그레이스케일(bpp==0) 프레임의 비트맵/JPEG 스트리밍, 키포인트/블롭 리스트pop_front, 그리고match_descriptor결과를 수정했습니다.
시스템 및 카메라:
USB HID 인터페이스/엔드포인트 번호, 런타임에 XCLK 주파수를 동적으로 변경하는 기능,
Net.forward()가 올바른 출력 개수를 반환하도록, 그리고 스크립트 파싱을 중단할 때 발생하던 하드폴트를 수정했습니다.
하드웨어 및 보드 지원¶
OpenMV Cam M7 (STM32F7) — 새로운 보드.
MT9V034 글로벌 셔터 센서(OpenMV 4, FSIN 트리거).
FLIR Lepton — 스냅샷 지원이 추가된 업데이트된 드라이버.
호환성을 깨는 API 변경¶
v2.9.0과 v3.0.0 사이의 사용자에게 보이는 API 변경 사항입니다. 범위: modules/의 Python C 모듈과 scripts/libraries/의 Python 라이브러리.
각 변경에는 영향도가 표시되어 있습니다:
주요 — 해당 기능을 사용한 대부분의 스크립트에 영향을 줍니다. 코드를 포팅해야 합니다.
사소 — 좁은 범위의 API로, 이를 사용한 스크립트에만 영향을 줍니다.
동작 — 동일한 API이지만 결과가 다릅니다. 튜닝된 스크립트를 다시 확인하세요.
변경 사항은 그 순서대로 영향도별로 그룹화되어 있습니다. 코드를 포팅하고 싶다면 끝부분의 마이그레이션 체크리스트로 바로 이동하세요. 각 커밋 해시는 GitHub의 해당 diff로 연결됩니다.
image.find_number() / image.classify_object() 제거 (주요)¶
하드코딩된 image.find_number()(LeNet)와 image.classify_object()(CMSIS CNN) 메서드가 새로운 nn 모듈을 위해 제거되었습니다. net = nn.load('/model.network'); out = net.forward(img)로 대체하세요.
커밋: d151f7e38
sensor.sleep() / sensor.reset()가 실패 시 예외 발생 (사소)¶
sensor.sleep()과 sensor.reset()은 이제 실패 시 True / False를 반환하는 대신 예외를 발생시킵니다. sensor.sleep()의 불리언 반환값을 확인하던 코드는 대신 해당 호출을 try / except로 감싸야 합니다.
커밋: 7d16d008f
WINC 소켓이 실제 바이트 수를 반환 (동작)¶
WINC1500 소켓의 send / recv / sendto / recvfrom 메서드는 이전에는 항상 0을 반환했지만, 이제 실제로 전송된 바이트 수를 반환합니다. 0 반환을 가정했던(또는 그 값에 대해 루프/블록했던) 코드는 실제 바이트 수를 처리해야 합니다.
커밋: a07fb2f60
image.binary()가 새 이미지를 반환 (동작)¶
image.binary()에 to_bitmap / copy 키워드가 추가되었으며, 이제 원본 이미지를 제자리에서 반환/변경하는 대신 새로운 이미지 객체를 반환합니다. binary()가 원본 이미지를 변경하는 데 의존했던 코드는 반환된 객체를 사용해야 합니다(제자리 변경이 아닌 동작을 원하면 copy=True를 전달하세요).
커밋: 8a44f0cd9
마이그레이션 체크리스트¶
v3.0.0으로 깔끔하게 포팅하려면 일반적으로 다음 작업이 필요합니다:
image.find_number()/image.classify_object()를nn모듈로 대체하세요(nn 마이그레이션).불리언 반환값을 확인하는 대신
sensor.sleep()/sensor.reset()을try/except로 감싸세요(sensor.sleep 변경).WINC 소켓
send/recv의 실제 바이트 수를 처리하세요(WINC 소켓 변경).제자리 변경을 기대하는 대신
image.binary()가 반환한 이미지를 사용하세요(binary 변경).64K 픽셀 미만으로 유지하기 위해
find_apriltags()전에 이미지를 축소하세요(find_apriltags 제한).
그 외 모든 스크립트는 변경 없이 실행됩니다.