Link to this sectionUltralytics YOLO Modelleri için Ambarella CVflow Dışa Aktarımı#
Bu rehber erken bir önizlemedir ve Ambarella tarafından henüz tamamlanmamış veya doğrulanmamıştır. Komutlar, uyumluluk detayları ve iş akışı adımları, tedarikçi geri bildirimi geldikçe değişebilir. Şu anda format="ambarella" şeklinde bir dışa aktarma hedefi bulunmamaktadır; iş akışı, standart ONNX dışa aktarımını (format="onnx") amba_config/amba_chipset argümanlarıyla birleştirerek kullanır ve ardından ortaya çıkan ONNX modelini Ambarella'nın CVflow araç zinciri ile ç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. Ultralytics'in bu çatalı, Ambarella'nın SpongeTorch sıkıştırma araç setini doğrudan eğitim, doğrulama ve dışa aktarma süreçlerine entegre eder; böylece Ambarella donanımında verimli bir şekilde çalışan, budanmış ve nicemleme (quantization) ile optimize edilmiş modeller üretebilirsin. Bu rehber mevcut nesne algılama iş akışını özetlemektedir: sıkıştırma farkındalı eğitim, ONNX dışa aktarımı, CVflow araç zinciri ile derleme ve derlenmiş AmbaPB modeli ile çıkarım.
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 almak için Ambarella Geliştirici Bölgesi'ne kaydol.
Link to this sectionAmbarella CVflow nedir?#
Ambarella, düşük güç tüketen AI görüntüleme SoC'leriyle tanınan, Santa Clara merkezli bir yarı iletken şirketidir; ürünleri IP güvenlik kameraları, araç içi kameralar, dronlar, robotik ve otomotiv sistemlerinde yaygın olarak kullanılmaktadır. Çipleri, çok düşük güç tüketiminde yüksek çıkarım verimliliği sağlayan özel bir sinirsel vektör işleme mimarisi (çip üzerindeki AI hızlandırıcı veya NPU) olan CVflow® üzerine inşa edilmiştir — örneğin CV72S, 4K güvenlik kamerası AI iş yüklerini 3 W altında çalıştırır. 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 ailesi | Tipik uygulamalar |
|---|---|
| CV72 / CV75 | 4K AI güvenlik kameraları, akıllı kameralar, endüstriyel görüntüleme |
| CV5 / CV52 | Dronlar, aksiyon kameraları, robotik, çok kameralı sistemler |
| CV3-AD | Otomotiv ADAS ve otonom sürüş alan kontrolcüleri |
| N1 | Yerinde (on-premise) üretken AI ve çok akışlı video analitiği cihazları |
Link to this sectionNeden YOLO'yu Ambarella'da Dağıtmalısın?#
- Watt başına performans: CVflow SoC'leri, her zaman açık uç (edge) AI için tasarlanmıştır ve kamera seviyesindeki güç bütçeleri içinde gerçek zamanlı nesne algılama çalıştırı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 hale gelirken doğruluğunu korumayı öğrenir.
- Bit-tam ana bilgisayar doğrulaması: Derlenmiş AmbaPB modeli, iş istasyonunda tam olarak çip üzerinde çalışacağı gibi Ultralytics
predict/valsüreçlerinden geçer; bu sayede donanıma dokunmadan önce nicemlenmiş mAP değerini ölçebilirsin. - 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.
Link to this sectionİş Akışına Genel Bakış#
İş hattı dört aşamadan oluşur:
- Sıkıştırma farkındalı eğitim — bir SpongeKit yapılandırması (
amba_config) ile eğit; böylece SpongeTorch eğitim sırasında budama/nicemlemeyi aşamalı olarak uygular. - ONNX dışa aktarımı — sıkıştırılmış kontrol noktasını aynı
amba_configile dışa aktar, sıkıştırma yapısını ONNX grafiğinde koru. - CVflow derlemesi — ONNX modelini CVflow araç zinciri ile bir AmbaPB yapısına derle.
- Çıkarım ve doğrulama — derlenmiş
*.ambapb.ckpt.onnxmodelini Ultralyticspredict/valüzerinden AmbaPB arka ucu ile çalıştır, ardından karta dağıt.
SpongeTorch'un eğitim sırasındaki optimizasyonlarına ihtiyacın yoksa, SpongeTorch eğitimi ve SpongeTorch farkındalı dışa aktarım süreçleri basit bir ONNX dışa aktarımı ile değiştirilebilir (bkz: SpongeTorch Olmadan Dışa Aktarma).
Link to this sectionÖn koşullar#
Link to this sectionKurulum#
Bu Ultralytics çatalını yükle, ardından SDK dağıtımından Ambarella araç zinciri tekerlerini (wheels) yükle:
!!! 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-*.whlAmbaPB çıkarım arka ucu, cvflowbackend'i CVflow araç zincirinin tv2 komutu (tv2 -libpath cvflowbackend) aracılığıyla bulur; bu nedenle derlenmiş modellerle çıkarım veya doğrulama yapmadan önce araç zinciri yüklü olmalı ve PATH değişkeninde bulunmalıdır.
Link to this sectionSpongeKit Yapılandırma Dosyası#
SpongeTorch, uygulanacak sıkıştırma geçişlerini tanımlayan bir SpongeKit yapılandırma dosyası (protobuf-metin formatı, .prototxt) tarafından yönetilir: budama seyrelik hedefleri, nicemleme ayarları ve sıkıştırma programı. Örnek yapılandırmaları ve eşleşen şema dokümantasyonunu Ambarella SDK sürümünden al. Doğrulama işlemi hazırlanmamış bir modeli hazırlamayı gerektirdiğinde eğitim yapılandırmasını kullan ve sıkıştırılmış bir kontrol noktasını dışa aktarırken her zaman aynı yapılandırmayı kullan.
Link to this sectionAmba Argümanları#
train, val ve export modlarında SpongeTorch entegrasyonunu kontrol eden iki argüman vardır:
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
amba_config | str | None | spongetorch.prepare()'a 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_chipset | str | None | spongetorch.set_target_chipset()'e iletilen hedef yonga seti adı, örn. CV72. |
Çatal ayrıca genel bir dışa aktarma argümanı ekler:
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
export_file | str | None | Özel dışa aktarma çıktı yolu/adı, örn. '/tmp/model.onnx' veya 'model.onnx'. |
Link to this sectionSıkıştırma Farkındalı Eğitim#
Modelini SpongeTorch sıkıştırması etkinken eğit (veya ince ayar yap):
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 optimize ediciyi spongetorch.prepare() ile sarar. Sıkıştırma, bir adım programı üzerinde 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ı, tekrarlanabilirlik için çalışma dizinine amba_config.prototxt olarak kopyalanır.
best.pt ve last.pt, SpongeTorch sıkıştırma programı end_step değerini geçene kadar kasıtlı olarak kaydedilmez — yarı sıkıştırılmış bir kontrol noktası kullanılamaz. Yapılandırmandaki programın tamamlanması için epochs değerinin yeterince uzun olduğundan emin ol; kayıtlar, kontrol noktası kaydetme işleminin ne zaman başladığını bildirir. Eğitim program tamamlanmadan biterse, son dönem yine de bir uyarıyla kaydedilir, ancak böyle bir kontrol noktası dağıtılmamalıdır.
En iyi doğruluk için, önce modelini normal şekilde eğit (veya önceden eğitilmiş bir kontrol noktasından başla), ardından eğitilmiş ağırlıklar üzerinde amba_config ile daha kısa bir sıkıştırma ince ayarı çalıştır.
Link to this sectionSıkıştırılmış Kontrol Noktasının Doğrulanması#
Aynı yapılandırmayı kullanarak derlemeden önce doğruluğu onayla:
yolo val model=runs/detect/train/weights/best.pt data=coco8.yaml \
amba_config=config.prototxt amba_chipset=CV72Doğrulayıcı, gerektiğinde spongetorch.prepare()'ı yeniden uygular ve sıkıştırma yapısının korunması için Conv+BN birleşimini devre dışı bırakır. mAP değerini sıkıştırılmamış referansınla karşılaştır; eğer doğruluk düşüşü çok fazlaysa, SpongeKit yapılandırmasını ayarla ve yeniden eğit.
Link to this sectionONNX'e Dışa Aktar#
Sıkıştırılmış kontrol noktasını, eğitimde kullanılan aynı amba_config ile dışa aktar:
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, yapılandırmanla spongetorch.prepare()'ı tekrar uygular, seyrek kontrol noktası ağırlıklarını hazırlanan yapıya geri yükler ve Conv+BN birleşimi devre dışıyken ONNX'e iz sürer (trace) — CVflow derleyicisinin beklediği tam biçimde bir grafik oluşturur.
Link to this sectionModel 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 bilgiyi derlenmiş modelin yanındaki bir metadata.yaml dosyasından okur. CVflow derleyicin bu yan dosyayı oluşturmuyorsa, derlemeden önce ONNX modelinden çıkar:
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 dosyasını derlenmiş *.ambapb.ckpt.onnx veya *.ambapb.fastckpt.onnx dosyasıyla aynı dizinde tut.
- Kontrol noktası SpongeTorch sıkıştırma durumunu içermelidir.
amba_configayarlı halde düz bir kontrol noktasını dışa aktarmak şunu tetikler: "Checkpoint has no SpongeTorch pruning state... Use a compressed checkpoint from amba training before export." - 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.
Link to this sectionCVflow 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.
Ultralytics'in derlenmiş modeli tanıması için dosya adı .ambapb.ckpt.onnx veya .ambapb.fastckpt.onnx ile bitmelidir.
Link to this sectionDerlenmiş Model ile Çıkarım Çalıştır#
Derlenmiş AmbaPB modeli doğrudan Ultralytics API'si üzerinden yüklenir — AutoBackend .ambapb son ekini algılar ve çıkarımı cvflowbackend aracılığıyla yönlendirerek modeli tam olarak AI motorunda çalışacağı şekilde bit-bazında yürütür:
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, donanım dağıtımından önceki son doğruluk kontrolüdür ve tüm derleyici nicemleme etkilerini içerir. Eğer derlenmiş modelin yanında bir metadata.yaml dosyası bulunuyorsa, arka uç sınıf adlarını, adım ve görev bilgilerini oradan okur. Arka uç varsayılan olarak CVflow çıkarım modu acinf'i kullanır; hata ayıklama için giriş/çıkış detaylarını kaydetmek istersen ULTRALYTICS_AMBAPB_DEBUG=1 ortam değişkenini ayarla.
Link to this sectionKarta Dağıt#
Derlenmiş modeli Ambarella SDK çalışma zamanını kullanarak Ambarella cihazına yükle. Ön işleme ve son işleme, algılama modelinin derlendiği koşullarla eşleşmelidir: 0–255 aralığında letterbox edilmiş RGB girişi (Ultralytics AmbaPB arka ucu, derlenmiş modele 0–255 RGB besler) ve çıktılar üzerinde standart YOLO algılama kod çözme işlemi. Çalışma zamanı API'leri için SDK dağıtım dokümantasyonuna başvur.
Link to this sectionSpongeTorch 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:
yolo export model=yolo26n.pt format=onnxOrtaya çıkan ONNX'i, kendi başına eğitim sonrası nicemleme gerçekleştiren CVflow araç zinciri ile derle. Bu yol, eğitim sırasında spongetorch bağımlılığı olmayan daha basit bir iş akışı karşılığında NPU performansı ve nicemlenmiş doğruluktan bir miktar ödün verir.
Link to this sectionGerç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.
Link to this sectionÖzet#
Bu önizleme rehberi, Ultralytics YOLO modellerini Ambarella CVflow SoC'lerinde dağıtmak için mevcut iş akışını özetledi: 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ç zinciri ile AmbaPB'ye çevrimdışı derleme ve kart dağıtımından önce Ultralytics aracılığıyla derlenmiş modelin bit-tam doğrulaması.
Diğer uç AI hedefleri için ilgili Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPX ve Axelera rehberlerine bak. Dışa aktarma formatlarının tam listesi için Dışa aktarma modu dokümantasyonunu ve entegrasyonlar sayfasını ziyaret et.
Link to this sectionSSS#
Link to this sectionYOLO modelini model.export() ile doğrudan Ambarella formatına dışa aktarabilir miyim?#
Hayır. format="ambarella" hedefi yoktur. ONNX'e dışa aktar (isteğe bağlı olarak amba_config ile SpongeTorch sıkıştırmasıyla), ardından ONNX modelini SDK'dan gelen Ambarella'nın CVflow araç zinciri ile çevrimdışı olarak AmbaPB'ye derle.
Link to this sectionHangi Ambarella çipleri Ultralytics YOLO modellerini çalıştırabilir?#
AI kameralar için CV72/CV75 aileleri, dronlar ve robotik için CV5/CV52 ve otomotiv için CV3-AD dahil olmak üzere, CVflow araç zincirin tarafından desteklenen herhangi bir CVflow tabanlı SoC hedeflenebilir. amba_chipset argümanı SpongeTorch'un optimizasyon hedefini yapılandırır; derleme sırasında eşleşen hedefi ayrıca seç. Kabul edilen yonga seti dizeleri ve kullanılabilirlik, yüklü SDK sürümüne bağlıdır.
Link to this sectionSpongeTorch nedir ve ona ihtiyacım var mı?#
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.
Link to this sectionAmbarella SDK, SpongeTorch ve CVflow araç zincirini nereden edinebilirim?#
Bunlar tescillidir ve PyPI'da bulunmazlar. SDK erişimi talep etmek için Ambarella Geliştirici Bölgesi'ne kaydol; spongetorch ve cvflowbackend tekerleri ile CVflow derleyicisi SDK dağıtımı ile birlikte gelir.
Link to this sectionDerlenmiş modelin doğruluğunu dağıtmadan önce nasıl kontrol ederim?#
Ambarella çatalı yüklüyken yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml komutunu çalıştır. AmbaPB arka ucu, derlenmiş modeli tam olarak CVflow AI motorunda çalıştığı gibi bit-bazında yürütür, bu nedenle bildirilen mAP tüm derleyici nicemleme etkilerini içerir.