v4.8.0¶
v4.8.0 là phiên bản phát hành tính năng lớn. Điểm nổi bật: mô-đun camera csi hoàn toàn mới dựa trên lớp với hỗ trợ đa camera, board OpenMV N6 (STM32N6) với NPU Neural-ART, backend suy luận NPU, chế độ sự kiện RAW cho camera sự kiện GenX320, mô-đun crc mới, thư viện hậu xử lý ML được tổ chức lại, và MicroPython 1.26. Phiên bản này cũng loại bỏ một số API cũ — mô-đun buzzer và điều khiển FLIR Lepton trong mô-đun fir — vì vậy hãy đọc phần thay đổi không tương thích bên dưới.
Điểm nổi bật¶
Mô-đun camera
csimới. APIcsi.CSIdựa trên lớp hỗ trợ nhiều camera đồng thời, được giới thiệu song song với mô-đunsensorkế thừa.OpenMV N6. Board STM32N6 với NPU Neural-ART, bộ đệm ba, Soft-CSI và mô-đun ToF.
Suy luận NPU. Backend ST Neural-ART (STAI) cho suy luận mô hình tăng tốc bằng phần cứng.
Chế độ sự kiện GenX320. Đầu ra sự kiện RAW cùng
draw_event_histogram()để kết xuất camera sự kiện.Tổ chức lại hậu xử lý ML — các gói con theo nhà cung cấp (
ml.postprocessing.ultralytics,mediapipe,edgeimpulse,darknet) với các bộ phát hiện BlazeFace / BlazePalm / điểm mốc tay và khuôn mặt mới.Mô-đun
crcmới — CRC-16 / CRC-32 tăng tốc bằng phần cứng.MicroPython cập nhật lên 1.26.0.
Thay đổi không tương thích: mô-đun
buzzervà điều khiển Lepton trong mô-đunfirđã bị xóa (Lepton giờ là camera thông thường). Xem thay đổi fir/Lepton và việc xóa buzzer.
Tính năng mới¶
Mô-đun camera
csimới — đối tượngcsi.CSIdựa trên lớp với nhiều camera đồng thời (tối đa ba camera trên N6), chụp ảnh không chặn, kích thước khung hình(w, h)tùy chỉnh, vàprint()/ repr có thông tin chi tiết. Mô-đun được giới thiệu song song với mô-đunsensorkế thừa (không phải thay thế trực tiếp).crc—crc.crc16()vàcrc.crc32(), tăng tốc bằng phần cứng với dự phòng phần mềm, trên OpenMV N6 và AE3.image.Image.draw_image()có thêm từ khóatransform=(ma trậnndarrayfloat 2-D cho biến đổi affine/phối cảnh, tăng tốc GPU trên STM32 và Alif); biến đổi tương tự cũng có sẵn trong chuyển đổi ảnh.draw_event_histogram()— kết xuất biểu đồ tần suất camera sự kiện.Chế độ sự kiện RAW GenX320 —
csi.IOCTL_GENX320_SET_MODEvớicsi.GENX320_MODE_HISTO/csi.GENX320_MODE_EVENT,csi.IOCTL_GENX320_READ_EVENTS,csi.IOCTL_GENX320_CALIBRATE, các hằng số loại sự kiện, và các tập lệnh ví dụ mới.ML — backend suy luận NPU ST Neural-ART (STAI);
ml.Modelcó thêm từ khóapostprocess=(bộ hậu xử lý giờ chạy tự động bên trongpredict()ngay cả khi không có hàm gọi lại);ml.postprocessingđược tổ chức lại thành các gói con theo nhà cung cấp —ml.postprocessing.ultralytics(YoloV5,YoloV8),ml.postprocessing.darknet(YoloV2,YoloLC),ml.postprocessing.edgeimpulse(Fomo), vàml.postprocessing.mediapipe(BlazeFace,BlazePalm,HandLandmarks,FaceLandmarks) — các tên snake_case cũ vẫn được giữ như bí danh;ml.utils.draw_keypoints()vàml.utils.draw_skeleton()được thêm vào; các mô hình ROMFS đi kèm tăng thêm (BlazeFace, YOLO-LC, YOLOv8n, điểm mốc lòng bàn tay/tay/khuôn mặt).audio— Đầu vào microphone kỹ thuật số MDF trên STM32N6.Màn hình — trình điều khiển OLED SSD1351 và ví dụ; các bộ điều khiển
SPIDisplaycó thể ghi đè lệnh khởi tạo; trình tạo màn hình SPI có thêm từ khóahmirror/vflip.Bộ phân tích trên thiết bị — bộ đếm chu kỳ/sự kiện SysTick + Armv8.1-M PMU với đo lường ở cấp hàm, có thể đọc qua liên kết debug (
pyopenmvcó thêm hỗ trợ phân tích và ký hiệu ELF).Hỗ trợ cảm biến mới — PixArt PS5520; FLIR BOSON trên OpenMV H7 Plus; tự phát hiện GenX320.
Các thay đổi và cải tiến khác¶
MicroPython cập nhật lên 1.26.0.
Khởi động camera — đồng hồ cảm biến đã được tách rời khỏi trạng thái CSI, phát hiện camera lúc khởi động nhanh hơn (cấu hình phổ biến nhất được thử trước), và đồng hồ mặc định OV7725 OpenMV 3 đã được sửa.
Chất lượng ảnh — hiệu chỉnh gamma ISP phần mềm (Alif và STM32) và hiệu chỉnh điểm ảnh xấu (STM32) được bật theo mặc định; cảm biến PAG7936 và PS5520 có thêm điều khiển cân bằng trắng tự động.
Hiệu suất —
image.Image.to_ndarray()được tăng tốc với Helium SIMD và bộ hậu xử lý FOMO được vector hóa với ulab.Trình điều khiển FLIR Lepton được viết lại để nhận khung hình không đồng bộ ở nền — xoay/
transposegiờ hoạt động, vẽ nâng cấp theo phương pháp song tuyến, và đặt lại nhanh hơn.Thông lượng chụp — CSI i.MX RT1062 giờ sử dụng DMA offload đầy đủ, và STM32 N6 có
draw_image()GPU phần cứng.
Sửa lỗi¶
Camera và cảm biến:
Đã sửa các chế độ RGB565 / GRAYSCALE / BAYER / YUV422 trên các cảm biến STM32, PAJ6100 trên OpenMV H7 / H7 Plus, OpenMV 2 QVGA RGB565, và cấu hình mono / RGB-YUV N6 CSI; camera kiểm tra phần mềm giờ đặt lại xác định.
Cân bằng trắng tự động không còn làm ảnh bị xanh lá ở tốc độ khung hình thấp hoặc thay đổi (trung bình di động 250 ms thay thế mẫu mỗi 100 khung hình), và hiện tượng nhấp nháy độ sáng PS5520 đã được sửa.
Xử lý ảnh:
Đã sửa lỗi kết xuất đường vẽ;
image.Image.flush()giờ xả bộ đệm JPEG của ảnh mà nó được gọi trên;Normalizationgiờ áp dụng giá trị trung bình/độ lệch chuẩn cho đầu vào float; cấp phát ảnh từ file đã được sửa.
Chụp ảnh camera:
Đã sửa lỗi hỏng ảnh nghiêm trọng trên các truyền không phải JPEG (ngắt khung hình giờ chỉ được bật trong chế độ JPEG), hỗ trợ JPEG chế độ 3, và khóa kích thước dòng DMA và bộ đệm nhỏ trên STM32; đồng bộ VOSPI / Lepton đáng tin cậy hơn, đặc biệt trên N6.
Khác:
omv.board_id()trả về UID đúng trên RT1060;YoloV2không còn gặp sự cố khi được tạo mà không có anchor tường minh.
Hỗ trợ phần cứng và board¶
OpenMV N6 — STM32N6 với NPU Neural-ART, bộ đệm ba, đầu ra SPI LCD/TV, Soft-CSI, mô-đun
tof, và các mô hình ROMFS đi kèm.Arduino GIGA — Đầu ra màn hình MIPI DSI.
Cảm biến mới — PixArt PS5520; FLIR BOSON trên OpenMV H7 Plus; tự phát hiện GenX320.
OpenMV Pure Thermal — FLIR Lepton giờ là cảm biến camera (phụ) thông thường.
Alif AE3 — Hiệu chỉnh gamma ISP phần mềm, mô-đun
crc, và các sửa lỗi SPI.
Thay đổi API không tương thích¶
Các thay đổi API có thể nhìn thấy từ phía người dùng giữa v4.7.0 và v4.8.0. Phạm vi: các mô-đun C 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:
lớn — hầu hết các tập lệnh sử dụng nó cần chỉnh sửa.
nhỏ — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã sử dụng nó.
hành vi — API giống nhau, kết quả khác; kiểm tra lại các tập lệnh đã điều chỉnh.
công cụ — chỉ ảnh hưởng đến công cụ host / xây dựng từ nguồn.
Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó — lớn trước, sau đó nhỏ, hành vi, và công cụ. Nếu bạn chỉ muốn chuyển mã của mình, hãy chuyển đến danh sách kiểm tra di chuyển ở cuối để có danh sách tóm tắt. Mỗi hash commit liên kết đến diff của nó trên GitHub.
FLIR Lepton chuyển khỏi mô-đun fir (lớn)¶
FLIR Lepton giờ được điều khiển như cảm biến camera thông thường thay vì qua mô-đun fir. Điều khiển Lepton đã bị xóa khỏi fir: loại FIR_LEPTON và các phương thức radiometric(), register_vsync_cb(), register_frame_cb(), get_frame_available(), và trigger_ffc() không còn nữa. Chụp Lepton như bất kỳ camera nào khác (nó xuất hiện như cảm biến thứ cấp trên OpenMV Pure Thermal); ví dụ Pure Thermal đã được viết lại theo API mới. Các cảm biến fir không phải Lepton (Grid-EYE, MLX, AMG8833) không thay đổi.
Mô-đun buzzer bị xóa (nhỏ)¶
Mô-đun buzzer đã bị xóa khỏi các cổng STM32 và i.MX RT. Hãy sử dụng machine.PWM để điều khiển buzzer; một ví dụ buzzer Pure Thermal sử dụng PWM đã được thêm vào.
omv.disable_fb() bị xóa (nhỏ)¶
Hàm omv.disable_fb() đã bị xóa; phát trực tuyến bộ đệm khung hình giờ được kiểm soát qua API camera. Các tập lệnh máy tính để bàn RPC kế thừa phụ thuộc vào nó cũng đã bị xóa.
csi là mới — API của nó chưa được đóng băng (nhỏ)¶
Mô-đun csi được giới thiệu trong v4.8.0 và API của nó đã phát triển trong quá trình phát hành: csi.fb() đã bị xóa, và csi.CSI.snapshot() (image=...) giờ yêu cầu ảnh có thể thay đổi và vẽ/thu nhỏ khung hình đã chụp vào đó thay vì sao chép sâu thô. Người dùng sớm của mô-đun mới nên kiểm tra lại; API sensor kế thừa không bị ảnh hưởng.
Chế độ luồng image.ImageIO và close() (nhỏ)¶
image.ImageIO — đối số mode giờ chỉ chấp nhận chữ thường 'r' / 'w' (chữ hoa bị từ chối với thông báo lỗi cập nhật), và mở với 'w' luôn xóa/tạo lại file thay vì giữ nguyên luồng hiện có. ImageIO.close() giờ là idempotent (đóng luồng đã đóng không còn gây ra ngoại lệ) và trả về None thay vì đối tượng luồng.
Giá trị trả về BlazeFace / BlazePalm (nhỏ)¶
Bộ hậu xử lý BlazeFace và BlazePalm (mới trong phiên bản này) giờ trả về một danh sách hộp giới hạn đơn thay vì danh sách đầy đủ theo lớp — người gọi lập chỉ mục kết quả trực tiếp thay vì dùng [0].
Commit: 75e16b573
Hàm gọi lại bộ hậu xử lý ML nhận tensor thô (hành vi)¶
Hàm gọi lại hậu xử lý predict() của ml.Model giờ nhận tham chiếu tensor đầu ra thô (đã lượng tử hóa) thay vì ndarray float đã chuyển đổi trước — điều này tránh cạn kiệt bộ nhớ trên các mô hình lớn. Nếu không có hàm gọi lại, ndarray float vẫn được trả về. Các hàm gọi lại tùy chỉnh phải tự giải lượng tử tensor (các bộ hậu xử lý tích hợp đã làm điều này).
Commit: 84e6ee650
Đồng hồ camera tách rời khỏi trạng thái CSI (hành vi)¶
Đồng hồ cảm biến giờ độc lập với trạng thái CSI. set_clock / set_frequency chỉ cấu hình lại đồng hồ khi tần số yêu cầu khác biệt quá mức dung sai, và get_clk_frequency nhận tham số boolean để trả về tần số chính xác (thay vì danh nghĩa). Đồng hồ mặc định là 24 MHz trên OpenMV N6 và AE3, vì vậy không cần gọi set_clock() tường minh lúc khởi động. Các tập lệnh chuyển đổi đồng hồ cho việc chụp nhạy cảm về thời gian nên kiểm tra lại các giả định của mình.
Commits: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca
Giao thức debug USB và firmware targets (công cụ)¶
Không ảnh hưởng đến tập lệnh MicroPython. Các lệnh USBDBG lỗi thời (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) đã bị xóa và các lệnh không được hỗ trợ từ các IDE cũ hơn giờ được xả thay vì làm crash các board TinyUSB khi kết nối; firmware target STM32 UVC kế thừa đã bị xóa. Các công cụ host cũ nên cập nhật; xem lịch sử kho firmware để biết chi tiết.
Danh sách kiểm tra di chuyển¶
Để chuyển mã sạch sang v4.8.0, công việc thông thường là:
Nếu bạn đã sử dụng FLIR Lepton qua
fir, hãy chuyển sang chụp nó như cảm biến camera (thay đổi fir/Lepton).Thay thế bất kỳ sử dụng
buzzernào bằngmachine.PWM(việc xóa buzzer).Xóa các lệnh gọi
omv.disable_fb()(việc xóa omv.disable_fb()).Đối với
image.ImageIO: sử dụng chữ thường'r'/'w'và mong đợi'w'xóa file (thay đổi ImageIO).Đối với các hàm gọi lại hậu xử lý ML tùy chỉnh: tự giải lượng tử các tham chiếu tensor thô, hoặc dựa vào đường dẫn float mặc định (thay đổi hàm gọi lại).
Kiểm tra lại bất kỳ tập lệnh nào điều khiển đồng hồ cảm biến cho việc chụp nhạy cảm về thời gian (thay đổi đồng hồ).