v4.5.6

v4.5.6 adalah rilis machine learning besar. Modul C TensorFlow tf digantikan oleh paket ml baru yang bersifat agnostik terhadap mesin, didukung oleh TensorFlow Lite Micro (TFLM), konversi citra→tensor dipindahkan ke image.to_ndarray(), dan papan dual-core berpindah ke Open-AMP. Ada beberapa perubahan yang tidak kompatibel — baca di bawah sebelum memutakhirkan skrip ML.

Highlights

  • Paket ml baru — modul tf lama ditulis ulang menjadi paket ml yang agnostik terhadap mesin (ml.Model, ml.preprocessing, ml.utils, ml.apps); tf tetap sebagai alias.

  • Backend TFLMlibtf yang usang digantikan oleh TensorFlow Lite Micro berbasis upstream: ~20% inferensi lebih cepat dan pustaka lebih kecil.

  • Open-AMP dual-core — GIGA dan Portenta H7 kini menggunakan Open-AMP/RPMsg untuk komunikasi antar-inti M7/M4 (mekanisme CM4 lama telah dihapus).

  • Bluetooth onboard — firmware Bluetooth CYW43 diaktifkan pada Nicla Vision, Portenta H7, dan GIGA.

  • MicroPython 1.23.0, ulab 6.5.2 (dengan dukungan ndarray 4-D).

  • Breaking: API ML berubah secara substansial dan deteksi wajah Haar cascade dinonaktifkan secara default pada sebagian besar papan — lihat perubahan breaking.

New features

  • Paket mlml.Model dengan predict() (roi, callback, daftar multi-input), atribut shape/dtype/scale/zero-point per-tensor, ml.preprocessing.Normalization, ml.utils (NMS), dan ml.apps (MicroSpeech pendeteksi kata kunci berbasis Python murni dengan listen() dan streaming timeout=-1 non-pemblokiran, serta draw_predictions()).

  • Sistem model bawaan — model yang terdaftar dalam models/index.txt ditanamkan secara kondisional per papan (FOMO pada semua papan ML, model audio pada papan dengan mikrofon).

  • image.to_ndarray(dtype, buffer=...) — mengonversi citra menjadi ndarray ulab (opsional di tempat).

  • Image() dari array mentah — argumen kata kunci baru shape=, strides=, scale= membangun citra skala abu-abu/RGB565 dari daftar piksel mentah.

  • draw_circle() anti-aliased.

  • Modul ssl dibekukan ke dalam firmware pada GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060, dan Pico.

  • Audioaudio.init() mendapatkan kata kunci samples= (sampel PDM per saluran); gain_db kini diterapkan pada mikrofon DFSDM (misalnya Nicla Vision).

  • Protokol debug — perintah GET_STATE baru mengembalikan bendera run/text/JPEG, geometri bingkai, dan teks dalam satu paket, mengurangi bolak-balik host.

  • Contoh Open-AMP vuart untuk komunikasi antar-inti.

Other changes and improvements

  • MicroPython diperbarui ke 1.23.0; ulab ke 6.5.2 dengan dukungan ndarray 4-D.

  • Inferensi lebih cepat — backend ML menyimpan state/memori persisten di antara pemanggilan (~20% lebih cepat, mendukung model bergaya LSTM).

  • get_similarity() diimplementasikan ulang pada backend draw_image (dukungan format/operasi lebih luas).

  • morph() dan keluarga filter mean() berpindah ke penguraian argumen kata kunci; mask= kini menerima citra yang dapat diubah.

  • Tata letak memori dirombak — wilayah DMA disejajarkan pangkat-2, blok GC yang dapat diurutkan ulang, banyak heap; fragmentasi heap awal lebih sedikit pada papan RAM rendah; RT1060 mendapatkan heap GC tambahan.

  • WiFi (CYW43) kini dideinialisasi saat soft-reset; layar SPI-TV hanya menghapus wilayah framebuffer dari cache untuk pembaruan yang lebih mulus.

Bug fixes

Camera and sensors:

  • Memperbaiki invalidasi cache CPU yang tidak disengaja dalam jalur framebuffer/sensor pada STM32 dan i.MX RT, yang dapat merusak data citra.

  • Memperbaiki pembacaan I2C termal MLX90640/MLX90641 pada papan i.MX RT (transfer besar kini dipotong-potong).

Machine learning:

  • Memperbaiki penanganan load_to_fb ml.Model, ukuran bytearray input, pemeriksaan ndim ndarray, dan validasi format/shape citra Normalization.

Image / system:

  • Menambahkan konstanta draw-hint image.BLACK_BACKGROUND yang hilang dan pemeriksaan sanitas panjang buffer citra/tensor.

  • Memperbaiki pointer root GC FIR dan audio yang dapat membuat kolektor membebaskan buffer yang sedang digunakan.

  • Contoh Servo Shield kini menggunakan SoftI2C sehingga berfungsi pada papan OpenMV RT.

