YOLO Vision 2026:

Ultralytics YOLO Modelleri için Ambarella CVflow Dışa Aktarımı#

Önizleme rehberi — henüz tedarikçi tarafından doğrulanmadı

Bu kılavuz erken bir önizlemedir ve henüz Ambarella tarafından tamamlanmamıştır veya doğrulanmamıştır. Satıcı geri bildirimleri geldikçe komutlar, uyumluluk ayrıntıları ve iş akışı adımları değişebilir. Şu anda doğrudan bir format="ambarella" dışa aktarma hedefi yoktur; iş akışı, standart ONNX dışa aktarımını (format="onnx") amba_config/amba_chipset argümanlarıyla birleştirir ve ardından ortaya çıkan ONNX modelini Ambarella'nın CVflow araç zinciriyle çevrimdışı olarak dağıtılabilir AmbaPB formatına derler.

Ultralytics YOLO modellerini Ambarella SoC'lerinde dağıtmak, CVflow® AI motoru için optimize edilmiş bir model formatı gerektirir. Bu Ultralytics çatalı, Ambarella'nın SpongeTorch sıkıştırma araç setini doğrudan eğitim, doğrulama ve dışa aktarma boru hattına entegre eder; böylece Ambarella donanımında verimli bir şekilde çalışan budanmış ve nicemleme için optimize edilmiş modeller üretebilirsiniz. Bu kılavuz, mevcut nesne algılama iş akışını özetlemektedir: sıkıştırma farkındalı eğitim, ONNX dışa aktarımı, CVflow araç zinciriyle derleme ve derlenmiş AmbaPB modeliyle çıkarım.

Not

Bu iş akışı, PyPI üzerinde bulunmayan tescilli Ambarella araç zinciri bileşenlerini (spongetorch, CVflow derleyicisi ve cvflowbackend) gerektirir. Cooper™ Geliştirici Platformu aracılığıyla SDK erişimi elde etmek için Ambarella Geliştirici Alanı'na kaydolun.

Ambarella CVflow nedir?#

Ambarella, IP güvenlik kameralarında, araç kameralarında, dronlarda, robotikte ve otomotiv sistemlerinde yaygın olarak kullanılan düşük güç tüketimli yapay zeka vizyonu SoC'leriyle tanınan Santa Clara merkezli bir yarı iletken şirketidir. Yongaları, çok düşük güçte yüksek çıkarım aktarım hızı sağlayan (CV72S, 4K güvenlik kamerası yapay zeka iş yüklerini 3 W altında çalıştırır) özel bir sinirsel vektör işleme mimarisi (çip üzerindeki yapay zeka hızlandırıcı veya NPU) olan CVflow® etrafında oluşturulmuştur. PyTorch gibi standart çerçevelerde eğitilen modeller, dağıtımdan önce Ambarella'nın çevrimdışı araç zinciriyle CVflow'un yerel formatına derlenir.

Mevcut CVflow SoC aileleri ve tipik uygulama alanları:

SoC ailesiTipik uygulamalar
CV72 / CV754K AI güvenlik kameraları, akıllı kameralar, endüstriyel görüntüleme
CV5 / CV52Dronlar, aksiyon kameraları, robotik, çok kameralı sistemler
CV3-ADOtomotiv ADAS ve otonom sürüş alan kontrolcüleri
N1Yerinde (on-premise) üretken AI ve çok akışlı video analitiği cihazları

Neden YOLO'yu Ambarella'da Dağıtmalısın?#

  • Watt başına performans: CVflow SoC'leri, kamera sınıfı güç bütçeleri dahilinde gerçek zamanlı nesne algılama çalıştırarak her zaman açık uç yapay zeka için tasarlanmıştır.
  • Sıkıştırma farkındalı eğitim: SpongeTorch, eğitim sırasında budama ve nicemleme farkındalı optimizasyon uygular; böylece model, NPU dostu olurken doğruluğunu korumayı öğrenir.
  • Bit-tam ana bilgisayar doğrulaması: Derlenmiş AmbaPB modeli, iş istasyonunuzda tam olarak çip üzerinde çalışacağı gibi Ultralytics predict/val aracılığıyla çalışır, böylece donanıma dokunmadan önce nicemlenmiş mAP değerini ölçebilirsiniz.
  • Entegre kamera hattı: Ambarella SoC'leri, AI motorunu bir ISP ve video kodlayıcılarla birleştirerek AI kameralar için tek çipli bir çözüm sunar.

İş Akışına Genel Bakış#

