Ultralytics YOLO11 için Sony IMX500 Dışa Aktarımı

Bu kılavuz, Ultralytics YOLO11 modellerini Sony IMX500 sensörüne sahip Raspberry Pi AI Camera cihazlarına dışa aktarmayı ve dağıtmayı kapsar.

Raspberry Pi AI Camera gibi kısıtlı işlem gücüne sahip cihazlarda bilgisayarlı görü modelleri 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 sağlarken minimum güç tüketecek şekilde tasarlanmıştır. Ultralytics YOLO11 modellerini yüksek hızlı ve düşük güçlü çıkarım için optimize etmene olanak tanır. Bu kılavuzda, modellerini IMX500 formatına dışa aktarıp dağıtırken, Raspberry Pi AI Camera üzerinde iyi performans göstermelerini nasıl kolaylaştıracağını anlatacağız.

Raspberry Pi AI Camera with Sony IMX500 sensor

Neden IMX500 Formatına Dışa Aktarmalısın?

Sony'nin IMX500 Akıllı Görüntü Sensörü, uç yapay zeka işlemede çığır açan bir donanımdır. Çip üzerinde yapay zeka yeteneklerine sahip dünyanın ilk akıllı görüntü sensörüdür. Bu sensör, veri işleme darboğazları, gizlilik endişeleri ve performans sınırlamaları dahil olmak üzere uç yapay zekadaki birçok zorluğun üstesinden gelmeye yardımcı olur. Diğer sensörler sadece görüntü ve kareleri iletirken, IMX500 tam bir hikaye anlatır. Verileri doğrudan sensör üzerinde işleyerek cihazların gerçek zamanlı olarak içgörü üretmesini sağlar.

YOLO11 Modelleri için Sony IMX500 Dışa Aktarımı

IMX500, cihazların verileri buluta göndermeye gerek kalmadan doğrudan sensör üzerinde işlemesini sağlamak için tasarlanmıştır.

IMX500, kuantize edilmiş modellerle çalışır. Kuantizasyon, doğruluk oranından çok fazla ödün vermeden modelleri daha küçük ve hızlı hale getirir. Uç bilişimin kısıtlı kaynakları için idealdir; gecikmeyi azaltarak ve buluta bağımlı kalmadan yerel olarak hızlı veri işlemeye izin vererek uygulamaların hızlı yanıt vermesini sağlar. Yerel işleme, kullanıcı verilerini uzak bir sunucuya gönderilmediği için gizli ve güvende tutar.

IMX500 Temel Özellikleri:

  • Meta Veri Çıktısı: IMX500, sadece görüntü iletmek yerine hem görüntü hem de meta veri (çıkarım sonucu) çıktısı verebilir ve veri boyutunu küçültmek, bant genişliğini azaltmak ve maliyetleri düşürmek için yalnızca meta veri çıktısı verebilir.
  • Gizlilik Endişelerini Giderir: Verileri cihaz üzerinde işleyen IMX500, kişi sayma ve doluluk takibi gibi insan odaklı uygulamalar için ideal olan gizlilik endişelerini ortadan kaldırır.
  • Gerçek Zamanlı İşleme: Hızlı sensör içi 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 için Model Eğitim Kılavuzu, Veri Hazırlama Kılavuzu ve Hiperparametre Ayarlama Kılavuzu adımlarını izleyerek YOLO11 modelini dışa aktarıma hazır hale getirdiğinden emin ol.

Desteklenen Görevler

Şu anda, yalnızca aşağıdaki görevleri içeren modelleri IMX500 formatına dışa aktarabilirsin.

Desteklenen model varyantları

IMX dışa aktarımı, YOLOv8n ve YOLO11n (nano) için tasarlanmış ve test edilmiştir. Diğer mimariler ve model ölçekleri desteklenmez.

Kullanım Örnekleri

Bir Ultralytics YOLO11 modelini IMX500 formatına dışa aktar ve dışa aktarılan model ile çıkarım yap.

Not

Burada modelin beklendiği gibi çalıştığından emin olmak için çıkarım yapıyoruz. Ancak, Raspberry Pi AI Camera üzerinde dağıtım ve çıkarım yapmak için lütfen Dağıtımda IMX500 Dışa Aktarımını Kullanma bölümüne git.

