Sony IMX500 Export için Ultralytics YOLOv8
Bu kılavuz, Ultralytics YOLOv8 modellerinin Sony IMX500 sensörüne sahip Raspberry Pi AI Kameralara aktarılmasını ve dağıtılmasını kapsar.
Raspberry Pi AI Kamera gibi sınırlı hesaplama gücüne sahip cihazlarda bilgisayarla görme modellerini dağıtmak zor olabilir. Daha hızlı performans için optimize edilmiş bir model formatı kullanmak büyük bir fark yaratır.
IMX500 model formatı, sinir ağları için hızlı performans sunarken minimum güç kullanmak üzere tasarlanmıştır. Optimize etmenizi sağlar Ultralytics YOLOv8 yüksek hızlı ve düşük güçlü çıkarım için modeller. Bu kılavuzda, modellerinizi IMX500 formatına aktarma ve dağıtma konusunda size yol gösterirken, modellerinizin Raspberry Pi AI Kamera üzerinde iyi performans göstermesini kolaylaştıracağız.
Neden IMX500'e Aktarmalısınız?
Sony'nin IMX500 Akıllı Görüş Sensörü, uç yapay zeka işleme alanında oyunun kurallarını değiştiren bir donanım. Yonga üzerinde yapay zeka özelliklerine sahip dünyanın ilk akıllı görüş sensörüdür. Bu sensör; veri işleme darboğazları, gizlilik endişeleri ve performans sınırlamaları gibi uç yapay zeka alanındaki birçok zorluğun üstesinden gelmeye yardımcı oluyor.
Diğer sensörler yalnızca görüntüleri ve kareleri aktarırken, IMX500 tüm hikayeyi anlatıyor. Verileri doğrudan sensör üzerinde işleyerek cihazların gerçek zamanlı olarak içgörüler üretmesini sağlar.
Sony'nin YOLOv8 Modelleri için IMX500 İhracatı
IMX500, cihazların verileri işlenmek üzere buluta göndermesine gerek kalmadan doğrudan sensör üzerinde işleme biçimini dönüştürmek üzere tasarlanmıştır.
IMX500 kuantize edilmiş modellerle çalışır. Niceleme, çok fazla doğruluk kaybetmeden modelleri daha küçük ve daha hızlı hale getirir. Uç bilişimin sınırlı kaynakları için idealdir, gecikmeyi azaltarak ve bulut bağımlılığı olmadan yerel olarak hızlı veri işlemeye izin vererek uygulamaların hızlı yanıt vermesini sağlar. Yerel işleme aynı zamanda uzak bir sunucuya gönderilmediği için kullanıcı verilerini gizli ve güvenli tutar.
IMX500 Temel Özellikler:
- Meta Veri Çıkışı: IMX500, yalnızca görüntü iletmek yerine hem görüntü hem de meta veri (çıkarım sonucu) çıktısı alabilir ve veri boyutunu en aza indirmek, bant genişliğini azaltmak ve maliyetleri düşürmek için yalnızca meta veri çıktısı alabilir.
- Gizlilik Endişelerini Giderir: Verileri cihaz üzerinde işleyerek gizlilik endişelerini gideren IMX500, kişi sayma ve doluluk takibi gibi insan merkezli uygulamalar için idealdir.
- Gerçek Zamanlı İşleme: Hızlı, sensör üzerinde işleme, otonom sistemler gibi uç yapay zeka uygulamaları için mükemmel olan gerçek zamanlı kararları destekler.
Başlamadan Önce: En iyi sonuçları elde etmek için Model Eğitim Kılavuzumuzu, Veri Hazırlama Kılavuzumuzu ve Hiperparametre Ayarlama Kılavuzumuzu takip ederek YOLOv8 modelinizin dışa aktarım için iyi bir şekilde hazırlandığından emin olun.
Kullanım Örnekleri
Bir Ultralytics YOLOv8 modelini IMX500 formatına dışa aktarın ve dışa aktarılan modelle çıkarımı çalıştırın.
Not
Burada sadece modelin beklendiği gibi çalıştığından emin olmak için çıkarım yapıyoruz. Ancak, Raspberry Pi Yapay Zeka Kamerasında dağıtım ve çıkarım için lütfen Dağıtım bölümündeki IMX500 Dışa Aktarımını Kullanma kısmına geçin.
Örnek
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
Dışa aktarma işlemi, niceleme doğrulaması için bir ONNX modeli ile birlikte şu adda bir dizin oluşturacaktır <model-name>_imx_model
. Bu dizin aşağıdakileri içerecektir packerOut.zip
dosyası, IMX500 donanımına yerleştirilmek üzere modelin paketlenmesi için gereklidir. Ek olarak <model-name>_imx_model
klasörü bir metin dosyası içerecektir (labels.txt
) modelle ilişkili tüm etiketleri listeler.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
Argümanlar
Bir modeli IMX500 formatına aktarırken çeşitli argümanlar belirtebilirsiniz:
Anahtar | Değer | Açıklama |
---|---|---|
format |
imx |
Dışa aktarılacak format (imx) |
int8 |
True |
Model için INT8 nicemlemeyi etkinleştirin (varsayılan: True ) |
imgsz |
640 |
Model girdisi için görüntü boyutu (varsayılan: 640 ) |
Dağıtımda IMX500 Dışa Aktarmayı Kullanma
Ultralytics YOLOv8n modeli IMX500 formatına aktarıldıktan sonra, çıkarım için Raspberry Pi AI Kamerasına dağıtılabilir.
Donanım Önkoşulları
Aşağıdaki donanıma sahip olduğunuzdan emin olun:
- Raspberry Pi 5 veya Raspberry Pi 4 Model B
- Raspberry Pi Yapay Zeka Kamerası
Raspberry Pi AI kamerayı Raspberry Pi üzerindeki 15 pinli MIPI CSI konektörüne bağlayın ve Raspberry Pi'yi açın
Yazılım Önkoşulları
Not
Bu kılavuz Raspberry Pi 5 üzerinde çalışan Raspberry Pi OS Bookworm ile test edilmiştir.
Adım 1: Bir terminal penceresi açın ve Raspberry Pi yazılımını en son sürüme güncellemek için aşağıdaki komutları uygulayın.
Adım 2: IMX500 sensörünü çalıştırmak için gerekli olan IMX500 ürün yazılımını bir paketleyici araç ile birlikte yükleyin.
Adım 3: Çalıştırmak için önkoşulları yükleyin picamera2
uygulama. Bu uygulamayı daha sonra dağıtım işlemi için kullanacağız.
Adım 4: Değişikliklerin yürürlüğe girmesi için Raspberry Pi'yi yeniden başlatın
Modeli Paketleyin ve Yapay Zeka Kamerasına Dağıtın
Elde ettikten sonra packerOut.zip
IMX500 dönüştürme işleminden sonra, bir RPK dosyası elde etmek için bu dosyayı paketleyici aracına aktarabilirsiniz. Bu dosya daha sonra aşağıdakiler kullanılarak doğrudan AI Kameraya dağıtılabilir picamera2
.
Adım 1: Modeli RPK dosyasına paketleyin
Yukarıdakiler bir network.rpk
belirtilen çıktı klasörünün içindeki dosya.
Adım 2: Klonlama picamera2
deposuna gidin, yükleyin ve imx500 örneklerine gidin
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Adım 3: IMX500 dışa aktarımı sırasında oluşturulan labels.txt dosyasını kullanarak YOLOv8 nesne algılamayı çalıştırın.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>
Ardından canlı çıkarım çıktısını aşağıdaki gibi görebileceksiniz
Ölçütler
YOLOv8 Aşağıdaki kıyaslamalar Ultralytics ekibi tarafından Raspberry Pi AI Kamera ile çalıştırılmıştır imx
model formatı ölçüm hızı ve doğruluğu.
Model | Biçim | Durum | Boyut (MB) | mAP50-95(B) | Çıkarım süresi (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.9 | 0.522 | 66.66 |
Not
Yukarıdaki kıyaslama için doğrulama coco8 veri kümesi kullanılarak yapılmıştır
Kaputun Altında Ne Var?
Sony Model Sıkıştırma Araç Kiti (MCT)
Sony'nin Model Sıkıştırma Araç Seti (MCT), niceleme ve budama yoluyla derin öğrenme modellerini optimize etmeye yönelik güçlü bir araçtır. Çeşitli niceleme yöntemlerini destekler ve doğruluktan önemli ölçüde ödün vermeden model boyutunu ve hesaplama karmaşıklığını azaltmak için gelişmiş algoritmalar sağlar. MCT, verimli çıkarım ve daha düşük gecikme süresi sağlayarak, kaynakları kısıtlı cihazlara model yerleştirmek için özellikle kullanışlıdır.
MCT'nin Desteklenen Özellikleri
Sony'nin MCT'si, sinir ağı modellerini optimize etmek için tasarlanmış bir dizi özellik sunar:
- Grafik Optimizasyonları: Toplu normalleştirme gibi katmanları önceki katmanlara katlayarak modelleri daha verimli sürümlere dönüştürür.
- Kuantizasyon Parametresi Arama: Ortalama-Kare-Hata, Kırpma Yok ve Ortalama-Ortalama-Hata gibi metrikleri kullanarak niceleme gürültüsünü en aza indirir.
- Gelişmiş Kuantizasyon Algoritmaları:
- Negatif Kaydırma Düzeltmesi: Simetrik aktivasyon nicelemesinden kaynaklanan performans sorunlarını giderir.
- Aykırı Değer Filtreleme: Aykırı değerleri tespit etmek ve kaldırmak için z-skoru kullanır.
- Kümeleme: Daha iyi dağılım eşleştirmesi için tek tip olmayan niceleme ızgaraları kullanır.
- Karışık Hassasiyetli Arama: Hassasiyete göre katman başına farklı niceleme bit genişlikleri atar.
- Görselleştirme: Model performansı içgörülerini, niceleme aşamalarını ve bit genişliği yapılandırmalarını gözlemlemek için TensorBoard'u kullanın.
Kuantizasyon
MCT, model boyutunu azaltmak ve çıkarım hızını artırmak için çeşitli niceleme yöntemlerini destekler:
- Eğitim Sonrası Niceleme (PTQ):
- Keras ve PyTorch API'leri aracılığıyla kullanılabilir.
- Karmaşıklık: Düşük
- Hesaplama Maliyeti: Düşük (CPU dakika)
- Gradyan Tabanlı Eğitim Sonrası Niceleme (GPTQ):
- Keras ve PyTorch API'leri aracılığıyla kullanılabilir.
- Karmaşıklık: Orta
- Hesaplama Maliyeti: Orta düzeyde (2-3 GPU saat)
- Niceleme Farkında Eğitim (QAT):
- Karmaşıklık: Yüksek
- Hesaplama Maliyeti: Yüksek (12-36 GPU saat)
MCT ayrıca ağırlıklar ve aktivasyonlar için çeşitli niceleme şemalarını da destekler:
- Power-of-Two (donanım dostu)
- Simetrik
- Üniforma
Yapılandırılmış Budama
MCT, belirli donanım mimarileri için tasarlanmış yapılandırılmış, donanıma duyarlı model budaması sunar. Bu teknik, SIMD gruplarını budayarak hedef platformun Tek Komut, Çoklu Veri (SIMD) özelliklerinden yararlanır. Bu, model boyutunu ve karmaşıklığını azaltırken kanal kullanımını optimize eder, bellek ayak izinin hedeflenen kaynak kullanımı için SIMD mimarisiyle uyumludur. Keras ve PyTorch API'leri aracılığıyla kullanılabilir.
IMX500 Dönüştürücü Aracı (Derleyici)
IMX500 Dönüştürücü Aracı, IMX500 araç setinin ayrılmaz bir parçasıdır ve Sony'nin IMX500 sensöründe (örneğin Raspberry Pi AI Kameralar) kullanılmak üzere modellerin derlenmesini sağlar. Bu araç, Ultralytics yazılımı aracılığıyla işlenen Ultralytics YOLOv8 modellerinin geçişini kolaylaştırarak uyumlu olmalarını ve belirtilen donanımda verimli bir şekilde çalışmasını sağlar. Model nicelemeyi takiben dışa aktarma prosedürü, temel verileri ve cihaza özgü yapılandırmaları kapsayan ikili dosyaların oluşturulmasını içerir ve Raspberry Pi AI Kamera üzerindeki dağıtım sürecini kolaylaştırır.
Gerçek Dünya Kullanım Örnekleri
IMX500 formatına dışa aktarma, sektörler arasında geniş bir uygulama alanına sahiptir. İşte bazı örnekler:
- Edge AI ve IoT: Düşük güçlü cihazlarda gerçek zamanlı işlemenin gerekli olduğu drone'larda veya güvenlik kameralarında nesne algılamayı etkinleştirin.
- Giyilebilir Cihazlar: Küçük ölçekli yapay zeka işlemleri için optimize edilmiş modelleri sağlık izleme amaçlı giyilebilir cihazlara dağıtın.
- Akıllı Şehirler: Daha hızlı işleme ve minimum gecikme ile trafik izleme ve güvenlik analizi için IMX500 tarafından ihraç edilen YOLOv8 modellerini kullanın.
- Perakende Analitiği: Satış noktası sistemlerine veya akıllı raflara optimize edilmiş modeller yerleştirerek mağaza içi izlemeyi geliştirin.
Sonuç
Ultralytics YOLOv8 modellerini Sony'nin IMX500 formatına dışa aktarmak, IMX500 tabanlı kameralarda verimli çıkarım için modellerinizi kullanmanızı sağlar. Gelişmiş niceleme tekniklerinden yararlanarak, doğruluktan önemli ölçüde ödün vermeden model boyutunu küçültebilir ve çıkarım hızını artırabilirsiniz.
Daha fazla bilgi ve ayrıntılı yönergeler için Sony'nin IMX500 web sitesine bakın.
SSS
Raspberry Pi AI Kamera için bir YOLOv8 modelini IMX500 formatına nasıl aktarabilirim?
Bir YOLOv8 modelini IMX500 formatına aktarmak için Python API veya CLI komutunu kullanın:
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
Dışa aktarma işlemi, aşağıdakiler de dahil olmak üzere dağıtım için gerekli dosyaları içeren bir dizin oluşturacaktır packerOut.zip
Raspberry Pi üzerinde IMX500 paketleyici aracı ile kullanılabilir.
Uç yapay zeka dağıtımı için IMX500 formatını kullanmanın temel faydaları nelerdir?
IMX500 formatı, uç dağıtım için birkaç önemli avantaj sunar:
- Çip üzerinde yapay zeka işleme gecikme süresini ve güç tüketimini azaltır
- Yalnızca görüntü yerine hem görüntü hem de meta veri (çıkarım sonucu) çıktısı verir
- Bulut bağımlılığı olmadan verileri yerel olarak işleyerek gelişmiş gizlilik
- Zamana duyarlı uygulamalar için ideal gerçek zamanlı işleme özellikleri
- Kaynak kısıtlı cihazlarda verimli model dağıtımı için optimize edilmiş niceleme
IMX500 dağıtımı için hangi donanım ve yazılım ön koşulları gereklidir?
IMX500 modellerini dağıtmak için ihtiyacınız olacak:
Donanım:
- Raspberry Pi 5 veya Raspberry Pi 4 Model B
- IMX500 sensörlü Raspberry Pi Yapay Zeka Kamerası
Yazılım:
- Raspberry Pi İşletim Sistemi Kitap Kurdu
- IMX500 ürün yazılımı ve araçları (
sudo apt install imx500-all imx500-tools
) - Python için paketler
picamera2
(sudo apt install python3-opencv python3-munkres
)
IMX500'de YOLOv8 modellerinden nasıl bir performans bekleyebilirim?
Raspberry Pi Yapay Zeka Kamerası üzerinde Ultralytics kıyaslamalarına dayanmaktadır:
- YOLOv8n görüntü başına 66,66 ms çıkarım süresi elde eder
- COCO8 veri setinde mAP50-95 0,522
- Niceleme sonrasında sadece 2,9 MB model boyutu
Bu, IMX500 formatının uç yapay zeka uygulamaları için iyi doğruluğu korurken verimli gerçek zamanlı çıkarım sağladığını göstermektedir.
Dışa aktarılan modelimi Raspberry Pi AI Kameraya nasıl paketleyebilir ve dağıtabilirim?
IMX500 formatına dışa aktardıktan sonra:
-
Bir RPK dosyası oluşturmak için paketleyici aracını kullanın:
-
Picamera2'yi klonlayın ve yükleyin:
-
Oluşturulan RPK dosyasını kullanarak çıkarımı çalıştırın: