Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics 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 sınırlı 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 sunarken minimum güç tüketecek şekilde tasarlanmıştır. Ultralytics YOLO11 modellerini yüksek hızlı ve düşük güç tüketen çıkarım işlemleri için optimize etmeni sağlar. Bu kılavuzda, modellerini IMX500 formatına dışa aktarıp dağıtman için sana yol göstereceğiz ve Raspberry Pi AI Camera üzerinde iyi performans göstermelerini kolaylaştıracağız.

Raspberry Pi AI Camera with Sony IMX500 sensor

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

Sony'nin IMX500 Akıllı Görü Sensörü, uçta 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ü 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 iletirken, IMX500 ise tüm hikayeyi anlatır. 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 Aktarımı#

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

IMX500, kuantize edilmiş modellerle çalışır. Kuantizasyon, doğruluk kaybı olmadan modelleri daha küçük ve hızlı hale getirir. Uç bilişimin sınırlı kaynakları için idealdir; gecikmeyi azaltarak ve buluta bağımlılık olmadan yerel düzeyde hızlı veri işlemeye olanak tanıyarak uygulamaların hızlı yanıt vermesini sağlar. Yerel işleme, kullanıcı verilerinin uzak bir sunucuya gönderilmediği için gizli ve güvende kalmasını da sağlar.

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 ve veri boyutunu en aza indirmek, bant genişliğini azaltmak ve maliyetleri düşürmek için yalnızca meta veri çıkışı 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ı almak için, Model Eğitimi Kılavuzu, Veri Hazırlama Kılavuzu ve Hiperparametre Ayarlama Kılavuzu adımlarını izleyerek YOLO11 modelinin dışa aktarıma hazır olduğundan emin ol.

Link to this sectionDesteklenen Görevler#

Şu anda, IMX500 formatına yalnızca aşağıdaki görevleri içeren modelleri 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 desteklenmemektedir.

Link to this sectionKullanım Örnekleri#

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

IMX500 formatı Dışa Aktarma (Export), Tahmin (Predict) ve Doğrulama (Validate) 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 için lütfen Dağıtımda IMX500 Dışa Aktarımı Kullanımı bölümüne git.

Nesne Tespiti (Object Detection)
 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 (Classification)
 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)
Örnekleme (Instance Segmentation)
 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 kez çalıştırdığında, düzgün çalıştığından emin olmak 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 doğruluk kaybını en aza indirerek, özellikle uç cihazlarda çıkarımı hızlandırır.
datastr'coco8.yaml'Kuantizasyon için gerekli olan veri kümesi yapılandırma dosyasına giden yol (varsayılan: coco8.yaml).
fractionfloat1.0INT8 nicemleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Deneyler için veya kaynaklar sınırlı olduğunda kullanışlı olan, tam veri kümesinin bir alt kümesinde kalibrasyon yapmaya olanak tanır. INT8 etkinleştirildiğinde belirtilmezse, tüm veri kümesi kullanılacaktır.
nmsboolFalseDışa aktarılan modele NMS (Non-Maximum Suppression) 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ı kullan.

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ında dağıtılması için 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

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

Ultralytics YOLO11n modelini IMX500 formatına aktardı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ıma sahip olduğundan emin ol:

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

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

Link to this sectionYazılım Gereksinimleri#

Not

Bu kılavuz, 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 aygıt 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ü kitaplığını 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 tespiti, poz tahmini, 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 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#

Aşağıdaki YOLOv8n, YOLO11n, YOLOv8n-pose, YOLO11n-pose, YOLOv8n-cls ve YOLO11n-cls karşılaştırmaları, hız ve doğruluk ölçümleriyle imx model formatı kullanılarak Raspberry Pi AI Camera üzerinde Ultralytics ekibi tarafından 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 karşılaştırmalar için doğrulama; tespit modellerinde COCO128 veri kümesi, poz tahmini modellerinde COCO8-Pose veri kümesi ve sınıflandırma modellerinde ImageNet10 veri kümesi kullanılarak yapılmıştır.

Link to this sectionKamera Arkasında Neler Var?#

