v4.7.0

v4.7.0 adalah rilis fitur utama. Sorotan utamanya: board OpenMV AE3 baru (Alif Ensemble, Cortex-M55 + NPU Ethos-U55) dengan model pemrograman dual-core openamp, filesystem ROMFS (/rom) hanya-baca dengan model dan cascade bawaan, dukungan ToF 8x8 VL53L8CX, post-processor YOLOv8 / YOLO-LC baru, dan MicroPython 1.25. Rilis ini juga mengubah cara memuat model bawaan dan cascade Haar, jadi bacalah perubahan yang merusak di bawah ini.

Sorotan

  • Board OpenMV AE3 — board Alif Ensemble (Cortex-M55 + NPU Ethos-U55), dengan port lengkap, bootloader, dan ROMFS.

  • Modul openamp dual-core — pindahkan pekerjaan ke core Alif kedua melalui RPMsg (dekorator @async_remote, Endpoint/ EndpointIO).

  • ROMFS — filesystem /rom hanya-baca dengan model TFLite dan cascade Haar bawaan, ditambah alat host baru tools/mkromfs.py.

  • Dukungan sensor time-of-flight multi-zona 8x8 VL53L8CX.

  • Post-processor ML baruyolo_v8_postprocess dan yolo_lc_postprocess.

  • MicroPython diperbarui ke 1.25.0.

  • Perubahan merusak: model bawaan dan cascade Haar kini dimuat dari /rom berdasarkan path (lihat perubahan ml.Model dan perubahan cascade Haar).

Fitur baru

  • OpenMV AE3 — board Alif Ensemble baru (core aplikasi Cortex-M55 + NPU Ethos-U55), dengan port, bootloader, konfigurasi board, LED RGB, dan dukungan ROMFS.

  • openamp — modul baru untuk model RPC dual-core Alif (Open-AMP / RPMsg): Endpoint, EndpointIO, new_service_callback, dan dekorator @async_remote untuk memindahkan fungsi yang di-marshal ke core kedua. Core HE/HP dilengkapi task runner _boot.py berbasis asyncio bawaan.

  • audio — port Alif menambahkan modul audio (mikrofon PDM) dengan API streaming berbasis callback (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) pada AE3.

  • ROMFS — filesystem /rom hanya-baca dengan aset bawaan (model TFLite, cascade Haar, ...) yang dikemas per board, alat host baru tools/mkromfs.py (tflite, tflite+vela, cascade Haar, teks, biner), dan helper scripts/libraries/romfs.py yang mengekspos ls_romfs().

  • Post-processing ML — kelas yolo_v8_postprocess (YOLOv8) dan yolo_lc_postprocess (varian tiny-YOLOv2 ringan dengan anchor default yang dioptimalkan untuk embedded) baru, masing-masing mengambil threshold, nms_threshold, dan nms_sigma.

  • Anti-flicker GenX320 — ioctl IOCTL_GENX320_SET_AFK baru untuk mengaktifkan dan mengonfigurasi filter anti-flicker sensor event (frekuensi flicker min/maks dalam Hz), dengan contoh genx320_grayscale_set_afk.py.

  • VL53L8CX — dukungan untuk sensor time-of-flight multi-zona 8x8 melalui modul tof (terdeteksi otomatis, 8x8 pada 15 Hz).

Perubahan dan perbaikan lainnya

  • MicroPython diperbarui ke 1.25.0 (port STM32 dan i.MX RT), dengan port Alif upstream ditambahkan dan driver BT-HCI lama dihapus dari port STM32 / i.MX RT.

  • GenX320 — urutan ISSD baru menggandakan clock piksel internal (24 → 48 MHz) untuk frame rate yang lebih tinggi.

  • STM32N6 / ST Edge AI — persiapan deployment model Neural-ART STM32N6 (tooling ST Edge AI dan dukungan ROMFS).

  • PAG7936 — bitrate CSI PHY kini ditetapkan, meningkatkan operasi sensor tersebut.

Perbaikan bug

Kamera dan sensor:

  • Memperbaiki IMU melalui I2C — board yang memasang IMU LSM6DSx pada I2C kini menginisialisasi dan membaca dengan benar (jalur I2C sebelumnya menggunakan jalur baca yang rusak dan konstanta yang salah).

  • Init FLIR Boson kini mencoba ulang hingga 10 kali untuk sensor yang lebih lama (< IDD 4.x) yang membutuhkan ~10 detik untuk booting, dan pengaturan pabrik dikembalikan saat reset agar pengaturan yang dimuat dari luar tidak merusak keluaran video.

  • Memperbaiki psee_ehc_activate_override pada GenX320 yang menulis waktu akumulasi yang salah (nol).

  • Pada board STM32 tanpa hardware FastMode+, permintaan mode cepat I2C kini dilindungi dengan benar alih-alih mengonfigurasi bus secara diam-diam.

