7.16. Özet¶
Bu bölüm, çıkarım adımı işlem hattının bir parçası olduğunda bir OpenMV uygulamasının başvurduğu ml bileşenlerini adım adım ele aldı:
Kavramlar – aritmetik açıdan bir sinir ağının ne olduğu (bir tensörü başka bir tensöre eşleyen, eğitilebilir operatörlerden oluşan bir yığın), makine öğrenmesinin klasik görüntü işlemeye kıyasla neyi değiştirdiği (insan tarafından yazılan özet algoritması ortadan kalkar, yerini etiketli verilerden öğrenilen ağırlıklar alır) ve birkaç satır Python ile bir yüz tespit edicisi çalıştıran hello demosu.
ml modülü –
ml.Modelnesnesi ve giriş ile çıkış tensörlerini incelemeye yarayan özellikleri, kabul ettiği model dosyası yolları ve bu dosyaların bulunduğu yerler: doğrudan flash bellekten çalıştırma için salt okunur bir ROMFS bölümü ya da modelin yükleme anında RAM’e kopyalanabildiği herhangi başka bir MicroPython dosya sistemi.Çıkarım işlem hattı –
predict()metodunun sırayla çalıştırdığı üç aşama (ön işleme, motor sevkiyatı, son işleme), birinci aşamadakiNormalizationtutamacı, üçüncü aşamadaki son işleyici tutamacı ve kameranın çalıştırdığı tamsayı tensörlerini ağın eğitildiği gerçek değerli sayılara bağlayan niceleme aritmetiği.Çıkarım motorları – TFLM (çoğu kameranın çalıştırdığı operatör yorumlayıcısı), CMSIS-NN (Cortex-M üzerinde onun altında yer alan SIMD çekirdek kütüphanesi) ve NPU’lar (AE3’te Vela çevrimdışı derleyicisiyle eşleştirilmiş Arm’ın Ethos-U55’i, N6’da STAI ve STEdgeAI ile eşleştirilmiş ST’nin Neural-ART’ı). Motor kameraya göre sabittir; betik onu seçmez.
Çıktının kodunun çözülmesi – ham çıktı tensörlerini kutulara, anahtar noktalara ya da sınıf başına listelere dönüştüren son işleyiciler, örtüşen adayları daraltan
NMSsınıfı, niceleme geri alma işleminden önce eşikleme yaparak kod çözümünü hızlı tutmanın yolunu gösteren YOLOv8 anlatımı ve katalog bir modeli kapsamadığında özel bir kod çözücü yazma protokolü.
7.16.1. Artık erişilebilir olanlar¶
Bu bölümün hazırlık yaptığı üç şey:
Eğitilmiş bir modeli yükleyip çalıştırmak.
/rom/içindeki her şey ek bir hazırlık gerektirmeden çalışır; harici olarak uyumlu bir.tflitebiçiminde sağlanan her şey ise hedef kamera için çevrimdışı araç (AE3 için Vela, N6 için STEdgeAI) doğru yerleşimi ürettikten sonra çalışır.Herhangi bir çıktı tensörünün kodunu çözmek. Mimari katalogda yer aldığında doğru son işleyici mekaniktir: YOLOv8 modeli için
YoloV8, BlazeFace içinBlazeFaceve benzeri. Katalogda yer almadığında ise kendi son işleyicinizi yazma protokolü sözleşmeyi kapsar ve YOLOv8 anlatımı kopyalanabilecek en temiz referanstır.Performans hakkında akıl yürütmek. Bir NPU üzerinde 30 FPS ile çalışan bir model, bir Cortex-M7 üzerinde 3 FPS ile çalışabilir; bu oran, kameranın ağın ne kadarını CPU’dan kaldırabildiğine bağlıdır. Niceleme, ROMFS yerleşimi, NPU derlemesi ve hedef motorun operatör kapsamı dört kaldıraçtır ve bu bölüm her birini ele aldı.
7.16.2. ML, kameranın geri kalanıyla birlikte çalışır¶
Bir çıkarım nadiren tek başına çalışır. image modülü çerçeveyi yakalar ve ön işler, ml modülü ağı çalıştırır ve ulab.numpy, iki tarafın da yerleşik bir karşılığı olmayan her türlü sayısal işi yapar. Tipik bir tespit betiği üçünü de birleştirir: csi ile yakalama, isteğe bağlı olarak image ile çerçeveyi ayarlama, predict() çalıştırma, sonucu ml.postprocessing içinden doğru modülle son işleme ve son işleyicinin döndürdüğü kutular üzerinde uygulamanın istediği özel matematik için ulab.numpy kullanma. Bu üç modül aynı bellek modelini paylaşır; aralarındaki sınırlar mümkün olan her yerde sıfır kopyalıdır.