İş hattı dört aşamadan oluşur:

  1. Sıkıştırma farkındalı eğitim — SpongeTorch'un eğitim sırasında aşamalı olarak budama/nicemleme uygulaması için bir SpongeKit yapılandırmasıyla (amba_config) eğitin.
  2. ONNX dışa aktarımı — Sıkıştırma yapısını ONNX grafiğinde koruyarak sıkıştırılmış kontrol noktasını aynı amba_config ile dışa aktarın.
  3. CVflow derlemesi — ONNX modelini CVflow araç zinciri ile bir AmbaPB yapısına derle.
  4. Çıkarım ve doğrulama — Derlenmiş *.ambapb.ckpt.onnx modelini AmbaPB arka ucu aracılığıyla Ultralytics predict/val ile çalıştırın, ardından karta dağıtın.

SpongeTorch'un eğitim zamanı optimizasyonlarına ihtiyacınız yoksa, SpongeTorch eğitimi ve SpongeTorch farkındalı dışa aktarım, düz bir ONNX dışa aktarımı ile değiştirilebilir (bkz. SpongeTorch Olmadan Dışa Aktarma).

Ön koşullar#

Kurulum#

Bu Ultralytics çatalını yükleyin, ardından SDK dağıtımından Ambarella araç zinciri tekerleklerini (wheels) yükleyin:

!!! Tip "Kurulum"

# Install this Ultralytics fork from source
git clone https://github.com/Ambarella-Inc/ultralytics
cd ultralytics
git checkout amba_v8.4.46
pip install -e .

# Install Ambarella toolchain wheels from the SDK
pip install /path/to/spongetorch-*.whl
pip install /path/to/cvflowbackend-*.whl

AmbaPB çıkarım arka ucu, cvflowbackend öğesini CVflow araç zincirinin tv2 komutu (tv2 -libpath cvflowbackend) aracılığıyla bulur; bu nedenle, derlenmiş modellerle çıkarım veya doğrulama çalıştırmadan önce araç zinciri kurulmalı ve PATH üzerinde olmalıdır.

SpongeKit Yapılandırma Dosyası#

SpongeTorch, uygulanacak sıkıştırma geçişlerini tanımlayan bir SpongeKit yapılandırma dosyası (prototip metin formatı, .prototxt) tarafından yönlendirilir: budama seyreklik hedefleri, nicemleme ayarları ve sıkıştırma programı. Örnek yapılandırmaları ve ilgili şema belgelerini Ambarella SDK sürümünüzden edinin. Doğrulama, hazırlanmamış bir modeli hazırlaması gerektiğinde eğitim yapılandırmasını kullanın ve sıkıştırılmış bir kontrol noktasını dışa aktarırken her zaman aynı yapılandırmayı kullanın.

Amba Argümanları#

İki argüman, train, val ve export modları genelinde SpongeTorch entegrasyonunu kontrol eder:

ArgümanTipVarsayılanAçıklama
amba_configstrNonespongetorch.prepare() öğesine iletilen SpongeKit yapılandırmasının yolu. Sıkıştırma farkındalı eğitimi ve SpongeTorch farkındalı dışa aktarımı etkinleştirir.
amba_chipsetstrNonespongetorch.set_target_chipset() öğesine iletilen hedef yonga seti adı, ör. CV72.

Çatal ayrıca genel bir dışa aktarma argümanı ekler:

ArgümanTipVarsayılanAçıklama
export_filestrNoneÖzel dışa aktarma çıkış yolu/adı, ör. '/tmp/model.onnx' veya 'model.onnx'.

Sıkıştırma Farkındalı Eğitim#

Modelini SpongeTorch sıkıştırması etkinken eğit (veya ince ayar yap):

Kullanım
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco8.yaml",
    epochs=100,
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

amba_config ayarlandığında, eğitici kurulum sırasında modeli ve optimizatörü spongetorch.prepare() ile sarmalar. Sıkıştırma, adım programında aşamalı olarak uygulanır; böylece ağ seyrek ve nicemleme dostu hale gelirken doğruluğunu korumayı öğrenir. Eğitilen kontrol noktası, dışa aktarma adımının daha sonra gerektirdiği SpongeTorch'un seyrek durumunu (_orig/_mask tensörleri) depolar. Yapılandırma dosyası, yeniden üretilebilirlik için çalıştır dizinine amba_config.prototxt olarak kopyalanır.

Kontrol noktası denetimi

best.pt ve last.pt, SpongeTorch sıkıştırma programı end_step aşamasını geçene kasıtlı olarak kaydedilmez; yarı sıkıştırılmış bir kontrol noktası kullanılabilir olmaz. Yapılandırmanızdaki programın tamamlanması için epochs süresinin yeterince uzun olduğundan emin olun; günlük, kontrol noktası kaydının ne zaman başladığını bildirir. Eğitim program tamamlanmadan sona ererse, son epoch yine de bir uyarı ile kaydedilir, ancak böyle bir kontrol noktası dağıtılmamalıdır.

Sıfırdan eğitmek yerine ince ayar yap

