v4.8.0

v4.8.0 büyük bir özellik sürümüdür. Başlıca yenilikler: çoklu kamera desteğine sahip yepyeni sınıf tabanlı csi kamera modülü, Neural-ART NPU içeren OpenMV N6 (STM32N6) kartı, bir NPU çıkarım arka ucu, GenX320 olay kamerası RAW olay modu, yeni bir crc modülü, yeniden düzenlenmiş bir ML son işleme kütüphanesi ve MicroPython 1.26. Ayrıca birkaç eski API’yi de kaldırır — buzzer modülü ile fir modülünün FLIR Lepton denetimi — bu nedenle aşağıdaki bozucu değişiklikleri okuyun.

Öne çıkanlar

  • Yeni csi kamera modülü. Eski sensor modülüyle birlikte sunulan, birden fazla eşzamanlı kamerayı destekleyen sınıf tabanlı bir csi.CSI API’si.

  • OpenMV N6. Neural-ART NPU, üçlü arabelleğe alma, Soft-CSI ve bir ToF modülü içeren STM32N6 kartı.

  • NPU çıkarımı. Donanım hızlandırmalı model çıkarımı için bir ST Neural-ART (STAI) arka ucu.

  • GenX320 olay modu. RAW olay çıktısı ve olay kamerası işlemesi için draw_event_histogram().

  • Yeniden düzenlenmiş ML son işleme — yeni BlazeFace / BlazePalm / el ve yüz anahtar nokta tespit edicileriyle birlikte sağlayıcı alt paketleri (ml.postprocessing.ultralytics, mediapipe, edgeimpulse, darknet).

  • Yeni crc modülü — donanım hızlandırmalı CRC-16 / CRC-32.

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

  • Bozucu: buzzer modülü ve fir modülünün Lepton denetimi kaldırıldı (Lepton artık normal bir kameradır). Bkz. fir/Lepton değişikliği ve buzzer kaldırılması.

Yeni özellikler

  • Yeni csi kamera modülü — birden fazla eşzamanlı kameraya (N6’da en fazla üç), bloke etmeyen anlık görüntüye, özel (w, h) çerçeve boyutlarına ve bilgilendirici bir print() / repr’ye sahip sınıf tabanlı bir csi.CSI nesnesi. Eski sensor modülüyle birlikte sunulur (doğrudan yerine geçen bir değişiklik değildir).

  • crc — OpenMV N6 ve AE3’te, yazılım yedeğiyle birlikte donanım hızlandırmalı crc.crc16() ve crc.crc32().

  • image.Image.draw_image() bir transform= anahtar sözcüğü kazandı (afin/perspektif eğmeler için 2 boyutlu kayan noktalı bir ndarray matrisi, STM32 ve Alif’te GPU hızlandırmalı); aynı dönüşüm görüntü dönüştürmede de mevcuttur.

  • draw_event_histogram() — olay kamerası histogramlarını işler.

  • GenX320 RAW olay moducsi.GENX320_MODE_HISTO / csi.GENX320_MODE_EVENT ile csi.IOCTL_GENX320_SET_MODE, csi.IOCTL_GENX320_READ_EVENTS, csi.IOCTL_GENX320_CALIBRATE, olay türü sabitleri ve yeni örnek betikler.

  • ML — bir ST Neural-ART (STAI) NPU çıkarım arka ucu; ml.Model bir postprocess= anahtar sözcüğü kazandı (son işleyici artık geri çağırma olmadan bile predict() içinde otomatik olarak çalışır); ml.postprocessing sağlayıcı alt paketlerine yeniden düzenlendi — ml.postprocessing.ultralytics (YoloV5, YoloV8), ml.postprocessing.darknet (YoloV2, YoloLC), ml.postprocessing.edgeimpulse (Fomo) ve ml.postprocessing.mediapipe (BlazeFace, BlazePalm, HandLandmarks, FaceLandmarks) — eski snake_case adlar takma ad olarak kalır; ml.utils.draw_keypoints() ve ml.utils.draw_skeleton() eklendi; paketlenmiş ROMFS modelleri büyüdü (BlazeFace, YOLO-LC, YOLOv8n, avuç içi/el/yüz anahtar noktaları).

  • audio — STM32N6’da MDF dijital mikrofon girişi.

  • Ekran — bir SSD1351 OLED sürücüsü ve örneği; SPIDisplay denetleyicileri başlatma komutlarını geçersiz kılabilir; SPI ekran kurucusu hmirror / vflip anahtar sözcüklerini kazandı.

  • Cihaz üzerinde profil çıkarıcı — fonksiyon düzeyinde araçlandırmaya sahip, hata ayıklama bağlantısı üzerinden okunabilen SysTick + Armv8.1-M PMU döngü/olay sayaçları (pyopenmv profil çıkarma ve ELF sembol desteği kazandı).

  • Yeni sensör desteği — PixArt PS5520; OpenMV H7 Plus’ta FLIR BOSON; GenX320 otomatik algılama.

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

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

  • Kamera başlatma — sensör saati CSI durumundan ayrıştırıldı, önyüklemede kamera algılama daha hızlı (en yaygın yapılandırma önce denenir) ve OpenMV 3 OV7725 varsayılan saati düzeltildi.

  • Görüntü kalitesi — yazılım ISP gama düzeltmesi (Alif ve STM32) ve hatalı piksel düzeltmesi (STM32) varsayılan olarak açıktır; PAG7936 ve PS5520 sensörleri otomatik beyaz dengesi denetimleri kazandı.

  • Performansimage.Image.to_ndarray() Helium SIMD ile hızlandırıldı ve FOMO son işleyicisi ulab ile vektörleştirildi.

  • FLIR Lepton sürücüsü çerçeveleri arka planda eşzamansız olarak alacak şekilde yeniden yazıldı — döndürme/transpose artık çalışıyor, çizim çift doğrusal olarak büyütülüyor ve sıfırlama daha hızlı.

  • Yakalama iş hacmi — i.MX RT1062 CSI artık tam DMA boşaltma kullanıyor ve STM32 N6’da donanım GPU’lu bir draw_image() var.

