v4.7.0

v4.7.0 büyük bir özellik sürümüdür. Öne çıkanlar: çift çekirdekli bir openamp programlama modeline sahip yeni OpenMV AE3 (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) kartı, paketlenmiş modeller ve cascade’ler içeren salt okunur bir ROMFS (/rom) dosya sistemi, VL53L8CX 8x8 time-of-flight desteği, yeni YOLOv8 / YOLO-LC son işleyicileri ve MicroPython 1.25. Ayrıca yerleşik modellerin ve Haar cascade’lerinin nasıl yüklendiğini değiştirir, bu nedenle aşağıdaki uyumluluğu bozan değişiklikleri okuyun.

Öne çıkanlar

  • OpenMV AE3 kartı — tam bir port, önyükleyici (bootloader) ve ROMFS ile Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) kartı.

  • Çift çekirdekli openamp modülü — RPMsg üzerinden ikinci Alif çekirdeğine iş yükü devretme (@async_remote dekoratörü, Endpoint/ EndpointIO).

  • ROMFS — yerleşik TFLite modelleri ve Haar cascade’leri içeren salt okunur bir /rom dosya sistemi, ayrıca yeni bir tools/mkromfs.py ana bilgisayar oluşturucusu.

  • VL53L8CX 8x8 çok bölgeli time-of-flight sensörü desteği.

  • Yeni ML son işleyicileriyolo_v8_postprocess ve yolo_lc_postprocess.

  • MicroPython 1.25.0 sürümüne güncellendi.

  • Uyumluluğu bozan: yerleşik modeller ve Haar cascade’leri artık /rom konumundan yola göre yüklenir (bkz. ml.Model değişikliği ve Haar cascade değişikliği).

Yeni özellikler

  • OpenMV AE3 — port, önyükleyici (bootloader), kart yapılandırması, RGB LED ve ROMFS desteği ile yeni Alif Ensemble kartı (Cortex-M55 uygulama çekirdeği + Ethos-U55 NPU).

  • openamp — Alif çift çekirdek (Open-AMP / RPMsg) RPC modeli için yeni bir modül: Endpoint, EndpointIO, new_service_callback ve marshalled fonksiyonları ikinci çekirdeğe devretmek için @async_remote dekoratörü. HE/HP çekirdekleri varsayılan bir asyncio tabanlı _boot.py görev çalıştırıcısı ile gelir.

  • audio — Alif portu, AE3 üzerinde geri çağırma (callback) tabanlı bir akış API’si (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) ile audio modülünü (PDM mikrofonu) ekler.

  • ROMFS — kart başına paketlenmiş yerleşik varlıklara (TFLite modelleri, Haar cascade’leri, …) sahip salt okunur bir /rom dosya sistemi, yeni bir tools/mkromfs.py ana bilgisayar aracı (tflite, tflite+vela, Haar cascade, metin, ikili) ve ls_romfs() öğesini sunan bir scripts/libraries/romfs.py yardımcısı.

  • ML son işleme — yeni yolo_v8_postprocess (YOLOv8) ve yolo_lc_postprocess (gömülü için optimize edilmiş varsayılan anchor’lara sahip hafif tiny-YOLOv2 varyantı) sınıfları, her biri threshold, nms_threshold ve nms_sigma alır.

  • GenX320 titreşim önleme — olay sensörünün titreşim önleme filtresini (Hz cinsinden min/maks titreşim frekansı) etkinleştirmek ve yapılandırmak için yeni bir IOCTL_GENX320_SET_AFK ioctl’i, bir genx320_grayscale_set_afk.py örneği ile.

  • VL53L8CXtof modülü aracılığıyla 8x8 çok bölgeli time-of-flight sensörü desteği (otomatik algılanır, 15 Hz’de 8x8).

Diğer değişiklikler ve iyileştirmeler

  • MicroPython 1.25.0 sürümüne güncellendi (STM32 ve i.MX RT portları), yukarı akış Alif portu eklendi ve eski BT-HCI sürücüleri STM32 / i.MX RT portlarından çıkarıldı.

  • GenX320 — yeni bir ISSD dizisi, daha yüksek kare hızları için dahili piksel saatini iki katına çıkarır (24 → 48 MHz).

  • STM32N6 / ST Edge AI — STM32N6 Neural-ART model dağıtımı için altyapı (ST Edge AI araçları ve ROMFS desteği).

  • PAG7936 — CSI PHY bit hızı artık ayarlandı, bu da o sensörün çalışmasını iyileştiriyor.

Hata düzeltmeleri

Kamera ve sensörler:

  • I2C üzerinden IMU düzeltildi — LSM6DSx IMU’yu I2C üzerinde bağlayan kartlar artık doğru şekilde başlatılıyor ve okuyor (I2C yolu daha önce bozuk bir okuma yolu ve yanlış sabitler kullanıyordu).

  • FLIR Boson başlatma artık önyüklenmesi ~10 sn süren eski (< IDD 4.x) sensörler için 10 defaya kadar yeniden deniyor ve sıfırlamada fabrika varsayılan ayarları geri yükleniyor, böylece dışarıdan yüklenen ayarlar video çıkışını bozamıyor.

  • GenX320 psee_ehc_activate_override öğesinin yanlış (sıfır) birikim süresi yazması düzeltildi.

  • FastMode+ donanımı olmayan STM32 kartlarında, I2C hızlı modu istemek artık sessizce yanlış yapılandırmak yerine düzgün şekilde korunuyor.