En iyi doğruluk için, önce modelinizi normal şekilde eğitin (veya önceden eğitilmiş bir kontrol noktasından başlayın), ardından eğitilmiş ağırlıklar üzerinde amba_config ile daha kısa bir sıkıştırma ince ayarı çalıştırın.

Sıkıştırılmış Kontrol Noktasının Doğrulanması#

Aynı yapılandırmayı kullanarak derlemeden önce doğruluğu onayla:

Kullanım
yolo val model=runs/detect/train/weights/best.pt data=coco8.yaml \
  amba_config=config.prototxt amba_chipset=CV72

Doğrulayıcı, gerektiğinde spongetorch.prepare() öğesini yeniden uygular ve sıkıştırma yapısının korunması için Conv+BN birleştirmesini devre dışı bırakır. mAP değerini sıkıştırılmamış taban çizginizle karşılaştırın; doğruluk düşüşü çok büyükse, SpongeKit yapılandırmasını ayarlayın ve yeniden eğitin.

ONNX'e Dışa Aktar#

Sıkıştırılmış kontrol noktasını, eğitimde kullanılan aynı amba_config ile dışa aktarın:

Kullanım
from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")
model.export(
    format="onnx",
    amba_config="config.prototxt",
    amba_chipset="CV72",
)

Dışa aktarıcı modeli yeniden oluşturur, spongetorch.prepare() öğesini yapılandırmanızla yeniden uygular, seyrek kontrol noktası ağırlıklarını hazırlanan yapıya yeniden yükler ve Conv+BN birleştirmesi devre dışı bırakılmış olarak ONNX'e iz sürer; böylece CVflow derleyicisinin beklediği biçimde tam olarak bir grafik üretir.

Model Meta Verilerini Koru#

ONNX dışa aktarımı, model görevini, sınıf adlarını, adımı (stride) ve giriş boyutunu ONNX dosyasına gömer; AmbaPB arka ucu ise bu bilgileri derlenen modelin yanındaki bir metadata.yaml yan dosyasından okur. CVflow derleyiciniz bu yan dosyayı oluşturmuyorsa, derlemeden önce ONNX modelinden çıkarın:

import onnx

from ultralytics.utils import YAML

model = onnx.load("model.onnx")
YAML.save("metadata.yaml", {item.key: item.value for item in model.metadata_props})

metadata.yaml öğesini derlenmiş *.ambapb.ckpt.onnx veya *.ambapb.fastckpt.onnx dosyasıyla aynı dizinde tutun.

Uyarı
  • Kontrol noktası SpongeTorch sıkıştırma durumunu içermelidir. amba_config ayarlanmış düz bir kontrol noktasının dışa aktarılması şu hatayı verir: "Kontrol noktasında SpongeTorch budama durumu yok... Dışa aktarmadan önce amba eğitiminden sıkıştırılmış bir kontrol noktası kullanın."
  • Yapılandırma, eğitim sırasında kullanılanla eşleşmelidir, aksi takdirde ağırlık geri yükleme başarısız olur.

CVflow Araç Zinciri ile Derle#

SDK'nın derleme rehberini takip ederek, SDK'dan alınan CVflow derleyicisini kullanarak dışa aktarılan ONNX modelini hedef yonga setin için derle. Derleyici, grafiği CVflow AI motoru üzerinde eşleştirir (nicemleme, zamanlama, bellek planlama) ve dağıtılabilir AmbaPB yapısını üretir.

Not

Ultralytics'in derlenmiş modeli tanıması için dosya adı .ambapb.ckpt.onnx veya .ambapb.fastckpt.onnx ile bitmelidir.

Derlenmiş Model ile Çıkarım Çalıştır#

Derlenmiş AmbaPB modeli doğrudan Ultralytics API aracılığıyla yüklenir — AutoBackend .ambapb uzantısını algılar ve çıkarımı cvflowbackend üzerinden yönlendirerek modeli yapay zeka motorunda çalışacağı gibi bit-tam olarak yürütür:

Kullanım
from ultralytics import YOLO

model = YOLO("model.ambapb.ckpt.onnx")

# Inference
results = model("https://ultralytics.com/images/bus.jpg")

# Validation
metrics = model.val(data="coco8.yaml")

Bu, tüm derleyici nicemleme efektleri dahil olmak üzere donanım dağıtımından önceki son doğruluk kontrolüdür. Derlenmiş modelin yanında bir metadata.yaml dosyası bulunuyorsa, arka uç sınıf adlarını, adımı (stride) ve görev bilgilerini buradan okur. Arka uç varsayılan olarak CVflow çıkarım modunu acinf kullanır; hata ayıklama için giriş/çıkış ayrıntılarını günlüğe kaydetmek üzere ULTRALYTICS_AMBAPB_DEBUG=1 ortam değişkenini ayarlayın.

Karta Dağıt#

