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 ml paketi — eski tf modülü, motordan bağımsız bir ml paketine (ml.Model, ml.preprocessing, ml.utils, ml.apps) yeniden yazıldı; tf bir 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

  • ml paketipredict() (roi, callback, çok girişli liste) içeren ml.Model, tensör başına shape/dtype/scale/zero-point öznitelikleri, ml.preprocessing.Normalization, ml.utils (NMS) ve ml.apps (listen() ve engellemeyen timeout=-1 akışı içeren saf Python MicroSpeech anahtar kelime tespit aracı ile draw_predictions()).

  • Yerleşik model sistemimodels/index.txt iç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() — yeni shape=, strides=, scale= anahtar kelime argümanları ham piksel listelerinden gri tonlama/RGB565 görüntüler oluşturur.

  • Kenar yumuşatmalı draw_circle().

  • ssl modü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.

  • Sesaudio.init() bir samples= anahtar kelimesi kazandı (kanal başına PDM örnekleri); gain_db artık DFSDM mikrofonlarda (ör. Nicla Vision) uygulanıyor.

  • Hata ayıklama protokolü — yeni bir GET_STATE komutu 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_image arka ucu üzerinde yeniden uygulandı (daha geniş format/işlem desteği).

  • morph() ve mean() 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.Model load_to_fb işleme, giriş bytearray boyutlandırma, ndarray ndim denetimleri ve Normalization gö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 SoftI2C kullanı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.

Commit’ler: 9848eed12, de0d46fa6

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.

Commit’ler: e758a0f95, a4d97c572

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).

Commit’ler: 3cc57fea4, 93f2d4c41

Taşıma kontrol listesi

v4.5.6’ya temiz bir taşıma için tipik iş şudur:

  1. ML kodunu ml paketine taşıyın: ml.Model(path) oluşturun, predict() çağırın, model.labels okuyun, ndarray çıktıları bekleyin ve normalleştirmeyi ml.preprocessing.Normalization içine, NMS’yi ml.utils içine taşıyın (ml paketi değişikliği).

  2. image.unpack() öğesini image.to_ndarray() ile değiştirin (unpack kaldırılması).

  3. Herhangi bir Image() ham dizi scale argümanını bir (min, max) aralığına güncelleyin (Image scale değişikliği).

  4. Etkilenen bir kartta Haar kademeleri kullanıyorsanız, özellik etkinleştirilmiş olarak yeniden derleyin (Haar kademesi değişikliği).

  5. SCALE_S128_127 öğesine bağlı olan modelleri yeniden doğrulayın (ölçekleme değişikliği).

  6. Çift çekirdek kodunu Open-AMP’e taşıyın (CM4 değişikliği).