Makine öğrenmesi:

  • YOLOv2 / YOLOv5 son işleyicilerinde sınırlayıcı kutu toplama ve np.nonzero işleme düzeltildi, bu da tespit güvenilirliğini artırdı.

Donanım ve kart desteği

  • OpenMV AE3 — yeni Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) kartı.

  • VL53L8CX — 8x8 çok bölgeli time-of-flight sensörü; AE3’ün ToF sensörü VL53L5CX’ten VL53L8CX’e geçirildi.

  • STM32N6 — ST Edge AI (Neural-ART) model dağıtımı altyapısı.

Uyumluluğu bozan API değişiklikleri

v4.6.20 ile v4.7.0 arasındaki kullanıcı tarafından görülebilen API kırılmaları. Kapsam: modules/ içindeki Python C-modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.

Her değişiklik etkisiyle etiketlenmiştir:

  • major — onu kullanan çoğu betiğin düzenlenmesi gerekir.

  • minor — dar API; yalnızca onu kullanan betikleri etkiler.

  • behavior — aynı API, farklı sonuçlar; ayarlanmış betikleri yeniden kontrol edin.

Değişiklikler bu sırayla etkiye göre gruplandırılmıştır. Yalnızca kodunuzu taşımak istiyorsanız, sıkıştırılmış bir yapılacaklar listesi için sondaki taşıma kontrol listesi bölümüne atlayın. Her commit hash’i GitHub’daki diff’ine bağlanır.

Yerleşik modeller ad ile değil, yola göre yüklenir (major)

ml.Model artık çıplak bir ad dizesinden yerleşik bir model yüklemez. Modeller artık dosya sisteminden / ROMFS’ten yola göre yüklenir:

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

C tarafındaki model.labels özniteliği kaldırıldı; etiketler artık Python ml.Model sarmalayıcısı tarafından bir yan dosya <model>.txt dosyasından yüklenir (yoksa None). Tüm birlikte gelen örnekler ve ml/apps.py /rom/*.tflite yollarına güncellendi.

Commits: 978fa436c, 3f55d956c, 416bc4613

Haar cascade’leri ROMFS’ten yüklenir (minor)

image.HaarCascade() artık yerleşik cascade’leri VFS / ROMFS aracılığıyla yükler. Varsayılan ön yüz cascade dosyası haarcascade_frontalface_default.xml adından haarcascade_frontalface.xml adına yeniden adlandırıldı ve yükleme hatası artık OSError yerine RuntimeError (“Failed to load Haar cascade”) oluşturuyor.

Commit: 9de1220d8

tof.reset() / tof.deinit() semantiği (behavior)

tof modülünde, reset() daha önce init() için bir takma addı ve gerçek bir deinit yoktu. tof.reset() artık gerçek bir sensör sıfırlaması gerçekleştiriyor ve tof.deinit() sensörü düzgün şekilde kapatıyor (VL53L5CX kapatma desteği ile). reset() öğesinin sensörü yeniden başlatmasına dayanan kod yeniden kontrol edilmelidir.

Commits: 20d6b53f8, c743cab6a

GenX320 zamanlama ve olay modu kısıtlamaları (behavior)

Yeni GenX320 ISSD dizisi sensör zaman tabanını değiştirir: kare hızı ve pozlama argümanları artık saat ölçeklemeli olmak yerine 1 MHz birimlerinde ifade edilir ve HSYNC boşluğu istenen kare hızına dinamik olarak ayarlanır. GenX320 zamanlama değerlerini sabit kodlayan betikler yeniden ayarlanmalıdır. Olay modu yakalama artık görüntü transpose etkinleştirildiğinde bir hata oluşturuyor (bu yapılandırmada desteklenmez).

Commits: 660a783d6, 7a718c6af

Taşıma kontrol listesi

v4.7.0’a temiz bir taşıma için tipik iş şudur:

  1. Yerleşik model yüklemesini bir ad dizesinden bir /rom/<name>.tflite yoluna değiştirin ve etiketleri bir yan dosya <name>.txt dosyası aracılığıyla sağlayın (ml.Model değişikliği).

  2. haarcascade_frontalface_default.xml öğesini haarcascade_frontalface.xml olarak güncelleyin ve cascade yükleme hatasında OSError değil RuntimeError yakalayın (Haar cascade değişikliği).

  3. tof.reset() öğesinin sensörü yeniden başlatmasına dayanan kodu kaldırın (tof değişikliği).

  4. Tüm sabit kodlanmış GenX320 kare hızı / pozlama değerlerini 1 MHz birimlerine yeniden ayarlayın ve olay modunda transpose’u etkinleştirmeyin (GenX320 değişikliği).