v4.5.6¶
v4.5.6 büyük makine öğrenmesi sürümüdür. TensorFlow tf C modülü, TensorFlow Lite Micro (TFLM) tarafından desteklenen yeni, motordan bağımsız bir ml paketiyle değiştirildi; görüntü→tensör dönüşümü image.to_ndarray() içine taşındı ve çift çekirdekli kartlar Open-AMP’e geçti. Birkaç geriye dönük uyumsuz değişiklik var — ML betiklerini yükseltmeden önce aşağıdakileri okuyun.
Öne çıkanlar¶
Yeni
mlpaketi — eskitfmodülü, motordan bağımsız birmlpaketine (ml.Model,ml.preprocessing,ml.utils,ml.apps) yeniden yazıldı;tfbir takma ad olarak kalmaya devam ediyor.TFLM arka ucu — eskimiş
libtf, üst akıma dayalı TensorFlow Lite Micro ile değiştirildi: ~%20 daha hızlı çıkarım ve daha küçük kitaplıklar.Open-AMP çift çekirdek — GIGA ve Portenta H7 artık M7/M4 çekirdekler arası iletişim için Open-AMP/RPMsg kullanıyor (eski CM4 mekanizması kaldırıldı).
Yerleşik Bluetooth — CYW43 Bluetooth aygıt yazılımı (firmware) Nicla Vision, Portenta H7 ve GIGA üzerinde etkinleştirildi.
MicroPython 1.23.0, ulab 6.5.2 (4 boyutlu ndarray desteğiyle).
Geriye dönük uyumsuz: ML API’si önemli ölçüde değişti ve çoğu kartta Haar kademeleri varsayılan olarak devre dışı — geriye dönük uyumsuz değişikliklere bakın.
Yeni özellikler¶
mlpaketi —predict()(roi,callback, çok girişli liste) içerenml.Model, tensör başına shape/dtype/scale/zero-point öznitelikleri,ml.preprocessing.Normalization,ml.utils(NMS) veml.apps(listen()ve engellemeyentimeout=-1akışı içeren saf PythonMicroSpeechanahtar kelime tespit aracı iledraw_predictions()).Yerleşik model sistemi —
models/index.txtiçinde listelenen modeller karta göre koşullu olarak gömülür (tüm ML kartlarında FOMO, mikrofonlu kartlarda ses modelleri).image.to_ndarray(dtype, buffer=...)— bir görüntüyü ulab ndarray’e dönüştürün (isteğe bağlı olarak yerinde).Ham dizilerden
Image()— yenishape=,strides=,scale=anahtar kelime argümanları ham piksel listelerinden gri tonlama/RGB565 görüntüler oluşturur.Kenar yumuşatmalı
draw_circle().sslmodülü GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 ve Pico üzerinde aygıt yazılımına (firmware) donduruldu.Ses —
audio.init()birsamples=anahtar kelimesi kazandı (kanal başına PDM örnekleri);gain_dbartık DFSDM mikrofonlarda (ör. Nicla Vision) uygulanıyor.Hata ayıklama protokolü — yeni bir
GET_STATEkomutu run/text/JPEG bayraklarını, çerçeve geometrisini ve metni tek bir pakette döndürerek ana makine gidiş-dönüşlerini azaltır.Çekirdekler arası iletişim için Open-AMP vuart örneği.
Diğer değişiklikler ve iyileştirmeler¶
MicroPython 1.23.0’a güncellendi; ulab 4 boyutlu ndarray desteğiyle 6.5.2’ye.
Daha hızlı çıkarım — ML arka ucu çağrılar arasında kalıcı durum/bellek tutuyor (~%20 daha hızlı, LSTM tarzı modelleri destekler).
get_similarity()draw_imagearka ucu üzerinde yeniden uygulandı (daha geniş format/işlem desteği).morph()vemean()filtre ailesi anahtar kelime argümanı ayrıştırmaya taşındı;mask=artık değiştirilebilir bir görüntü kabul ediyor.Bellek düzeni yeniden tasarlandı — DMA bölgeleri 2’nin kuvveti hizalı, yeniden sıralanabilir GC blokları, birden çok yığın; düşük RAM’li kartlarda daha az erken yığın parçalanması; RT1060 ekstra GC yığını kazanıyor.
WiFi (CYW43) artık yazılım sıfırlamasında başlatması geri alınıyor; SPI-TV ekranı daha akıcı güncellemeler için önbellekten yalnızca çerçeve arabelleği (frame buffer) bölgesini boşaltıyor.
Hata düzeltmeleri¶
Kamera ve sensörler:
STM32 ve i.MX RT üzerinde çerçeve arabelleği (frame buffer)/sensör yolundaki, görüntü verisini bozabilecek kazara CPU önbellek geçersiz kılma sorunu düzeltildi.
i.MX RT kartlarında MLX90640/MLX90641 termal I2C okumaları düzeltildi (büyük aktarımlar artık parçalara bölünüyor).
Makine öğrenmesi:
ml.Modelload_to_fbişleme, girişbytearrayboyutlandırma, ndarrayndimdenetimleri veNormalizationgörüntü formatı/şekli doğrulaması düzeltildi.
Görüntü / sistem:
Eksik olan
image.BLACK_BACKGROUNDçizim ipucu sabiti ve bir görüntü/tensör arabellek uzunluğu tutarlılık denetimi eklendi.Toplayıcının kullanımdaki arabellekleri serbest bırakmasına izin verebilecek FIR ve ses GC kök işaretçileri düzeltildi.
Servo Shield örneği artık
SoftI2Ckullanıyor, böylece OpenMV RT kartlarında çalışıyor.
Donanım ve kart desteği¶
Arduino GIGA — HM01B0 / HM0360 sensör desteği; Open-AMP çift çekirdek.
Bluetooth — Nicla Vision, Portenta H7 ve GIGA üzerinde CYW43 BT aygıt yazılımı (firmware).
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — ek GC yığın blokları (daha fazla Python belleği).
Geriye dönük uyumsuz API değişiklikleri¶
v4.5.5 ile v4.5.6 arasındaki kullanıcıya görünür API kırılmaları. Kapsam: modules/ içindeki Python C modülleri ve scripts/libraries/ içindeki Python kitaplıkları.
Her değişiklik etkisiyle etiketlenmiştir:
major — onu kullanan çoğu betiğin düzenlenmesi gerekir.
minor — dar kapsamlı API; yalnızca onu kullanan betikleri etkiler.
behavior — aynı API, farklı sonuçlar; ayarlanmış betikleri yeniden kontrol edin.
tooling — Python API’sini değil, çift çekirdek / kart mekanizmalarını etkiler.
Değişiklikler bu sırayla etkiye göre gruplandırılmıştır. Sadece kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesine atlayın. Her commit özeti GitHub’daki diff’ine bağlanır.
tf modülü ml paketiyle değiştirildi (major)¶
TensorFlow tf C modülü, motordan bağımsız bir ml paketine yeniden yazıldı (tf geriye dönük uyumlu bir takma ad olarak tutuluyor, ancak yeni kod ml kullanmalı). Modül düzeyindeki tf.load, tf.load_builtin_model işlevleri ve detect()/segment()/sınıflandırma yöntemleri kaldırıldı — bir ml.Model oluşturun ve predict() çağırın. ml.Model(path) artık yalnızca modeli döndürüyor ((labels, model) demeti yok); etiketler bir model.labels özniteliğidir. predict() artık (float demetleri yerine) ulab ndarraydöndürüyor, çok girişli modelleri destekliyor (bir liste geçirin) ve NMS ml.utils içine taşındı; giriş normalleştirme ml.preprocessing.Normalization içine taşındı. Eski ml.py artık ml.apps.
Commit’ler: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
image.unpack() kaldırıldı — to_ndarray() kullanın (major)¶
Kısa ömürlü image.unpack() kaldırıldı; bunun yerine bir görüntüyü image.to_ndarray(dtype, buffer=...) ile tensöre dönüştürün ve eski yerleşik görüntü ölçekleme yolu yerine ml.preprocessing.Normalization ile ölçek/ortalama/standart sapma normalleştirmesi uygulayın.
Image() ham dizi scale argümanı (minor)¶
Ham bir piksel dizisinden bir Image oluştururken, scale argümanı artık (scale, add) yerine bir (min, max) aralığı alıyor.
Commit: 7b79fb4c7
Çoğu kartta Haar kademeleri varsayılan olarak devre dışı (behavior)¶
Flash bellek alanı boşaltmak için, Haar kademesi yüz tespiti (find_features() / image.HaarCascade()) artık Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO ve OpenMV Pure Thermal üzerinde varsayılan olarak devre dışı. Bu kartlarda Haar kademeleri kullanan betiklerin, özellik etkinleştirilmiş olarak aygıt yazılımını (firmware) yeniden derlemesi gerekir.
Commit: 6ce27c910
Betik kesintisi ve tensör ölçekleme (behavior)¶
USB hata ayıklayıcı artık çalışan bir betiği zorunlu bir PendSV atlaması yerine MicroPython’un VM-abort özelliği aracılığıyla kesiyor (daha temiz, ancak kesinti noktası farklı). SCALE_S128_127 giriş ölçeklemesi, hatalı bir kazanç olmadan 0–255’i −128–127’ye eşleyecek şekilde düzeltildi — eski (yanlış) ölçeklemeye dayanan modeller farklı sonuçlar üretecek.
CM4 yardımcı işlemci Open-AMP ile değiştirildi (tooling)¶
GIGA / Nicla Vision / Portenta H7 üzerindeki kullanımdan kaldırılmış CM4 yardımcı işlemci aygıt yazılımı (firmware) mekanizması kaldırıldı ve Open-AMP/RPMsg ile değiştirildi. Çift çekirdek kodunun Open-AMP modeline taşınması gerekir (bir vuart örneği sağlanmıştır).
Taşıma kontrol listesi¶
v4.5.6’ya temiz bir taşıma için tipik iş şudur:
ML kodunu
mlpaketine taşıyın:ml.Model(path)oluşturun,predict()çağırın,model.labelsokuyun,ndarrayçıktıları bekleyin ve normalleştirmeyiml.preprocessing.Normalizationiçine, NMS’yiml.utilsiçine taşıyın (ml paketi değişikliği).image.unpack()öğesiniimage.to_ndarray()ile değiştirin (unpack kaldırılması).Herhangi bir
Image()ham diziscaleargümanını bir(min, max)aralığına güncelleyin (Image scale değişikliği).Etkilenen bir kartta Haar kademeleri kullanıyorsanız, özellik etkinleştirilmiş olarak yeniden derleyin (Haar kademesi değişikliği).
SCALE_S128_127öğesine bağlı olan modelleri yeniden doğrulayın (ölçekleme değişikliği).Çift çekirdek kodunu Open-AMP’e taşıyın (CM4 değişikliği).