Nesne Algılama
 from ultralytics import YOLO

 # Load a YOLO11n PyTorch model
 model = YOLO("yolo11n.pt")

 # Export the model
 model.export(format="imx", data="coco8.yaml")  # exports with PTQ quantization by default

 # Load the exported model
 imx_model = YOLO("yolo11n_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg")
Poz Tahmini
 from ultralytics import YOLO

 # Load a YOLO11n-pose PyTorch model
 model = YOLO("yolo11n-pose.pt")

 # Export the model
 model.export(format="imx", data="coco8-pose.yaml")  # exports with PTQ quantization by default

 # Load the exported model
 imx_model = YOLO("yolo11n-pose_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg")
Sınıflandırma
 from ultralytics import YOLO

 # Load a YOLO11n-cls PyTorch model
 model = YOLO("yolo11n-cls.pt")

 # Export the model
 model.export(format="imx", data="imagenet10")  # exports with PTQ quantization by default

 # Load the exported model
 imx_model = YOLO("yolo11n-cls_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg", imgsz=224)
Örnek Bölütleme
 from ultralytics import YOLO

 # Load a YOLO11n-seg PyTorch model
 model = YOLO("yolo11n-seg.pt")

 # Export the model
 model.export(format="imx", data="coco8-seg.yaml")  # exports with PTQ quantization by default

 # Load the exported model
 imx_model = YOLO("yolo11n-seg_imx_model")

 # Run inference
 results = imx_model("https://ultralytics.com/images/bus.jpg")
Uyarı

Ultralytics paketi, çalışma zamanında ek dışa aktarım bağımlılıklarını kurar. Dışa aktarım komutunu ilk çalıştırdığında, doğru çalıştığından emin olmak için konsolunu yeniden başlatman gerekebilir.

Dışa Aktarma Argümanları

ArgümanTürVarsayılanAçıklama
formatstr'imx'Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan model için hedef format.
imgszint veya tuple640Desired image size for the model input. Can be an integer for square images or a tuple (height, width) for specific dimensions.
int8boolTrueINT8 nicelemeyi etkinleştirerek modeli daha da sıkıştırır ve minimum doğruluk kaybıyla, öncelikle uç cihazlar için çıkarımı hızlandırır.
datastr'coco8.yaml'Niceleme (quantization) için gerekli olan dataset yapılandırma dosyasının yolu (varsayılan: coco8.yaml).
fractionfloat1.0INT8 niceleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Tam veri kümesinin bir alt kümesinde kalibrasyon yapmaya olanak tanır; bu, deneyler veya kaynaklar sınırlı olduğunda kullanışlıdır. INT8 etkinken belirtilmezse, veri kümesinin tamamı kullanılır.
nmsboolFalseDışa aktarılan modele Maksimum Olmayan Bastırma (NMS) ekler. True olduğunda, conf, iou ve agnostic_nms parametreleri de kabul edilir.
devicestrNoneDışa aktarma için cihazı belirler: GPU (device=0), CPU (device=cpu).
İpucu

CUDA destekli bir GPU üzerinde dışa aktarım yapıyorsan, daha hızlı bir dışa aktarım için lütfen device=0 bağımsız değişkenini kullan.

Dışa aktarma süreci hakkında daha fazla ayrıntı için dışa aktarma ile ilgili Ultralytics dokümantasyon sayfasını ziyaret et.

Dışa aktarım süreci, kuantizasyon doğrulaması için bir ONNX modeli ve <model-name>_imx_model adında bir dizin oluşturacaktır. Bu dizin, modeli IMX500 donanımında dağıtım için paketlemek adına gerekli olan packerOut.zip dosyasını içerecektir. Ayrıca, <model-name>_imx_model klasörü, modelle ilişkili tüm etiketleri listeleyen bir metin dosyası (labels.txt) içerecektir.

Klasör Yapısı
yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── model_imx.onnx
├── model_imx_MemoryReport.json
└── model_imx.pbtxt

Dağıtımda IMX500 Dışa Aktarımını Kullanma