Hata düzeltmeleri

Kamera ve sensörler:

  • STM32 sensörleri genelinde RGB565 / GRAYSCALE / BAYER / YUV422 modları, OpenMV H7 / H7 Plus’ta PAJ6100, OpenMV 2 QVGA RGB565 ve N6 CSI mono / RGB-YUV yapılandırması düzeltildi; yazılım test kamerası artık deterministik olarak sıfırlanıyor.

  • Otomatik beyaz dengesi artık düşük veya değişken çerçeve hızlarında görüntüyü yeşile çevirmiyor (her 100 çerçevede bir örneklemenin yerini 250 ms’lik bir hareketli ortalama aldı) ve PS5520 parlaklık titremesi düzeltildi.

Görüntü işleme:

  • Bir çizgi çizme işleme hatası düzeltildi; image.Image.flush() artık üzerinde çağrıldığı görüntünün JPEG arabelleğini boşaltıyor; Normalization artık ortalama/standart sapmayı kayan noktalı girişlere uyguluyor; dosyadan görüntü ayırma düzeltildi.

Kamera yakalama:

  • JPEG olmayan aktarımlarda ciddi görüntü bozulması (çerçeve kesmesi artık yalnızca JPEG modunda etkinleştiriliyor), JPEG mod-3 desteği ve STM32’de DMA satır boyutu ile küçük arabellek kilitlenmeleri düzeltildi; VOSPI / Lepton senkronizasyonu, özellikle N6’da daha güvenilir.

Çeşitli:

  • omv.board_id() RT1060’ta doğru UID’yi döndürüyor; YoloV2 açık çapalar olmadan oluşturulduğunda artık çökmüyor.

Donanım ve kart desteği

  • OpenMV N6 — Neural-ART NPU, üçlü arabelleğe alma, SPI LCD/TV çıkışı, Soft-CSI, tof modülü ve paketlenmiş ROMFS modelleri içeren STM32N6.

  • Arduino GIGA — MIPI DSI ekran çıkışı.

  • Yeni sensörler — PixArt PS5520; OpenMV H7 Plus’ta FLIR BOSON; GenX320 otomatik algılama.

  • OpenMV Pure Thermal — FLIR Lepton artık normal (ikincil) bir kamera sensörüdür.

  • Alif AE3 — yazılım ISP gama düzeltmesi, crc modülü ve SPI düzeltmeleri.

Bozucu API değişiklikleri

v4.7.0 ile v4.8.0 arasındaki kullanıcıya görünür API bozulmaları. Kapsam: modules/ içindeki Python C modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.

Her değişiklik etkisine göre etiketlenmiştir:

  • major — bunu 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 — yalnızca ana makine araçlarını / kaynaktan derlemeyi etkiler.

Değişiklikler bu sırayla etkiye göre gruplandırılmıştır — önce major, sonra minor, behavior ve tooling. Yalnızca kodunuzu taşımak istiyorsanız, yoğunlaştırılmış bir yapılacaklar listesi için sondaki taşıma kontrol listesine atlayın. Her commit karması GitHub’daki diff’ine bağlanır.

FLIR Lepton fir modülünden taşındı (major)

FLIR Lepton artık fir modülü aracılığıyla değil, normal bir kamera sensörü olarak sürülüyor. Lepton denetimi fir‘den kaldırıldı: FIR_LEPTON türü ile radiometric(), register_vsync_cb(), register_frame_cb(), get_frame_available() ve trigger_ffc() yöntemleri kaldırıldı. Lepton’u diğer kameralar gibi yakalayın (OpenMV Pure Thermal’da ikincil bir sensör olarak görünür); Pure Thermal örneği yeni API’ye göre yeniden yazıldı. Lepton olmayan fir sensörleri (Grid-EYE, MLX, AMG8833) değişmedi.

Commit’ler: bacfb7aeb, 117710566, 592a22902, 1a614202e

