Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO11 için Sony IMX500 Dışa Aktarma#

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

Raspberry Pi AI Camera gibi sınırlı hesaplama 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 sunarken minimum güç harcayacak şekilde tasarlanmıştır. Ultralytics YOLO11 modellerini yüksek hızlı ve düşük güç tüketen çıkarım için optimize etmeni sağlar. Bu kılavuzda, modellerini IMX500 formatına aktarma ve dağıtma sürecini adım adım anlatırken, modellerinin Raspberry Pi AI Camera üzerinde daha iyi performans göstermesini kolaylaştıracağız.

Raspberry Pi AI Camera with Sony IMX500 sensor

Link to this sectionNeden IMX500 Formatına Aktarmalısın?#

Sony'nin IMX500 Akıllı Görü Sensörü, uçta yapay zeka işleme süreçlerinde oyunun kurallarını değiştiren 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 aşılmasına yardımcı olur. Diğer sensörler yalnızca görüntü ve kareleri aktarırken, IMX500 çok daha fazlasını sunar. Verileri doğrudan sensör üzerinde işleyerek cihazların gerçek zamanlı olarak içgörü üretmesini sağlar.

Link to this sectionYOLO11 Modelleri için Sony IMX500 Dışa Aktarma#

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

IMX500, kuantize edilmiş modellerle çalışır. Kuantizasyon, doğruluktan fazla ödün vermeden modelleri daha küçük ve hızlı hale getirir. Uç bilişimin sınırlı kaynakları için idealdir; gecikmeyi azaltarak uygulamaların hızlı yanıt vermesini sağlar ve bulut bağımlılığı olmadan yerel veri işlemeye imkan tanır. Yerel işleme, veriler uzak bir sunucuya gönderilmediği için kullanıcı verilerini gizli ve güvende tutar.

IMX500 Temel Özellikleri:

  • Meta Veri Çıktısı: IMX500, yalnızca görüntü iletmek yerine hem görüntü hem de meta veri (çıkarım sonucu) çıkışı verebilir; ayrıca veri boyutunu en aza indirmek, bant genişliğini azaltmak ve maliyetleri düşürmek için yalnızca meta veri çıktısı da sağlayabilir.
  • Gizlilik Endişelerini Giderir: Verileri cihaz üzerinde işleyerek 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ğitimi Kılavuzumuzu, Veri Hazırlama Kılavuzumuzu ve Hiperparametre Ayarlama Kılavuzumuzu takip ederek YOLO11 modelinin dışa aktarma için hazır olduğundan emin ol.

Link to this sectionDesteklenen Görevler#

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

Desteklenen model varyantları

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

Link to this sectionKullanım Örnekleri#

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

IMX500 formatı Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. Çıkarım ve doğrulama Raspberry Pi AI Camera (IMX500) üzerinde çalışır.

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 Aktarma Kullanımı 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 Segmentasyonu
 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")
Doğrula
 from ultralytics import YOLO

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

 # Validate accuracy on the COCO8 dataset
 metrics = model.val(data="coco8.yaml")
Uyarı

Ultralytics paketi çalışma zamanında ek dışa aktarma bağımlılıkları yükler. Dışa aktarma komutunu ilk çalıştırdığında, düzgün çalışmasını sağlamak için konsolunu yeniden başlatman gerekebilir.

Link to this sectionDışa Aktarma Argümanları#

ArgümanTipVarsayı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 kuantizasyonunu etkinleştirir; modeli daha da sıkıştırarak ve minimum doğruluk kaybıyla çıkarımı hızlandırır, temel olarak uç cihazlar için kullanılır.
datastr'coco8.yaml'Kuantizasyon için gerekli olan veri kümesi yapılandırma dosyasının yolu (varsayılan: coco8.yaml).
fractionfloat1.0INT8 nicemleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Deneyler veya kaynakların sınırlı olduğu durumlar için yararlı olan tam veri kümesinin bir alt kümesinde kalibrasyona izin verir. INT8 etkinleştirildiğinde 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ı belirtir: GPU (device=0), CPU (device=cpu).
İpucu

CUDA destekli bir GPU üzerinde dışa aktarma yapıyorsan, daha hızlı dışa aktarma için lütfen device=0 argümanını geçir.

Dışa aktarma süreci hakkında daha fazla ayrıntı için dışa aktarma hakkındaki Ultralytics dokümantasyon sayfasına git.

Dışa aktarma işlemi, kuantizasyon doğrulaması için bir ONNX modeli ve <model-name>_imx_model adlı bir dizin oluşturacaktır. Bu dizin, modelin IMX500 donanımına dağıtımı için paketlenmesi gereken packerOut.zip dosyasını içerecektir. Ek olarak, <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

Link to this sectionDağıtımda IMX500 Dışa Aktarma Kullanımı#

Ultralytics YOLO11n modeli IMX500 formatına aktarıldıktan sonra, çıkarım için Raspberry Pi AI Camera cihazına dağıtılabilir.

Link to this sectionDonanım Gereksinimleri#

Aşağıdaki donanımlara 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-pin MIPI CSI konektörüne bağla ve Raspberry Pi'yi aç.

Link to this sectionYazılım Gereksinimleri#

Not

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

Adım: 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: IMX500 sensörünü çalıştırmak için gerekli olan IMX500 ürün yazılımını yükle.

sudo apt install imx500-all

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

