v3.0.0#
v3.0.0, büyük v2 → v3 sürümüdür. OpenMV Cam M7 (STM32F7) ile yeni nn CMSIS-NN sinir ağı modülünü (eski sabit kodlanmış find_number() / classify_object() metotlarının yerini alır) sunar, MT9V034 global shutter ve FLIR Lepton sensör desteği ile sensor.WVGA çerçeve boyutlarını ekler ve çekirdeği MicroPython 1.9.4‘e günceller. Birkaç image / sensor / WiFi davranışı değişti — aşağıdaki kırıcı değişikliklere göz atın.
Öne çıkanlar#
OpenMV Cam M7 — yeni STM32F7 kartı.
nnmodülü — CMSIS-NN çıkarımı:nn.load(),Net.forward(),Net.search(), bir model dönüştürücü ve örneklerle birlikte.Yeni sensörler — MT9V034 global shutter (FSIN tetiklemeli) ve FLIR Lepton.
MicroPython 1.9.4 çekirdek güncellemesi.
Kırıcı: sabit kodlanmış
image.find_number()/image.classify_object()kaldırıldı,sensor.sleep()artık istisna fırlatıyor, WINC soketleri gerçek bayt sayılarını döndürüyor,image.binary()yeni bir görüntü döndürüyor vefind_apriltags()64K piksel ile sınırlandırıldı — kırıcı değişikliklere bakın.
Yeni özellikler#
nn— yeni bir CMSIS-NN sinir ağı modülü:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(0.0–1.0 arası float değerler döndürür), çok ölçekli/konumlu tespit içinNet.search()veNet.test(), ayrıca bir CMSIS-NN model dönüştürücü (nn_convert.py/nn_quantizer.py), birlikte gelen CIFAR-10 / LeNet / smile modelleri ve NN / NN-search örnek betikleri.Sensörler — OpenMV 4 üzerinde MT9V034 global shutter desteği (FSIN tetiklemeli anlık görüntü), Lepton anlık görüntü ile güncellenmiş bir FLIR Lepton sürücüsü ve yeni
sensor.WVGA(720x480) /sensor.WVGA2(752x480) çerçeve boyutları.Görüntüleme —
image.find_circles()r_min/r_max/r_stepanahtar sözcüklerini kazandı (daha hızlı Hough),find_keypoints()ve Haarfind_features()artık RGB görüntüleri kabul ediyor veimage.compress()/ JPEG kodlama artık ikili (bitmap) görüntüleri destekliyor.Önyükleme —
boot.pyartık USB başlatmadan önce çalışıyor, böylece USB modunu (örn. HID) geçersiz kılabiliyor.Örnekler — küçük/yüksek çözünürlüklü AprilTag örnekleri, bir I2C LIDAR-Lite V3 örneği ve veri kümesi araçları (
augment_images.py/make_patches.py) eklendi.
Diğer değişiklikler ve iyileştirmeler#
Birlikte gelen MicroPython 1.9.4’e güncellendi (bir pyexec ayrıştırma/derleme/yürütme geri alımı ve PendSV düzeltmesiyle); daha açık
fb_alloc/xallocbellek yetersizliği hata mesajları; ağ yüklemesi sırasındannprintf gürültüsü bastırıldı; depo yeniden düzenlendi (örnekler →scripts/, araçlar →tools/, Haar kademeleri →ml/).nnmodülü OpenMV 2 üzerinde kullanılamaz (yetersiz flash bellek).
Hata düzeltmeleri#
Görüntüleme:
x≤0 için
fast_atan2fdüzeltildi (önceden her zaman 0 — nokta (blob) / çizgi / anahtar nokta açılarını yeniden denetleyin),find_apriltags()bellek yönetimi (OOM durumunda içerik kaybı ve hatalı bir realloc), ikili/bitmap bpp başına satır işaretçileri (bozuk ikili sonuçlar), bir ROI ilefind_edges(EDGE_CANNY),TO_GS_PIXELmakrosu (integral / morfoloji), gri tonlama (bpp==0) çerçeveleri için bitmap/JPEG akışı, anahtar nokta/nokta (blob) listesipop_frontvematch_descriptorsonuçları düzeltildi.
Sistem ve kamera:
USB HID arayüzü/uç nokta numaraları, XCLK frekansının çalışma zamanında dinamik olarak değiştirilmesi,
Net.forward()işlevinin doğru sayıda çıktı döndürmesi ve betik ayrıştırmasını kesintiye uğratırken oluşan bir hardfault düzeltildi.
Donanım ve kart desteği#
OpenMV Cam M7 (STM32F7) — yeni kart.
MT9V034 global shutter sensörü (OpenMV 4, FSIN tetiklemeli).
FLIR Lepton — anlık görüntü desteğiyle güncellenmiş sürücü.
Kırıcı API değişiklikleri#
v2.9.0 ile v3.0.0 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 kütüphaneleri.
Her değişiklik etkisine göre etiketlenmiştir:
büyük — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecek.
önemsiz — dar kapsamlı API; yalnızca onu kullanan betikleri etkiler.
davranış — aynı API, farklı sonuçlar; ince ayarlı betikleri yeniden denetleyin.
Değişiklikler bu sırayla etkilerine göre gruplandırılmıştır. Sadece kodunuzu taşımak istiyorsanız sondaki geçiş kontrol listesine atlayın. Her commit özeti, GitHub üzerindeki diff’ine bağlanır.
image.find_number() / image.classify_object() kaldırıldı (büyük)#
Sabit kodlanmış image.find_number() (LeNet) ve image.classify_object() (CMSIS CNN) metotları, yeni nn modülü lehine kaldırıldı. Bunları net = nn.load('/model.network'); out = net.forward(img) ile değiştirin.
Commit’ler: d151f7e38
sensor.sleep() / sensor.reset() hata durumunda istisna fırlatır (önemsiz)#
sensor.sleep() ve sensor.reset() artık başarısızlık durumunda True / False döndürmek yerine bir istisna fırlatır. sensor.sleep() işlevinin boolean dönüş değerini denetleyen kodun bunun yerine çağrıyı try / except içine sarması gerekir.
Commit’ler: 7d16d008f
WINC soketleri gerçek bayt sayısını döndürür (davranış)#
WINC1500 soketi send / recv / sendto / recvfrom metotları önceden her zaman 0 döndürüyordu; artık aktarılan gerçek bayt sayısını döndürüyorlar. 0 dönüşü varsayan (ya da bunun üzerinde döngüye giren/bloke olan) kodun gerçek sayıları işlemesi gerekir.
Commit’ler: a07fb2f60
image.binary() yeni bir görüntü döndürür (davranış)#
image.binary() to_bitmap / copy anahtar sözcüklerini kazandı ve artık kaynak görüntüyü yerinde döndürmek/değiştirmek yerine yeni bir görüntü nesnesi döndürüyor. binary() işlevinin orijinal görüntüyü değiştirmesine güvenen kodun, döndürülen nesneyi kullanması gerekir (ve yerinde olmayan davranış için copy=True geçirmesi gerekir).
Commit’ler: 8a44f0cd9
Geçiş kontrol listesi#
v3.0.0’a temiz bir geçiş için tipik iş şudur:
image.find_number()/image.classify_object()yerinennmodülünü kullanın (nn geçişi).Boolean bir dönüş değerini denetlemek yerine
sensor.sleep()/sensor.reset()işlevlerinitry/exceptiçine sarın (sensor.sleep değişikliği).WINC soketi
send/recvişlevlerinden gelen gerçek bayt sayılarını işleyin (WINC soket değişikliği).Yerinde değişiklik beklemek yerine
image.binary()tarafından döndürülen görüntüyü kullanın (binary değişikliği).64K pikselin altında kalmak için
find_apriltags()çağrısından önce görüntüleri küçültün (find_apriltags sınırı).
Diğer tüm betikler değişmeden çalışır.