v4.6.0

v4.6.0 là một phiên bản phát hành tính năng lớn. Nổi bật nhất: mô-đun camera được đổi tên từ sensor thành csi (với alias tương thích ngược sensor), một mô-đun ml.postprocessing mới, hỗ trợ cảm biến sự kiện Prophesee GenX320, PAG7936, và camera nhiệt FLIR Boson, một bootloader DFU mới dựa trên TinyUSB, tăng tốc Nema GPU, và MicroPython 1.24. Nó cũng thay đổi phạm vi alpha khi vẽ, vì vậy hãy đọc các thay đổi không tương thích bên dưới.

Điểm nổi bật

  • sensor nay cũng là csi — mô-đun camera được đổi tên thành csi; sensor vẫn giữ nguyên như một alias tương thích ngược (chưa cần thay đổi mã).

  • Mô-đun ml.postprocessing mớifomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • Cảm biến mới — camera sự kiện Prophesee GenX320, PAG7936, và camera nhiệt FLIR Boson 320/640.

  • Bootloader DFU mới — một bootloader DFU chuẩn dựa trên TinyUSB thay thế bootloader CDC kế thừa trên tất cả các board.

  • Nema GPU — đồ họa 2D/vector được tăng tốc trên STM32.

  • MicroPython đã được cập nhật lên 1.24.0.

  • Thay đổi không tương thích: phạm vi alpha khi vẽ đã thay đổi từ 0–256 thành 0–255 (xem thay đổi phạm vi alpha).

Tính năng mới

  • ml.postprocessing — một mô-đun mới để giải mã đầu ra mô hình: bộ giải mã FOMO (fomo_postprocess, find_blobs + NMS, threshold có thể cấu hình) và yolo_v2_postprocess / yolo_v5_postprocess (với threshold, anchors, nms_threshold, nms_sigma).

  • Hiển thị camera sự kiện — các phương thức mới Image.to_evt_dark() / Image.to_evt_light() và bảng màu PALETTE_EVT_DARK / PALETTE_EVT_LIGHT.

  • Hiển thị chiều sâu — phương thức mới Image.to_depth() và bảng màu PALETTE_DEPTH (các board có hỗ trợ ToF).

  • Kiểm tra cảm biến — ioctl mới IOCTL_GET_RGB_STATS trả về tuple thống kê kênh (R, Gb, Gr, B).

  • Cài đặt sẵn bias GenX320 — ioctl mới IOCTL_GENX320_SET_BIASES với các cài đặt sẵn GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — một hàm mới để kiểm tra xem giao diện gỡ lỗi USB có đang hoạt động không.

  • Nema GPU — tích hợp driver Cortex-M55 NemaGFX/NemaVG trên STM32, với tăng tốc GPU trực tiếp cho draw_image.

  • PAG7936 — đã thêm đầu ra color-bar, tự động phơi sáng / tự động độ khuếch đại, chế độ ngủ, và chế độ MIPI.

Các thay đổi và cải tiến khác

  • MicroPython đã được cập nhật lên 1.24.0; ulab được cập nhật lên 6.7.3 (thêm keepdims).

  • Script khởi động chung — STM32 / i.MX RT / RP2 nay dùng chung một _boot.py tự động tạo hệ thống tệp flash/SD với main.pyREADME.txt mặc định và giải phóng các biến toàn cục khởi động tạm thời.

  • Nền tảng STM32N6 — hỗ trợ cơ bản STM32N6, driver XSPI, driver MPU chung, và ký firmware/bootloader trên STM32.

  • VM Computed-goto — được bật trên STM32 và nRF để tăng tốc trình thông dịch.

Sửa lỗi

Camera và cảm biến:

  • Đã sửa lỗi tính toán PCLK/thời gian phơi sáng của OV5640 (hai lane MIPI, bảng chia đã được sửa).

  • Biến thể Bayer-CFA của MT9V0xx giờ chấp nhận RGB565/BAYER/GRAYSCALE và xuất dữ liệu Bayer thô đúng thay vì báo lỗi.

  • Đã bật hiệu chỉnh lens-shading của PAG7936 và sửa lỗi dịch chuyển ảnh HD; set_framerate() giờ bị giới hạn theo độ phân giải.

  • Đã sửa lỗi chụp ảnh nhiệt FLIR Lepton trên i.MX RT1060 (sửa CPOL/CPHA của VoSPI), và ảnh chụp từ Lepton giờ trả về mã lỗi cụ thể.

  • Đã sửa lỗi làm tròn tần số GenX320.

Xử lý ảnh:

  • Đã sửa lỗi hỏng bộ nhớ trong to_ndarray() trên ảnh thang xám.

  • Đã sửa lỗi dự đoán biên trong chuyển đổi Bayer→RGB/thang xám.

  • Đã sửa lỗi transpose của draw_image() trên các board không có SDRAM (bộ đệm phân đoạn).

  • Đã sửa lỗi xử lý đối số boolean trong Image.binary() và cờ load_to_fb của ml.Model.