Ultralytics YOLO11n modelini IMX500 formatına dışa aktardıktan sonra, çıkarım için Raspberry Pi AI Camera cihazına dağıtılabilir.

Donanım Gereksinimleri

Aşağıdaki donanıma sahip olduğundan emin ol:

  1. Raspberry Pi 5 veya Raspberry Pi 4 Model B
  2. Raspberry Pi AI Camera

Raspberry Pi AI kamerayı, Raspberry Pi üzerindeki 15 pinli MIPI CSI konektörüne bağla ve Raspberry Pi'yi aç.

Yazılım Gereksinimleri

Not

Bu kılavuz, bir Raspberry Pi 5 üzerinde çalışan Raspberry Pi OS Bookworm ile test edilmiştir.

Adım 1: Bir terminal penceresi aç ve Raspberry Pi yazılımını en son sürüme güncellemek için aşağıdaki komutları çalıştır.

sudo apt update && sudo apt full-upgrade

Adım 2: IMX500 sensörünü çalıştırmak için gerekli olan IMX500 aygıt yazılımını (firmware) yükle.

sudo apt install imx500-all

Adım 3: Değişikliklerin etkili olması için Raspberry Pi'yi yeniden başlat.

sudo reboot

Adım 4: Aitrios Raspberry Pi uygulama modülü kütüphanesini yükle.

pip install git+https://github.com/SonySemiconductorSolutions/aitrios-rpi-application-module-library.git

Adım 5: aitrios-rpi-application-module-library örneklerinde bulunan aşağıdaki betikleri kullanarak YOLO11 nesne algılama, poz kestirimi, sınıflandırma ve bölümleme işlemlerini çalıştır.

Not

Bu betikleri çalıştırmadan önce model_file ve labels.txt dizinlerini kendi ortamına göre değiştirdiğinden emin ol.

Python Betikleri
import numpy as np
from modlib.apps import Annotator
from modlib.devices import AiCamera
from modlib.models import COLOR_FORMAT, MODEL_TYPE, Model
from modlib.models.post_processors import pp_od_yolo_ultralytics

class YOLO(Model):
    """YOLO model for IMX500 deployment."""

    def __init__(self):
        """Initialize the YOLO model for IMX500 deployment."""
        super().__init__(
            model_file="yolo11n_imx_model/packerOut.zip",  # replace with proper directory
            model_type=MODEL_TYPE.CONVERTED,
            color_format=COLOR_FORMAT.RGB,
            preserve_aspect_ratio=False,
        )

        self.labels = np.genfromtxt(
            "yolo11n_imx_model/labels.txt",  # replace with proper directory
            dtype=str,
            delimiter="\n",
        )

    def post_process(self, output_tensors):
        """Post-process the output tensors for object detection."""
        return pp_od_yolo_ultralytics(output_tensors)

device = AiCamera(frame_rate=16)  # Optimal frame rate for maximum DPS of the YOLO model running on the AI Camera
model = YOLO()
device.deploy(model)

annotator = Annotator()

with device as stream:
    for frame in stream:
        detections = frame.detections[frame.detections.confidence > 0.55]
        labels = [f"{model.labels[class_id]}: {score:0.2f}" for _, score, class_id, _ in detections]

        annotator.annotate_boxes(frame, detections, labels=labels, alpha=0.3, corner_radius=10)
        frame.display()

Kıyaslamalar

Aşağıdaki YOLOv8n, YOLO11n, YOLOv8n-pose, YOLO11n-pose, YOLOv8n-cls ve YOLO11n-cls kıyaslamaları, Ultralytics ekibi tarafından Raspberry Pi AI Camera üzerinde imx model formatı kullanılarak hız ve doğruluk ölçümleriyle gerçekleştirilmiştir.

ModelFormatBoyut (piksel)packerOut.zip boyutu (MB)mAP50-95(B)Çıkarım süresi (ms/görüntü)
YOLOv8nimx6402.10.47058.79
YOLO11nimx6402.20.51758.82
YOLOv8n-poseimx6402.00.68758.79
YOLO11n-poseimx6402.10.78862.50
ModelFormatBoyut (piksel)packerOut.zip boyutu (MB)acc (top1)acc (top5)Çıkarım süresi (ms/görüntü)
YOLOv8n-clsimx2242.30.250.533.31
YOLO11n-clsimx2242.30.250.41733.31
Not