Machine learning:

  • Memperbaiki pengumpulan kotak pembatas dan penanganan np.nonzero dalam post-processor YOLOv2 / YOLOv5, meningkatkan keandalan deteksi.

Dukungan hardware dan board

  • OpenMV AE3 — board Alif Ensemble baru (Cortex-M55 + NPU Ethos-U55).

  • VL53L8CX — sensor time-of-flight multi-zona 8x8; sensor ToF AE3 beralih dari VL53L5CX ke VL53L8CX.

  • STM32N6 — persiapan deployment model ST Edge AI (Neural-ART).

Perubahan API yang merusak

Perubahan API yang terlihat pengguna antara v4.6.20 dan v4.7.0. Cakupan: C-module Python dalam modules/ dan library Python dalam scripts/libraries/.

Setiap perubahan diberi tag dengan dampaknya:

  • major — sebagian besar skrip yang menggunakannya perlu diedit.

  • minor — API yang sempit; hanya memengaruhi skrip yang menggunakannya.

  • behavior — API sama, hasil berbeda; periksa kembali skrip yang sudah disetel.

Perubahan dikelompokkan berdasarkan dampak dalam urutan tersebut. Jika Anda hanya ingin memindahkan kode, langsung ke daftar periksa migrasi di akhir untuk daftar tugas yang ringkas. Setiap hash commit menautkan ke diff-nya di GitHub.

Model bawaan dimuat berdasarkan path, bukan nama (major)

ml.Model tidak lagi memuat model bawaan dari string nama biasa. Model kini dimuat dari filesystem / ROMFS berdasarkan path:

model = ml.Model("/rom/person_detect.tflite")   # was: ml.Model("person_detect")

Atribut model.labels sisi-C telah dihapus; label kini dimuat oleh wrapper Python ml.Model dari file sidecar <model>.txt (None jika tidak ada). Semua contoh bawaan dan ml/apps.py telah diperbarui ke path /rom/*.tflite.

Commits: 978fa436c, 3f55d956c, 416bc4613

Cascade Haar dimuat dari ROMFS (minor)

image.HaarCascade() kini memuat cascade bawaan melalui VFS / ROMFS. File cascade wajah-depan bawaan diganti nama dari haarcascade_frontalface_default.xml menjadi haarcascade_frontalface.xml, dan kegagalan memuat kini memunculkan RuntimeError ("Failed to load Haar cascade") alih-alih OSError.

Commit: 9de1220d8

Semantik tof.reset() / tof.deinit() (behavior)

Dalam modul tof, reset() sebelumnya menjadi alias untuk init() dan tidak ada deinit yang sesungguhnya. tof.reset() kini melakukan reset sensor yang sebenarnya dan tof.deinit() mematikan sensor dengan benar (dengan dukungan shutdown VL53L5CX). Kode yang mengandalkan reset() untuk menginisialisasi ulang sensor harus diperiksa kembali.

Commits: 20d6b53f8, c743cab6a

Batasan timing dan mode event GenX320 (behavior)

Urutan ISSD GenX320 yang baru mengubah basis waktu sensor: argumen frame-rate dan eksposur kini dinyatakan dalam satuan 1 MHz alih-alih diskalakan berdasarkan clock, dan blanking HSYNC disesuaikan secara dinamis terhadap frame rate yang diminta. Skrip yang mengkodekan keras nilai timing GenX320 harus disetel ulang. Pengambilan gambar mode event kini memunculkan error ketika transpose citra diaktifkan (tidak didukung dalam konfigurasi tersebut).

Commits: 660a783d6, 7a718c6af

Daftar periksa migrasi

Untuk migrasi bersih ke v4.7.0, pekerjaan yang umum dilakukan adalah:

  1. Ubah pemuatan model bawaan dari string nama ke path /rom/<name>.tflite, dan sediakan label melalui file sidecar <name>.txt (perubahan ml.Model).

  2. Perbarui haarcascade_frontalface_default.xml menjadi haarcascade_frontalface.xml dan tangkap RuntimeError (bukan OSError) saat kegagalan memuat cascade (perubahan cascade Haar).

  3. Hapus kode yang mengandalkan tof.reset() untuk menginisialisasi ulang sensor (perubahan tof).

  4. Setel ulang nilai frame-rate / eksposur GenX320 yang dikodekan keras ke satuan 1 MHz, dan jangan aktifkan transpose dalam mode event (perubahan GenX320).