Hardware and board support

  • Arduino GIGA — dukungan sensor HM01B0 / HM0360; Open-AMP dual-core.

  • Bluetooth — firmware BT CYW43 pada Nicla Vision, Portenta H7, dan GIGA.

  • Portenta H7 — Open-AMP M7/M4 RPMsg.

  • OpenMV RT1060 — blok heap GC tambahan (lebih banyak memori Python).

Breaking API changes

Perubahan API yang terlihat pengguna antara v4.5.5 dan v4.5.6. Cakupan: modul C Python dalam modules/ dan pustaka Python dalam scripts/libraries/.

Setiap perubahan diberi tag dengan dampaknya:

  • major — sebagian besar skrip yang menggunakannya perlu diedit.

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

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

  • tooling — memengaruhi mekanisme dual-core / papan, bukan API Python.

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

Modul tf digantikan oleh paket ml (major)

Modul C TensorFlow tf ditulis ulang menjadi paket ml yang agnostik terhadap mesin (tf tetap sebagai alias yang kompatibel ke belakang, tetapi kode baru harus menggunakan ml). Fungsi tingkat modul tf.load, tf.load_builtin_model dan metode detect()/segment()/classification dihapus — bangun ml.Model dan panggil predict(). ml.Model(path) kini hanya mengembalikan model (bukan tuple (labels, model)); label adalah atribut model.labels. predict() kini mengembalikan ndarrayulab (bukan tuple float), mendukung model multi-input (lewatkan daftar), dan NMS dipindahkan ke ml.utils; normalisasi input dipindahkan ke ml.preprocessing.Normalization. ml.py lama kini menjadi ml.apps.

Commits: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837

image.unpack() dihapus — gunakan to_ndarray() (major)

image.unpack() yang berumur pendek dihapus; konversi citra ke tensor dengan image.to_ndarray(dtype, buffer=...) sebagai gantinya, dan terapkan normalisasi scale/mean/stdev dengan ml.preprocessing.Normalization alih-alih jalur penskalaan citra bawaan lama.

Commits: 9848eed12, de0d46fa6

Argumen scale array mentah Image() (minor)

Saat membuat Image dari array piksel mentah, argumen scale kini mengambil rentang (min, max) sebagai ganti (scale, add).

Commit: 7b79fb4c7

Haar cascade dinonaktifkan secara default pada sebagian besar papan (behavior)

Untuk membebaskan ruang flash, deteksi wajah Haar cascade (find_features() / image.HaarCascade()) kini dinonaktifkan secara default pada Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO, dan OpenMV Pure Thermal. Skrip yang menggunakan Haar cascade pada papan tersebut harus membangun ulang firmware dengan fitur yang diaktifkan.

Commit: 6ce27c910

Interupsi skrip dan penskalaan tensor (behavior)

Debugger USB kini menginterupsi skrip yang berjalan melalui fitur VM-abort MicroPython alih-alih lompatan PendSV paksa (lebih bersih, tetapi titik interupsi berbeda). Penskalaan input SCALE_S128_127 dikoreksi untuk memetakan 0–255 ke −128–127 tanpa gain yang salah — model yang mengandalkan penskalaan lama (yang salah) akan menghasilkan hasil yang berbeda.

Commits: e758a0f95, a4d97c572

Koprosesor CM4 digantikan oleh Open-AMP (tooling)

Mekanisme firmware koprosesor CM4 yang usang pada GIGA / Nicla Vision / Portenta H7 dihapus dan digantikan oleh Open-AMP/RPMsg. Kode dual-core harus berpindah ke model Open-AMP (contoh vuart disediakan).

Commits: 3cc57fea4, 93f2d4c41

Migration checklist

Untuk pemindahan bersih ke v4.5.6, pekerjaan umum adalah:

  1. Pindahkan kode ML ke ml: bangun ml.Model(path), panggil predict(), baca model.labels, harapkan output ndarray, dan pindahkan normalisasi ke ml.preprocessing.Normalization dan NMS ke ml.utils (perubahan paket ml).

  2. Ganti image.unpack() dengan image.to_ndarray() (penghapusan unpack).

  3. Perbarui argumen scale array mentah Image() apa pun ke rentang (min, max) (perubahan skala Image).

  4. Jika Anda menggunakan Haar cascade pada papan yang terpengaruh, bangun ulang dengan fitur yang diaktifkan (perubahan Haar cascade).

  5. Validasi ulang model yang bergantung pada SCALE_S128_127 (perubahan penskalaan).

  6. Pindahkan kode dual-core ke Open-AMP (perubahan CM4).