Sony IMX500 YOLO model deployment workflow

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

Sony Model Sıkıştırma Araç Seti (MCT), derin öğrenme modellerini kuantizasyon ve budama (pruning) yoluyla optimize etmek için kullanılan 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, modelleri kaynak kısıtlı cihazlarda dağıtmak, verimli çıkarım sağlamak ve gecikmeyi azaltmak için özellikle kullanışlıdır.

Link to this sectionMCT Destekli Özellikler#

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

  1. Grafik Optimizasyonları: Batch normalization gibi katmanları önceki katmanlarla birleştirerek modelleri daha verimli sürümlere dönüştürür.
  2. Kuantizasyon Parametresi Arama: Ortalama Kare Hatası (Mean-Square-Error), Kırpmama (No-Clipping) ve Ortalama Ortalama 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üzeltme (Shift Negative Correction): Simetrik aktivasyon kuantizasyonundan kaynaklanan performans sorunlarını giderir.
    • Aykırı Değer Filtreleme (Outliers Filtering): Aykırı değerleri tespit etmek ve kaldırmak için z-puanını kullanır.
    • Kümeleme (Clustering): Daha iyi dağılım eşleşmesi için düzgün olmayan kuantizasyon ızgaralarından yararlanır.
    • Karma Hassasiyetli Arama (Mixed-Precision Search): 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 çeşitli kuantizasyon yöntemlerini destekler:

  1. Eğitim Sonrası Kuantizasyon (PTQ):
    • Keras ve PyTorch API'leri ile 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 ile kullanılabilir.
    • Karmaşıklık: Orta
    • Hesaplama Maliyeti: Makul (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ı destekler:

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

Link to this sectionYapısal Budama#

MCT, belirli donanım mimarileri için tasarlanmış yapısal, donanım uyumlu model budama yöntemini tanıtır. Bu teknik, SIMD gruplarını budayarak hedef platformun Tek Komut, Çoklu Veri (SIMD) yeteneklerinden yararlanır. Bu, ağırlık belleği kullanımı için hedeflenen kaynak kullanımına yönelik SIMD mimarisiyle uyumlu bir şekilde 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ünde (örneğin, Raspberry Pi AI Camera) 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 bunların belirtilen donanımla uyumlu olmasını ve verimli bir şekilde çalışmasını sağlar. Model kuantizasyonunu izleyen dışa aktarma prosedürü, temel verileri ve cihaza özel yapılandırmaları kapsayan ikili dosyaların oluşturulmasını içerir ve böylece 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 aktarım, endüstriler genelinde geniş bir uygulama alanına sahiptir. İşte bazı örnekler:

  • Uç Yapay Zeka ve IoT: Düşük güçlü cihazlarda gerçek zamanlı işlemenin kritik olduğu dronlarda veya güvenlik kameralarında nesne algılamayı etkinleştirin.
  • Giyilebilir Cihazlar: Sağlık izleme giyilebilir cihazlarında 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ı sistemlerine veya akıllı raflara dağıtarak mağaza içi izlemeyi geliş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ş kuantizasyon tekniklerinden yararlanarak, doğruluktan önemli ölçüde ödün vermeden model boyutunu küçültebilir ve çıkarım hızını iyileştirebilirsiniz.

Daha fazla bilgi ve ayrıntılı yönergeler için Sony'nin IMX500 web sitesine göz atı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'sini 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ç 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, gecikmeyi ve güç tüketimini azaltır
  • Yalnızca görüntüler 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 sağlar
  • 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ş kuantizasyon

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 aygıt yazılımı ve araçları (sudo apt install imx500-all)

Link to this sectionIMX500 üzerinde YOLO11 modellerinden ne tür bir performans bekleyebilirim?#

Ultralytics'in Raspberry Pi AI Camera üzerindeki kıyaslama testlerine göre:

  • YOLO11n, görüntü başına 58,82 ms çıkarım süresine ulaşır
  • COCO128 veri setinde 0,517 mAP50-95 değeri
  • Kuantizasyondan sonra sadece 2,2 MB model boyutu

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

Yorumlar