Yukarıdaki kıyaslamalar için doğrulama; algılama modelleri için COCO128 veri seti, poz kestirimi modelleri için COCO8-Pose veri seti ve sınıflandırma modelleri için ImageNet10 veri seti kullanılarak yapılmıştır.

İşin Mutfağında Ne Var?

Sony IMX500 YOLO model deployment workflow

Sony Model Sıkıştırma Araç Kiti (MCT)

Sony Model Sıkıştırma Araç Kiti (MCT), derin öğrenme modellerini kuantizasyon ve budama yoluyla optimize etmek için güçlü bir araçtır. Çeşitli kuantizasyon yöntemlerini destekler ve model boyutunu ve hesaplama karmaşıklığını, doğruluktan önemli ölçüde ödün vermeden azaltmak için gelişmiş algoritmalar sunar. MCT, modelleri kaynak kısıtlı cihazlarda dağıtmak, verimli çıkarım sağlamak ve gecikmeyi azaltmak için özellikle kullanışlıdır.

MCT'nin Desteklenen Özellikleri

Sony MCT, sinir ağı modellerini optimize etmek için tasarlanmış bir dizi özellik sunar:

  1. Grafik Optimizasyonları: Toplu normalleştirme (batch normalization) gibi katmanları önceki katmanlarla birleştirerek modelleri daha verimli versiyonlara dönüştürür.
  2. Kuantizasyon Parametresi Arama: Ortalama Karesel Hata (MSE), Kırpma Yok ve Ortalama Mutlak Hata gibi metrikleri kullanarak kuantizasyon gürültüsünü en aza indirir.
  3. Gelişmiş Kuantizasyon Algoritmaları:
    • Negatif Kaydırma Düzeltmesi: Simetrik aktivasyon kuantizasyonundan kaynaklanan performans sorunlarını ele alır.
    • 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şmesi için düzgün olmayan kuantizasyon ızgaraları kullanır.
    • Karma Hassasiyetli Arama: Hassasiyete bağlı olarak katman başına farklı kuantizasyon bit genişlikleri atar.
  4. Görselleştirme: Model performansı içgörülerini, kuantizasyon aşamalarını ve bit genişliği yapılandırmalarını gözlemlemek için TensorBoard'u kullan.

Kuantizasyon

MCT, model boyutunu küçültmek ve çıkarım hızını artırmak için birkaç kuantizasyon yöntemini destekler:

  1. Eğitim Sonrası Kuantizasyon (PTQ):
    • Keras ve PyTorch API'leri aracılığıyla kullanılabilir.
    • Karmaşıklık: Düşük
    • Hesaplama Maliyeti: Düşük (CPU dakikaları)
  2. Gradyan Tabanlı Eğitim Sonrası Kuantizasyon (GPTQ):
    • Keras ve PyTorch API'leri aracılığıyla kullanılabilir.
    • Karmaşıklık: Orta
    • Hesaplama Maliyeti: Orta (2-3 GPU saati)
  3. Kuantizasyon Farkındalı Eğitim (QAT):
    • Karmaşıklık: Yüksek
    • Hesaplama Maliyeti: Yüksek (12-36 GPU saati)

MCT ayrıca ağırlıklar ve aktivasyonlar için çeşitli kuantizasyon şemalarını destekler:

  1. İkinin Kuvveti (donanım dostu)
  2. Simetrik
  3. Tekdüze

Yapılandırılmış Budama

