v3.0.0¶
v3.0.0 là bản phát hành chính v2 → v3. Nó giới thiệu OpenMV Cam M7 (STM32F7) và module mạng nơ-ron nn CMSIS-NN mới (thay thế các phương thức find_number() / classify_object() cũ được mã hóa cứng), bổ sung hỗ trợ cảm biến MT9V034 màn trập toàn cảnh và FLIR Lepton, kích thước khung hình sensor.WVGA, và cập nhật lõi lên MicroPython 1.9.4. Một số hành vi của image / sensor / WiFi đã thay đổi — hãy đọc các thay đổi không tương thích bên dưới.
Điểm nổi bật¶
OpenMV Cam M7 — bo mạch STM32F7 mới.
Module
nn— suy luận CMSIS-NN:nn.load(),Net.forward(),Net.search(), với bộ chuyển đổi mô hình và các ví dụ.Cảm biến mới — MT9V034 màn trập toàn cảnh (kích hoạt bằng FSIN) và FLIR Lepton.
MicroPython 1.9.4 — cập nhật lõi.
Không tương thích:
image.find_number()/image.classify_object()được mã hóa cứng đã bị xóa,sensor.sleep()giờ đây phát sinh ngoại lệ, socket WINC trả về số byte thực tế,image.binary()trả về ảnh mới, vàfind_apriltags()bị giới hạn ở 64K điểm ảnh — xem các thay đổi không tương thích.
Tính năng mới¶
nn— module mạng nơ-ron CMSIS-NN mới:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(trả về giá trị float từ 0.0–1.0),Net.search()để phát hiện đa tỷ lệ/vị trí, vàNet.test(), cùng bộ chuyển đổi mô hình CMSIS-NN (nn_convert.py/nn_quantizer.py), các mô hình CIFAR-10 / LeNet / smile đi kèm, và các tập lệnh ví dụ NN / NN-search.Cảm biến — hỗ trợ màn trập toàn cảnh MT9V034 (snapshot kích hoạt FSIN) trên OpenMV 4, driver FLIR Lepton cập nhật với hỗ trợ snapshot, và kích thước khung hình mới
sensor.WVGA(720x480) /sensor.WVGA2(752x480).Xử lý ảnh —
image.find_circles()được bổ sung từ khóar_min/r_max/r_step(Hough nhanh hơn),find_keypoints()và Haarfind_features()giờ đây chấp nhận ảnh RGB, vàimage.compress()/ mã hóa JPEG giờ đây hỗ trợ ảnh nhị phân (bitmap).Khởi động —
boot.pygiờ đây chạy trước khi khởi tạo USB để có thể ghi đè chế độ USB (ví dụ: HID).Ví dụ — thêm các ví dụ AprilTag độ phân giải nhỏ/cao, ví dụ I2C LIDAR-Lite V3, và công cụ tập dữ liệu (
augment_images.py/make_patches.py).
Các thay đổi và cải tiến khác¶
Cập nhật MicroPython đi kèm lên 1.9.4 (với việc hoàn nguyên pyexec parse/compile/exec và sửa lỗi PendSV); thông báo lỗi
fb_alloc/xallochết bộ nhớ rõ ràng hơn; ẩn tiếng ồnnnprintf trong quá trình tải mạng; tái cấu trúc kho lưu trữ (examples →scripts/, tools →tools/, Haar cascades →ml/). Modulennkhông khả dụng trên OpenMV 2 (flash không đủ).
Sửa lỗi¶
Xử lý ảnh:
Sửa
fast_atan2fvới x≤0 (trước đây luôn là 0 — hãy kiểm tra lại góc blob / đường thẳng / điểm đặc trưng), xử lý bộ nhớfind_apriltags()(nội dung bị mất và realloc xấu khi OOM), con trỏ hàng per-bpp của ảnh nhị phân/bitmap (kết quả nhị phân bị hỏng),find_edges(EDGE_CANNY)với ROI, macroTO_GS_PIXEL(tích phân / hình thái học), phát trực tiếp bitmap/JPEG cho khung hình thang xám (bpp==0),pop_frontdanh sách điểm đặc trưng/vùng màu, và kết quảmatch_descriptor.
Hệ thống và camera:
Sửa số interface/endpoint USB HID, thay đổi động tần số XCLK khi chạy,
Net.forward()trả về đúng số đầu ra, và lỗi hardfault khi ngắt quá trình phân tích tập lệnh.
Phần cứng và hỗ trợ bo mạch¶
OpenMV Cam M7 (STM32F7) — bo mạch mới.
Cảm biến màn trập toàn cảnh MT9V034 (OpenMV 4, kích hoạt FSIN).
FLIR Lepton — driver cập nhật với hỗ trợ snapshot.
Các thay đổi API không tương thích¶
Các thay đổi API không tương thích với người dùng giữa v2.9.0 và v3.0.0. Phạm vi: C-module Python trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gán nhãn theo mức độ ảnh hưởng:
major — ảnh hưởng đến hầu hết các tập lệnh sử dụng tính năng; bạn sẽ cần chuyển đổi code.
minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh sử dụng nó.
behavior — cùng API, kết quả khác; hãy kiểm tra lại các tập lệnh đã tinh chỉnh.
Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi code, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.
Đã xóa image.find_number() / image.classify_object() (major)¶
Các phương thức image.find_number() (LeNet) và image.classify_object() (CMSIS CNN) được mã hóa cứng đã bị xóa để nhường chỗ cho module nn mới. Hãy thay thế chúng bằng net = nn.load('/model.network'); out = net.forward(img).
Commits: d151f7e38
sensor.sleep() / sensor.reset() phát sinh ngoại lệ khi thất bại (minor)¶
sensor.sleep() và sensor.reset() giờ đây phát sinh ngoại lệ khi thất bại thay vì trả về True / False. Code kiểm tra giá trị boolean trả về của sensor.sleep() phải bao lời gọi trong try / except thay thế.
Commits: 7d16d008f
Socket WINC trả về số byte thực tế (behavior)¶
Các phương thức send / recv / sendto / recvfrom của socket WINC1500 trước đây luôn trả về 0; giờ đây chúng trả về số byte thực tế được chuyển. Code giả định giá trị trả về là 0 (hoặc lặp/chặn dựa trên đó) phải xử lý các số đếm thực tế.
Commits: a07fb2f60
image.binary() trả về ảnh mới (behavior)¶
image.binary() được bổ sung từ khóa to_bitmap / copy và giờ đây trả về một đối tượng ảnh mới thay vì trả về/biến đổi ảnh nguồn tại chỗ. Code phụ thuộc vào binary() biến đổi ảnh gốc nên sử dụng đối tượng được trả về (và truyền copy=True cho hành vi không tại chỗ).
Commits: 8a44f0cd9
Danh sách kiểm tra di chuyển¶
Để di chuyển sạch sang v3.0.0, công việc thông thường là:
Thay thế
image.find_number()/image.classify_object()bằng modulenn(việc di chuyển nn).Bao
sensor.sleep()/sensor.reset()trongtry/exceptthay vì kiểm tra giá trị boolean trả về (thay đổi sensor.sleep).Xử lý số byte thực tế từ
send/recvcủa socket WINC (thay đổi socket WINC).Sử dụng ảnh được trả về bởi
image.binary()thay vì mong đợi biến đổi tại chỗ (thay đổi binary).Thu nhỏ ảnh trước
find_apriltags()để giữ dưới 64K điểm ảnh (giới hạn find_apriltags).
Tất cả các tập lệnh khác chạy không thay đổi.