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
openampmodülü — RPMsg üzerinden ikinci Alif çekirdeğine iş yükü devretme (@async_remotedekoratörü,Endpoint/EndpointIO).ROMFS — yerleşik TFLite modelleri ve Haar cascade’leri içeren salt okunur bir
/romdosya sistemi, ayrıca yeni birtools/mkromfs.pyana bilgisayar oluşturucusu.VL53L8CX 8x8 çok bölgeli time-of-flight sensörü desteği.
Yeni ML son işleyicileri —
yolo_v8_postprocessveyolo_lc_postprocess.MicroPython 1.25.0 sürümüne güncellendi.
Uyumluluğu bozan: yerleşik modeller ve Haar cascade’leri artık
/romkonumundan 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_callbackve marshalled fonksiyonları ikinci çekirdeğe devretmek için@async_remotedekoratörü. HE/HP çekirdekleri varsayılan bir asyncio tabanlı_boot.pygö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
/romdosya sistemi, yeni birtools/mkromfs.pyana bilgisayar aracı (tflite, tflite+vela, Haar cascade, metin, ikili) vels_romfs()öğesini sunan birscripts/libraries/romfs.pyyardımcısı.ML son işleme — yeni
yolo_v8_postprocess(YOLOv8) veyolo_lc_postprocess(gömülü için optimize edilmiş varsayılan anchor’lara sahip hafif tiny-YOLOv2 varyantı) sınıfları, her birithreshold,nms_thresholdvenms_sigmaalı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_AFKioctl’i, birgenx320_grayscale_set_afk.pyörneği ile.VL53L8CX —
tofmodü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.nonzeroiş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.
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.
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).
Taşıma kontrol listesi¶
v4.7.0’a temiz bir taşıma için tipik iş şudur:
Yerleşik model yüklemesini bir ad dizesinden bir
/rom/<name>.tfliteyoluna değiştirin ve etiketleri bir yan dosya<name>.txtdosyası aracılığıyla sağlayın (ml.Model değişikliği).haarcascade_frontalface_default.xmlöğesinihaarcascade_frontalface.xmlolarak güncelleyin ve cascade yükleme hatasındaOSErrordeğilRuntimeErroryakalayın (Haar cascade değişikliği).tof.reset()öğesinin sensörü yeniden başlatmasına dayanan kodu kaldırın (tof değişikliği).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).