Hệ thống:

  • Đã sửa cấu hình chân RX-only / TX-only của SPI trên STM32 và i.MX RT.

  • Đã chuyển các bộ đệm DMA Ethernet của Portenta H7 vào SRAM3 để Ethernet hoạt động.

  • Đã sửa lỗi mất ký tự trong đầu ra văn bản kênh gỡ lỗi qua USB; làm tròn kích thước cấp phát động ML lên để tránh bộ đệm mô hình nhỏ hơn mức cần thiết.

Phần cứng và hỗ trợ board

  • Cảm biến thị giác dựa trên sự kiện Prophesee GenX320 (STM32F7 + i.MX RT1060).

  • Cảm biến PAG7936 (với chế độ MIPI).

  • Camera nhiệt FLIR Boson 320/640 (driver IDD 4).

  • Tăng tốc Nema GPU trên STM32.

  • Nền tảng bootloader/XSPI STM32N6.

  • VL53L5CX — đã thêm hỗ trợ chân power-enable.

Các thay đổi API không tương thích

Các thay đổi API hiển thị với người dùng giữa v4.5.9 và v4.6.0. Phạm vi: C-modules 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 — hầu hết các script sử dụng nó cần chỉnh sửa.

  • minor — API hẹp; chỉ ảnh hưởng đến các script đã dùng nó.

  • behavior — API như cũ, kết quả khác; hãy kiểm tra lại các script đã tinh chỉnh.

  • tooling — chỉ ảnh hưởng đến việc nạp firmware / công cụ máy chủ / khả dụng board.

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 mã, 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. Lưu ý: việc đổi tên mô-đun sensorcsi trong phiên bản này không phải là thay đổi không tương thích — sensor vẫn hoạt động như một alias.

Phạm vi alpha khi vẽ giờ là 0–255 (major)

Đối số alpha của draw_image() và mọi lớp phủ nhận nó (FIR, ToF, display, TV, MJPEG, bảng alpha) giờ sử dụng phạm vi 0–255 thay vì 0–256. Các script truyền 256 để hoàn toàn không trong suốt, hoặc tính toán alpha theo 256, phải được chỉnh lại về 0–255.

Commit: 1f87b5bb6

Các hằng số ioctl của FLIR Lepton được đổi tên (minor)

Ba hằng số ioctl của Lepton đã được rút gọn: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. Các ví dụ đi kèm đã được cập nhật.

Commit: 12582d54d

Biến động API hậu xử lý ML (minor)

ml.postprocessing là mô-đun mới trong phiên bản này và API của nó đã thay đổi trong quá trình phát triển: từ khóa constructor score_threshold của yolo_v2_postprocess đã được đổi tên thành threshold, và kết quả hậu xử lý rỗng giờ trả về () thay vì []. Mô hình đi kèm yolov5_rgb_person đã được đổi tên thành yolo_v5_224_nano. ml.apps.MicroSpeech giờ chuyển tiếp các **kwargs tùy ý đến audio.init() thay vì gain_db=24 cố định.

Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST là bộ phát hiện góc mặc định (behavior)

find_keypoints() giờ sử dụng AGAST thay vì FAST làm bộ phát hiện góc mặc định trên tất cả các board. Tập hợp các điểm đặc trưng (và do đó là các kết quả khớp bộ mô tả) khác với các phiên bản trước — hãy kiểm tra lại các pipeline điểm đặc trưng đã tinh chỉnh. Phát trực tuyến bộ đệm khung hình của IDE cũng giờ bị giới hạn ở 20 Hz để giảm tải USB.

Commits: da6bf6910, bc4e39246

Bootloader, các board và tính năng đã bị xóa (tooling)

Bootloader CDC kế thừa đã được thay thế bằng bootloader DFU chuẩn mới dựa trên TinyUSB trên tất cả các board — cơ chế cập nhật firmware đã thay đổi; hãy cập nhật quy trình/công cụ nạp firmware của bạn tương ứng. Board OpenMV Pro, bản dựng Raspberry Pi Pico độc lập, và tính năng WiFi-debug (wifidbg) IDE từ xa đã bị xóa.

Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

Danh sách kiểm tra di chuyển

Để chuyển đổi sạch sang v4.6.0, công việc điển hình là:

  1. Điều chỉnh lại mọi giá trị alpha vẽ/lớp phủ từ phạm vi 0–256 sang 0–255 (thay đổi phạm vi alpha).

  2. Đổi tên các hằng số ioctl FLIR Lepton thành dạng rút gọn (đổi tên ioctl Lepton).

  3. Nếu bạn đã dùng các bộ hậu xử lý ML mới, hãy đổi score_threshold thành threshold, xử lý kết quả rỗng (), và cập nhật tên mô hình yolo_v5_224_nano (các thay đổi ML).

  4. Kiểm tra lại các pipeline dựa trên find_keypoints() cho thay đổi bộ phát hiện AGAST (thay đổi bộ phát hiện góc).

  5. Cập nhật quy trình nạp firmware của bạn cho bootloader DFU mới (các thay đổi bootloader/board).