İçeriğe geç

Sony IMX500 için Dışa Aktarma Ultralytics YOLOv8

Bu kılavuz, Ultralytics YOLOv8 modellerinin Sony IMX500 sensöre 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.

Raspberry Pi Yapay Zeka Kamerası

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 gelinmesine 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 AI Kamera üzerinde 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")
# Export a YOLOv8n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolov8n.pt format=imx

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='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:

AnahtarDeğerAçıklama
formatimxDışa aktarılacak format (imx)
int8TrueModel için INT8 nicemlemeyi etkinleştirin (varsayılan: True)
imgsz640Model 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:

  1. Raspberry Pi 5 veya Raspberry Pi 4 Model B
  2. 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.

sudo apt update && sudo apt full-upgrade

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.

sudo apt install imx500-all imx500-tools

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.

sudo apt install python3-opencv python3-munkres

Adım 4: Değişikliklerin yürürlüğe girmesi için Raspberry Pi'yi yeniden başlatın

sudo reboot

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

imx500-package -i <path to packerOut.zip> -o <output folder>

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

Raspberry Pi Yapay Zeka Kamerasında Çıkarım

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

ModelBiçimDurumBoyut (MB)mAP50-95(B)Çıkarım süresi (ms/im)
YOLOv8nimx2.90.52266.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?

IMX500 dağıtımı

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:

  1. Grafik Optimizasyonları: Toplu normalleştirme gibi katmanları önceki katmanlara katlayarak modelleri daha verimli sürümlere dönüştürür.
  2. 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.
  3. 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.
  4. 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:

  1. 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)
  2. 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)
  3. 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:

  1. Power-of-Two (donanım dostu)
  2. Simetrik
  3. Ü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 nicelleştirmeyi 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 AI Camera'daki 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:

  1. Bir RPK dosyası oluşturmak için paketleyici aracını kullanın:

    imx500-package -i <path to packerOut.zip> -o <output folder>
    
  2. Picamera2'yi klonlayın ve yükleyin:

    git clone -b next https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Oluşturulan RPK dosyasını kullanarak çıkarımı çalıştırın:

    python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --labels <path to labels.txt>
    
📅 Created 8 days ago ✏️ Updated 6 days ago

Yorumlar