sudo reboot

Adım: 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: aitrios-rpi-application-module-library örneklerinde bulunan aşağıdaki betikleri kullanarak YOLO11 nesne algılama, poz kestirimi, sınıflandırma ve segmentasyon ç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 FPS 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()

Link to this sectionKıyaslamalar#

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çümü ile gerçekleştirilmiştir.

ModelFormatBoyut (piksel)packerOut.zip Boyutu (MB)mAP50-95(B)Çıkarım süresi (ms/im)
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/im)
YOLOv8n-clsimx2242.30.250.533.31
YOLO11n-clsimx2242.30.250.41733.31
Not

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

Link to this sectionKaputun Altında Ne Var?#

Sony IMX500 YOLO model deployment workflow

Link to this sectionSony Model Sıkıştırma Araç Seti (MCT)#

Sony'nin Model Sıkıştırma Araç Seti (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 doğruluktan önemli ölçüde ödün vermeden model boyutunu ve hesaplama karmaşıklığını azaltmak için gelişmiş algoritmalar sağlar. MCT, özellikle modellerin kaynak kısıtlı cihazlarda dağıtımı için faydalıdır; verimli çıkarım ve düşük gecikme süresi sağlar.

Link to this sectionMCT'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 (batch normalization) gibi katmanları önceki katmanlara katlayarak modelleri daha verimli sürümlere dönüştürür.
  2. Kuantizasyon Parametre Arama: Ortalama Kare Hatası (Mean-Square-Error), Kırpmama (No-Clipping) ve Ortalama Mutlak Hata (Mean-Average-Error) 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üzensiz 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.

Link to this sectionKuantizasyon#

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ıklı 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ı da destekler:

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

Link to this sectionYapısal Budama#

MCT, belirli donanım mimarileri için tasarlanmış yapısal, donanım duyarlı model budamayı sunar. Bu teknik, SIMD gruplarını budayarak hedef platformun Tek Komut, Çoklu Veri (SIMD) yeteneklerinden yararlanır. Bu yöntem, ağırlık belleği kullanımı için hedefli kaynak kullanımı amacıyla 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.

Link to this sectionIMX500 Dönüştürücü Aracı (Derleyici)#

IMX500 Dönüştürücü Aracı, modellerin Sony'nin IMX500 sensörü (örneğin, Raspberry Pi AI Camera) üzerinde dağıtımı için 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 nicelemesini (quantization) takip eden dışa aktarma prosedürü, temel verileri ve cihaza özel 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.

Link to this sectionGerçek Dünya Kullanım Durumları#

IMX500 formatına dışa aktarma, endüstriler genelinde geniş bir uygulama alanına sahiptir. İşte bazı örnekler:

  • Uçta Yapay Zeka ve IoT: Düşük güç tüketen cihazlarda gerçek zamanlı işlemenin kritik olduğu dronlar veya güvenlik kameralarında nesne tespitini etkinleştirin.
  • Giyilebilir Cihazlar: Sağlık takibi yapan giyilebilir cihazlarda küçük ölçekli yapay zeka işleme için optimize edilmiş modelleri dağıtın.
  • Akıllı Şehirler: Daha hızlı işleme ve minimum gecikme ile trafik izleme ve güvenlik analizi için IMX500 ile dışa aktarılmış YOLO11 modellerini kullanın.
  • Perakende Analitiği: Optimize edilmiş modelleri satış noktası sistemlerinde veya akıllı raflarda dağıtarak mağaza içi izlemeyi iyileştirin.

Link to this sectionSonuç#

Ultralytics YOLO11 modellerini Sony'nin IMX500 formatına dışa aktarmak, modellerinizi IMX500 tabanlı kameralarda verimli çıkarım için dağıtmanıza olanak tanır. 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.

Link to this sectionSSS#

Link to this sectionBir YOLO11 modelini Raspberry Pi AI Camera için IMX500 formatına nasıl dışa aktarırım?#

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

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.

Link to this sectionUçta yapay zeka dağıtımı için IMX500 formatını kullanmanın temel faydaları nelerdir?#

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

  • Çip üzerinde yapay zeka işleme, gecikmeyi ve güç tüketimini azaltır
  • Sadece görüntüler yerine hem görüntü hem de meta veri (çıkarım sonucu) çıktısı verir
  • Buluta bağımlılık olmadan verileri yerel olarak işleyerek gelişmiş gizlilik sağlar
  • Zamana duyarlı uygulamalar için ideal gerçek zamanlı işleme yetenekleri
  • Kaynak kısıtlı cihazlarda verimli model dağıtımı için optimize edilmiş niceleme

Link to this sectionIMX500 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ız 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 üretici yazılımı ve araçları (sudo apt install imx500-all)

Link to this sectionIMX500 üzerinde YOLO11 modellerinden nasıl bir performans bekleyebilirim?#

Raspberry Pi AI Camera üzerindeki Ultralytics kıyaslamalarına dayanarak:

  • YOLO11n, görüntü başına 58.82ms çıkarım süresine ulaşır
  • COCO128 veri kümesinde 0.517 mAP50-95 değeri
  • Nicelemeden sonra sadece 2.2MB model boyutu

Bu, IMX500 formatının uçta yapay zeka uygulamaları için iyi bir doğruluk seviyesini korurken verimli gerçek zamanlı çıkarım sağladığını gösterir.

Yorumlar