Ambarella SDK çalışma zamanını kullanarak derlenmiş modeli Ambarella cihazınıza yükleyin. Ön işleme ve son işleme, algılama modelinin derlendiği şeyle eşleşmelidir: 0–255 aralığında harf kutulu (letterboxed) RGB girişi (Ultralytics AmbaPB arka ucu derlenmiş modele 0–255 RGB besler) ve çıkışlarda standart YOLO algılama kod çözme. Çalışma zamanı API'leri için SDK dağıtım belgelerine bakın.

SpongeTorch Olmadan Dışa Aktarma#

SpongeTorch'un eğitim sırasındaki budama ve nicemleme farkındalı optimizasyonlarına ihtiyacın yoksa, standart Ultralytics iş hattı da CVflow ile derlenebilir bir model üretir:

Kullanım
yolo export model=yolo26n.pt format=onnx

Ortaya çıkan ONNX'i, eğitim sonrası nicemlemeyi kendi başına gerçekleştiren CVflow araç zinciriyle derleyin. Bu yol, eğitim zamanında hiçbir spongetorch bağımlılığı olmayan daha basit bir iş akışı karşılığında bazı NPU performansından ve nicemlenmiş doğruluktan ödün verir.

Gerçek Dünya Uygulamaları#

Ambarella CVflow SoC'lerindeki Ultralytics YOLO modelleri, uç noktada her zaman açık görüntülemeye güç sağlar:

  • AI güvenlik kameraları: 3 W altındaki güç bütçesiyle 4K IP kameralarda gerçek zamanlı kişi ve araç algılama.
  • Dronlar ve robotik: CV5 sınıfı çipler üzerinde navigasyon, denetim ve teslimat için yerleşik nesne algılama ve izleme.
  • Otomotiv: CV3-AD alan kontrolcüleri üzerinde yaya ve araç algılama gibi ADAS algılama iş yükleri.
  • Endüstriyel ve perakende analitiği: Uç cihazlarda çok akışlı insan sayma, kişisel koruyucu ekipman (PPE) algılama ve raf izleme.

Özet#

Bu önizleme kılavuzu, Ultralytics YOLO modellerini Ambarella CVflow SoC'lerinde dağıtmak için mevcut iş akışını özetlemiştir: SpongeTorch ile sıkıştırma farkındalı eğitim (amba_config/amba_chipset), sıkıştırılmış kontrol noktasının ONNX dışa aktarımı, CVflow araç zinciriyle AmbaPB'ye çevrimdışı derleme ve kart dağıtımından önce derlenmiş modelin bit-tam doğrulaması.

Diğer uç yapay zeka hedefleri için ilgili Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPX ve Axelera kılavuzlarına bakın. Dışa aktarma formatlarının tam listesi için Dışa aktarma modu belgelerini ve entegrasyonlar sayfasını ziyaret edin.

SSS#

  • Hayır. format="ambarella" hedefi yoktur. ONNX'e dışa aktarın (amba_config aracılığıyla isteğe bağlı olarak SpongeTorch sıkıştırmasıyla), ardından Ambarella'nın SDK'daki CVflow araç zinciriyle ONNX modelini çevrimdışı olarak AmbaPB'ye derleyin.

  • Yapay zeka kameraları için CV72/CV75 aileleri, dronlar ve robotik için CV5/CV52 ve otomotiv için CV3-AD dahil olmak üzere CVflow araç zinciriniz tarafından desteklenen herhangi bir CVflow tabanlı SoC hedef alınabilir. amba_chipset argümanı SpongeTorch'un optimizasyon hedefinin yapılandırılmasını sağlar; derleme sırasında eşleşen hedefi ayrı olarak seçin. Kabul edilen yonga seti dizeleri ve kullanılabilirlik, yüklü SDK sürümüne bağlıdır.

  • SpongeTorch, Ambarella'nın budama ve nicemleme farkındalı eğitim için Ultralytics'in Ambarella çatalına entegre edilmiş model sıkıştırma araç setidir. İsteğe bağlıdır: basit bir Ultralytics ONNX dışa aktarımı da NPU performansı ve nicemlenmiş doğruluktan biraz ödün vererek eğitim sonrası nicemleme ile CVflow araç zinciri kullanılarak derlenebilir.

  • Bunlar tescillidir ve PyPI üzerinde değildir. SDK erişimi istemek için Ambarella Geliştirici Alanı'na kaydolun; spongetorch ve cvflowbackend tekerlekleri (wheels) ve CVflow derleyicisi SDK dağıtımıyla birlikte gelir.

  • Ambarella çatalı kurulu durumdayken yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml komutunu çalıştırın. AmbaPB arka ucu, derlenmiş modeli CVflow yapay zeka motorunda çalışacağı gibi bit-tam olarak yürütür, bu nedenle bildirilen mAP tüm derleyici nicemleme efektlerini içerir.

Katkıda Bulunanlar

Yorumlar