Ultralytics YOLO Modelleri için Ambarella CVflow Dışa Aktarımı#
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.
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 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ı |
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/valaracı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:
- 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. - 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_configile dışa aktarın. - CVflow derlemesi — ONNX modelini CVflow araç zinciri ile bir AmbaPB yapısına derle.
- Çıkarım ve doğrulama — Derlenmiş
*.ambapb.ckpt.onnxmodelini AmbaPB arka ucu aracılığıyla Ultralyticspredict/valile ç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-*.whlAmbaPB çı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üman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
amba_config | str | None | spongetorch.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_chipset | str | None | spongetorch.set_target_chipset() öğesine iletilen hedef yonga seti adı, ör. 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 çı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):
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.
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.
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:
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() öğ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:
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.
- Kontrol noktası SpongeTorch sıkıştırma durumunu içermelidir.
amba_configayarlanmış 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.
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:
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:
yolo export model=yolo26n.pt format=onnxOrtaya çı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_configaracı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_chipsetargü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;
spongetorchvecvflowbackendtekerlekleri (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.yamlkomutunu ç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.