v4.7.0¶
v4.7.0 là một phiên bản phát hành tính năng lớn. Nổi bật nhất: board OpenMV AE3 mới (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) với mô hình lập trình đa lõi openamp, hệ thống tệp ROMFS chỉ đọc (/rom) với các mô hình và cascade tích hợp, hỗ trợ thời gian bay VL53L8CX 8x8, các bộ hậu xử lý YOLOv8 / YOLO-LC mới, và MicroPython 1.25. Nó cũng thay đổi cách tải các mô hình tích hợp và Haar cascade, 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¶
Board OpenMV AE3 — board Alif Ensemble (Cortex-M55 + Ethos-U55 NPU), với một port đầy đủ, bootloader, và ROMFS.
Mô-đun
openampđa lõi — chuyển tải công việc sang lõi Alif thứ hai qua RPMsg (decorator@async_remote,Endpoint/EndpointIO).ROMFS — hệ thống tệp chỉ đọc
/romvới các mô hình TFLite và Haar cascade tích hợp, cùng một công cụ xây dựng máy chủtools/mkromfs.pymới.Hỗ trợ cảm biến thời gian bay đa vùng 8x8 VL53L8CX.
Bộ hậu xử lý ML mới —
yolo_v8_postprocessvàyolo_lc_postprocess.MicroPython đã được cập nhật lên 1.25.0.
Thay đổi không tương thích: các mô hình tích hợp và Haar cascade giờ tải từ
/romtheo đường dẫn (xem thay đổi ml.Model và thay đổi Haar cascade).
Tính năng mới¶
OpenMV AE3 — board Alif Ensemble mới (lõi ứng dụng Cortex-M55 + Ethos-U55 NPU), với port, bootloader, cấu hình board, đèn LED RGB, và hỗ trợ ROMFS.
openamp— một mô-đun mới cho mô hình RPC đa lõi Alif (Open-AMP / RPMsg):Endpoint,EndpointIO,new_service_callback, và decorator@async_remoteđể chuyển tải các hàm đã được đóng gói sang lõi thứ hai. Các lõi HE/HP đi kèm một bộ chạy task_boot.pymặc định dựa trên asyncio.audio— port Alif thêm mô-đun audio (microphone PDM) với API phát trực tuyến dựa trên hàm gọi lại (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) trên AE3.ROMFS — hệ thống tệp chỉ đọc
/romvới các tài nguyên tích hợp (mô hình TFLite, Haar cascade, ...) được đóng gói theo từng board, một công cụ máy chủtools/mkromfs.pymới (tflite, tflite+vela, Haar cascade, text, binary), và một helperscripts/libraries/romfs.pycung cấpls_romfs().Hậu xử lý ML — các lớp mới
yolo_v8_postprocess(YOLOv8) vàyolo_lc_postprocess(biến thể tiny-YOLOv2 nhẹ với các anchor mặc định được tối ưu cho thiết bị nhúng), mỗi lớp nhậnthreshold,nms_threshold, vànms_sigma.Chống nhấp nháy GenX320 — ioctl mới
IOCTL_GENX320_SET_AFKđể bật và cấu hình bộ lọc chống nhấp nháy của cảm biến sự kiện (tần số nhấp nháy min/max tính bằng Hz), kèm ví dụgenx320_grayscale_set_afk.py.VL53L8CX — hỗ trợ cảm biến thời gian bay đa vùng 8x8 thông qua mô-đun
tof(tự động phát hiện, 8x8 ở 15 Hz).
Các thay đổi và cải tiến khác¶
MicroPython đã được cập nhật lên 1.25.0 (port STM32 và i.MX RT), với port Alif thượng nguồn được thêm vào và các driver BT-HCI kế thừa bị loại bỏ khỏi port STM32 / i.MX RT.
GenX320 — một chuỗi ISSD mới nhân đôi xung nhịp pixel nội bộ (24 → 48 MHz) để đạt tốc độ khung hình cao hơn.
STM32N6 / ST Edge AI — nền tảng triển khai mô hình Neural-ART trên STM32N6 (công cụ ST Edge AI và hỗ trợ ROMFS).
PAG7936 — tốc độ bit CSI PHY giờ được thiết lập, cải thiện hoạt động của cảm biến đó.
Sửa lỗi¶
Camera và cảm biến:
Đã sửa lỗi IMU qua I2C — các board nối dây IMU LSM6DSx trên I2C giờ khởi tạo và đọc đúng (đường dẫn I2C trước đây sử dụng đường đọc lỗi và các hằng số sai).
Quá trình khởi tạo FLIR Boson giờ thử lại tối đa 10 lần đối với các cảm biến cũ hơn (< IDD 4.x) cần khoảng 10 giây để khởi động, và các cài đặt mặc định nhà máy được khôi phục khi reset để các cài đặt được tải từ bên ngoài không làm hỏng đầu ra video.
Đã sửa lỗi
psee_ehc_activate_overridecủa GenX320 ghi thời gian tích lũy sai (bằng không).Trên các board STM32 không có phần cứng FastMode+, yêu cầu chế độ I2C nhanh giờ được bảo vệ đúng cách thay vì cấu hình bus một cách âm thầm.
Học máy:
Đã sửa lỗi thu thập hộp giới hạn và xử lý
np.nonzerotrong các bộ hậu xử lý YOLOv2 / YOLOv5, cải thiện độ tin cậy phát hiện.
Phần cứng và hỗ trợ board¶
OpenMV AE3 — board Alif Ensemble mới (Cortex-M55 + Ethos-U55 NPU).
VL53L8CX — cảm biến thời gian bay đa vùng 8x8; cảm biến ToF của AE3 đã được chuyển từ VL53L5CX sang VL53L8CX.
STM32N6 — nền tảng triển khai mô hình ST Edge AI (Neural-ART).
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.6.20 và v4.7.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.
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 để có danh sách việc cần làm súc tích. Mỗi hash commit liên kết đến diff của nó trên GitHub.
Các mô hình tích hợp tải theo đường dẫn, không phải tên (major)¶
ml.Model không còn tải mô hình tích hợp từ chuỗi tên đơn thuần. Các mô hình giờ được tải từ hệ thống tệp / ROMFS theo đường dẫn:
model = ml.Model("/rom/person_detect.tflite") # was: ml.Model("person_detect")
Thuộc tính model.labels phía C đã bị xóa; nhãn giờ được tải bởi wrapper Python ml.Model từ tệp <model>.txt đi kèm (None nếu không có). Tất cả các ví dụ đi kèm và ml/apps.py đã được cập nhật sang đường dẫn /rom/*.tflite.
Haar cascade tải từ ROMFS (minor)¶
image.HaarCascade() giờ tải các cascade tích hợp thông qua VFS / ROMFS. Tệp cascade mặt trước mặc định đã được đổi tên từ haarcascade_frontalface_default.xml thành haarcascade_frontalface.xml, và lỗi tải giờ ném RuntimeError ("Failed to load Haar cascade") thay vì OSError.
Commit: 9de1220d8
Ngữ nghĩa của tof.reset() / tof.deinit() (behavior)¶
Trong mô-đun tof, reset() trước đây là alias của init() và không có deinit thực sự. tof.reset() giờ thực hiện reset cảm biến thực sự và tof.deinit() tắt cảm biến đúng cách (với hỗ trợ shutdown VL53L5CX). Mã dựa trên reset() để tái khởi tạo cảm biến cần được kiểm tra lại.
Ràng buộc về timing và chế độ sự kiện GenX320 (behavior)¶
Chuỗi ISSD mới của GenX320 thay đổi cơ sở thời gian của cảm biến: các đối số tốc độ khung hình và thời gian phơi sáng giờ được biểu thị theo đơn vị 1 MHz thay vì được chia tỷ lệ theo xung nhịp, và blanking HSYNC được điều chỉnh động theo tốc độ khung hình được yêu cầu. Các script đã mã cứng các giá trị timing GenX320 phải điều chỉnh lại. Chụp ảnh chế độ sự kiện giờ báo lỗi khi transpose ảnh được bật (không được hỗ trợ trong cấu hình đó).
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v4.7.0, công việc điển hình là:
Thay đổi việc tải mô hình tích hợp từ chuỗi tên thành đường dẫn
/rom/<name>.tflite, và cung cấp nhãn qua tệp<name>.txtđi kèm (thay đổi ml.Model).Cập nhật
haarcascade_frontalface_default.xmlthànhhaarcascade_frontalface.xmlvà bắtRuntimeError(không phảiOSError) khi tải cascade thất bại (thay đổi Haar cascade).Xóa mã phụ thuộc vào
tof.reset()để tái khởi tạo cảm biến (thay đổi tof).Điều chỉnh lại mọi giá trị tốc độ khung hình / thời gian phơi sáng GenX320 được mã cứng sang đơn vị 1 MHz, và không bật transpose trong chế độ sự kiện (thay đổi GenX320).