MCT, belirli donanım mimarileri için tasarlanmış, yapılandırılmış ve donanım farkındalı model budama yöntemi sunar. Bu teknik, SIMD gruplarını budayarak hedef platformun Tek Komut, Çoklu Veri (SIMD) yeteneklerinden yararlanır. Bu, ağırlık bellek ayak izinin hedeflenen kaynak kullanımı için SIMD mimarisiyle uyumlu olarak kanal kullanımını optimize ederken model boyutunu ve karmaşıklığını azaltır. 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ı, Sony'nin IMX500 sensöründe (örneğin, Raspberry Pi AI Kameraları) dağıtım için modellerin derlenmesine olanak tanıyan IMX500 araç setinin ayrılmaz bir parçasıdır. Bu araç, Ultralytics yazılımı aracılığıyla işlenen Ultralytics YOLO11 modellerinin geçişini kolaylaştırarak, belirtilen donanımla uyumlu olmalarını ve verimli bir şekilde çalışmalarını sağlar. Model kuantizasyonunu izleyen dışa aktarım prosedürü, temel verileri ve cihaza özgü yapılandırmaları kapsayan ikili dosyaların oluşturulmasını içerir ve Raspberry Pi AI Camera üzerindeki dağıtım sürecini basitleştirir.

Gerçek Dünya Kullanım Durumları

IMX500 formatına dışa aktarım, endüstriler genelinde geniş bir uygulanabilirliğe sahiptir. İşte bazı örnekler:

  • Uç Yapay Zeka ve IoT: Düşük güçlü cihazlarda gerçek zamanlı işlemenin şart olduğu drone'larda veya güvenlik kameralarında nesne algılamayı etkinleştir.
  • Giyilebilir Cihazlar: Sağlık takibi yapan giyilebilir cihazlarda küçük ölçekli yapay zeka işleme için optimize edilmiş modelleri dağıt.
  • Akıllı Şehirler: IMX500 ile dışa aktarılan YOLO11 modellerini, daha hızlı işleme ve minimum gecikme süresi ile trafik izleme ve güvenlik analizi için kullan.
  • Perakende Analitiği: Optimize edilmiş modelleri satış noktası sistemlerine veya akıllı raflara yerleştirerek mağaza içi izleme süreçlerini geliştir.

Sonuç

Ultralytics YOLO11 modellerini Sony'nin IMX500 formatına aktarmak, modellerini IMX500 tabanlı kameralar üzerinde verimli çıkarım yapmak için dağıtmanı sağlar. Gelişmiş niceleme tekniklerinden yararlanarak, model boyutunu küçültebilir ve doğruluktan önemli ölçüde ödün vermeden çıkarım hızını iyileştirebilirsin.

Daha fazla bilgi ve ayrıntılı yönergeler için Sony'nin IMX500 web sitesine göz at.

SSS

Bir YOLO11 modelini Raspberry Pi AI Camera için IMX500 formatına nasıl aktarırım?

Bir YOLO11 modelini IMX500 formatına aktarmak için Python API veya CLI komutunu kullan:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

Dışa aktarma işlemi, packerOut.zip dahil olmak üzere dağıtım için gerekli dosyaları içeren bir dizin oluşturacaktır.

Edge AI dağıtımı için IMX500 formatını kullanmanın temel faydaları nelerdir?

IMX500 formatı, edge dağıtımı için birkaç önemli avantaj sunar:

  • Çip üzerinde AI işleme, gecikmeyi ve güç tüketimini azaltır
  • Sadece görüntüleri değil, hem görüntüleri hem de meta verileri (çıkarım sonucu) çıktı olarak verir
  • Bulut bağımlılığı olmadan verileri yerel olarak işleyerek gizliliği artırır
  • Zamana duyarlı uygulamalar için ideal olan gerçek zamanlı işleme yetenekleri
  • 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 şunlara ihtiyacın olacak:

Donanım:

  • Raspberry Pi 5 veya Raspberry Pi 4 Model B
  • IMX500 sensörlü Raspberry Pi AI Camera

Yazılım:

  • Raspberry Pi OS Bookworm
  • IMX500 ürün yazılımı ve araçları (sudo apt install imx500-all)

IMX500 üzerindeki YOLO11 modellerinden nasıl bir performans bekleyebilirim?

Raspberry Pi AI Camera üzerindeki Ultralytics kıyaslamalarına göre:

  • YOLO11n, görüntü başına 62,50ms çıkarım süresine ulaşır
  • COCO128 veri setinde 0,492 mAP50-95 değeri
  • Nicelemeden sonra sadece 3,2MB olan model boyutu

Bu, IMX500 formatının edge AI uygulamaları için iyi bir doğruluğu korurken verimli gerçek zamanlı çıkarım sağladığını kanıtlıyor.

Yorumlar