buzzer modülü kaldırıldı (minor)

buzzer modülü STM32 ve i.MX RT bağlantı noktalarından kaldırıldı. Bunun yerine zili machine.PWM ile sürün; PWM kullanan bir Pure Thermal zil örneği eklendi.

Commit’ler: ccb947924, 444120f2d

omv.disable_fb() kaldırıldı (minor)

omv.disable_fb() fonksiyonu kaldırıldı; çerçeve arabelleği akışı artık kamera API’si aracılığıyla denetleniyor. Buna dayanan eski RPC masaüstü betikleri de kaldırıldı.

Commit’ler: 84c3db58a, 6fe99051c

csi yenidir — API’si henüz dondurulmadı (minor)

csi modülü v4.8.0’da sunuldu ve API’si sürüm boyunca gelişti: csi.fb() kaldırıldı ve csi.CSI.snapshot() (image=...) artık değiştirilebilir bir görüntü gerektiriyor ve ham bir derin kopya yapmak yerine yakalanan çerçeveyi içine çizip/ölçekliyor. Yeni modülü erken benimseyenler yeniden test etmelidir; eski sensor API’si etkilenmez.

Commit’ler: 0bc0385eb, 8cd7a309f

image.ImageIO akış modu ve close() (minor)

image.ImageIOmode argümanı artık yalnızca küçük harfli 'r' / 'w' kabul ediyor (büyük harf, güncellenmiş bir hata mesajıyla reddediliyor) ve 'w' ile açma, mevcut bir akışı korumak yerine dosyayı her zaman kısaltıyor/yeniden oluşturuyor. ImageIO.close() artık idempotent (zaten kapatılmış bir akışı kapatmak artık hata vermiyor) ve akış nesnesi yerine None döndürüyor.

Commit’ler: 715c4cbba, 21ceec422

BlazeFace / BlazePalm dönüş değeri (minor)

BlazeFace ve BlazePalm son işleyicileri (bu sürümde yeni) artık sınıf başına tam liste yerine tek bir sınırlayıcı kutu listesi döndürüyor — çağıranlar sonucu [0] yerine doğrudan indeksliyor.

Commit: 75e16b573

ML son işleyici geri çağırması ham tensörler alıyor (behavior)

Bir ml.Model predict() son işleme geri çağırması artık önceden dönüştürülmüş kayan noktalı ndarrayler yerine ham (nicelenmiş) çıktı tensörü referansları alıyor — bu, büyük modellerde bellek tükenmesini önler. Hiçbir geri çağırma sağlanmazsa, kayan noktalı ndarray yine de döndürülür. Özel geri çağırmaların tensörleri kendilerinin niceleme çözmesi gerekir (yerleşik son işleyiciler bunu zaten yapar).

Commit: 84e6ee650

Kamera saati CSI durumundan ayrıştırıldı (behavior)

Sensör saati artık CSI durumundan bağımsızdır. set_clock / set_frequency saati yalnızca istenen frekans bir toleranstan daha fazla farklıysa yeniden yapılandırır ve get_clk_frequency nominal değil tam frekansı döndürmek için bir boole alır. Varsayılan saat OpenMV N6 ve AE3’te 24 MHz’dir, bu nedenle önyüklemede açık bir set_clock() gerekmez. Zamanlamaya duyarlı yakalamalar için saati değiştiren betikler varsayımlarını yeniden kontrol etmelidir.

Commit’ler: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca

USB hata ayıklama protokolü ve aygıt yazılımı hedefleri (tooling)

Bunların hiçbiri MicroPython betiklerini etkilemez. Eski USBDBG komutları (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) kaldırıldı ve daha eski IDE’lerden gelen desteklenmeyen komutlar, bağlantıda TinyUSB kartlarını çökertmek yerine artık temizleniyor; eski STM32 UVC aygıt yazılımı hedefi kaldırıldı. Eski ana makine araçları güncellenmelidir; ayrıntılar için aygıt yazılımı deposu geçmişine bakın.

Commit’ler: 90bd11e93, 657c9a632, 35182f035

Taşıma kontrol listesi

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

  1. FLIR Lepton’u fir aracılığıyla kullandıysanız, onu bir kamera sensörü olarak yakalamaya geçin (fir/Lepton değişikliği).

  2. Herhangi bir buzzer kullanımını machine.PWM ile değiştirin (buzzer kaldırılması).

  3. omv.disable_fb() çağrılarını kaldırın (omv.disable_fb() kaldırılması).

  4. image.ImageIO için: küçük harfli 'r'/'w' kullanın ve 'w'‘nin kısaltacağını bekleyin (ImageIO değişikliği).

  5. Özel ML son işleme geri çağırmaları için: ham tensör referanslarının nicelemesini kendiniz çözün veya varsayılan kayan noktalı yola güvenin (geri çağırma değişikliği).

  6. Zamanlamaya duyarlı yakalamalar için sensör saatini süren herhangi bir betiği yeniden kontrol edin (saat değişikliği).