Ultralytics YOLO Modelleri için Ambarella CVflow Dışa Aktarımı#
Bu kılavuz erken bir önizlemedir ve henüz tamamlanmamış veya Ambarella tarafından doğrulanmamıştır. Üretici geri bildirimleri geldikçe komutlar, uyumluluk ayrıntıları ve iş akışı adımları değişebilir. Şu anda bir format="ambarella" dışa aktarma hedefi yoktur; iş akışı, standart ONNX dışa aktarımını (format="onnx") amba_config/amba_chipset bağımsız değişkenleriyle birlikte kullanır ve ardından ortaya çıkan ONNX modelini Ambarella'nın CVflow araç zinciriyle çevrimdışı olarak dağıtılabilir AmbaPB biçimine derler.
Ultralytics YOLO modellerini Ambarella SoC'lerinde dağıtmak, CVflow® AI motoru için optimize edilmiş bir model biçimi gerektirir. Ultralytics'in bu çatallaması, Ambarella'nın SpongeTorch sıkıştırma araç setini eğitim, doğrulama ve dışa aktarma işlem hattına doğrudan entegre eder; böylece Ambarella donanımında verimli şekilde çalışan budanmış ve niceleme için optimize edilmiş modeller üretebilirsin. Bu kılavuz, mevcut nesne algılama iş akışını açıklar: sıkıştırma farkındalıklı eğitim, ONNX dışa aktarımı, CVflow araç zinciriyle derleme ve derlenmiş AmbaPB modeliyle çıkarım.
Bu iş akışı, PyPI'da bulunmayan özel Ambarella araç zinciri bileşenleri (spongetorch, CVflow derleyicisi ve cvflowbackend) gerektirir. SDK erişimi elde etmek için Ambarella Developer Zone platformuna Cooper™ Developer Platform üzerinden kaydol.
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 AI görüntüleme SoC'leriyle tanınan Santa Clara merkezli bir yarı iletken şirketidir. Yongaları, özel bir sinirsel vektör işleme mimarisi olan CVflow® etrafında geliştirilmiştir; bu mimari, yonga üzerindeki AI hızlandırıcısı veya NPU'dur ve çok düşük güç tüketimiyle yüksek çıkarım kapasitesi sunar — CV72S, 4K güvenlik kamerası AI iş yüklerini 3 W'ın altında çalıştırır. PyTorch gibi standart çerçevelerle eğitilen modeller, dağıtımdan önce Ambarella'nın çevrimdışı araç zinciriyle CVflow'un yerel biçimine derlenir.
Mevcut CVflow SoC aileleri ve tipik uygulamaları:
| 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 denetleyicileri |
| N1 | Şirket içi üretken AI ve çok akışlı video analizi cihazları |
YOLO neden Ambarella'da dağıtılmalı?#
- Watt başına performans: CVflow SoC'leri sürekli açık uç AI için tasarlanmıştır ve kamera sınıfı güç bütçeleri içinde gerçek zamanlı nesne algılama çalıştırır.
- Sıkıştırma farkındalıklı eğitim: SpongeTorch, eğitim sırasında budama ve niceleme farkındalıklı optimizasyon uygular; böylece model, NPU için uygun hale gelirken doğruluğunu korumayı öğrenir.
- Bit düzeyinde kesin ana bilgisayar doğrulaması: Derlenmiş AmbaPB modeli, iş istasyonunda Ultralytics
predict/valüzerinden, yongada çalışacağı biçimin aynısıyla çalışır; böylece donanıma geçmeden önce nicelemeli mAP değerini ölçebilirsin. - Entegre kamera işlem hattı: Ambarella SoC'leri AI motorunu bir ISP ve video kodlayıcılarıyla birleştirerek AI kameraları için tek yongalı bir çözüm sunar.
İş Akışına Genel Bakış#
İşlem hattı dört aşamadan oluşur:
- Sıkıştırma farkındalıklı eğitim — SpongeTorch'un eğitim sırasında budama/nicelemeyi aşamalı olarak uygulaması için bir SpongeKit yapılandırmasıyla (
amba_config) eğitim yap. - ONNX dışa aktarımı — Sıkıştırılmış kontrol noktasını aynı
amba_configile dışa aktararak sıkıştırma yapısını ONNX grafiğinde koru. - CVflow derlemesi — ONNX modelini CVflow araç zinciriyle bir AmbaPB yapısına derle.
- Çıkarım ve doğrulama — Derlenmiş
*.ambapb.ckpt.onnxmodelini AmbaPB arka ucu üzerinden Ultralyticspredict/valile çalıştır, ardından karta dağıt.
SpongeTorch'un eğitimini ve SpongeTorch farkındalıklı dışa aktarımını, SpongeTorch'un eğitim sırasındaki optimizasyonlarına ihtiyacın yoksa düz bir ONNX dışa aktarımıyla değiştirebilirsin (SpongeTorch Olmadan Dışa Aktarma bölümüne bak).
Ön koşullar#
Kurulum#
Bu Ultralytics çatallamasını kur, ardından Ambarella araç zinciri wheel'lerini SDK dağıtımından 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 aracını CVflow araç zincirinin tv2 komutu (tv2 -libpath cvflowbackend) üzerinden bulur; bu nedenle derlenmiş modellerle çıkarım veya doğrulama yapmadan önce araç zinciri kurulmuş 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ıyla (protobuf metin biçimi, .prototxt) çalışır: budama seyrekli hedefleri, niceleme ayarları ve sıkıştırma zamanlaması. Örnek yapılandırmaları ve eşleşen şema belgelerini Ambarella SDK sürümünden edin. Doğrulama sırasında hazırlanmamış bir modelin hazırlanması gerekiyorsa eğitim yapılandırmasını kullan ve sıkıştırılmış bir kontrol noktası dışa aktarırken her zaman aynı yapılandırmayı kullan.
Amba Bağımsız Değişkenleri#
Üç bağımsız değişken, train, val ve export modlarında SpongeTorch entegrasyonunu denetler:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
amba_config | str | None | spongetorch.prepare() aracına aktarılan SpongeKit yapılandırmasının yolu. Sıkıştırma farkındalıklı eğitimi ve SpongeTorch farkındalıklı dışa aktarımı etkinleştirir. |
amba_chipset | str | None | spongetorch.set_target_chipset() aracına aktarılan hedef yonga seti adı; örneğin CV72. |
Çatallama ayrıca genel bir dışa aktarma bağımsız değişkeni ekler:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
export_file | str | None | Özel dışa aktarma çıktı yolu/adı; örneğin '/tmp/model.onnx' veya 'model.onnx'. |
Sıkıştırma Farkındalıklı Eğitim#
SpongeTorch sıkıştırması etkin olacak şekilde modelini 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 optimizer'ı spongetorch.prepare() ile sarar. Sıkıştırma, adım zamanlamasına göre aşamalı olarak uygulanır; böylece ağ, seyrek ve niceleme dostu hale gelirken doğruluğunu korumayı öğrenir. Eğitilen kontrol noktası, SpongeTorch'un seyrek durumunu (_orig/_mask tensörleri) depolar; dışa aktarma adımı daha sonra bunu gerektirir. Yeniden üretilebilirlik için yapılandırma dosyası çalıştırma dizinine amba_config.prototxt olarak kopyalanır.
best.pt ve last.pt, SpongeTorch sıkıştırma zamanlaması end_step değerini aşana kadar kasıtlı olarak kaydedilmez — yarı sıkıştırılmış bir kontrol noktası kullanılamaz. Yapılandırmandaki zamanlamanın tamamlanması için epochs değerinin yeterince uzun olduğundan emin ol; günlük, kontrol noktası kaydetmenin ne zaman başladığını bildirir. Eğitim zamanlama tamamlanmadan sona ererse son epoch 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ıyla başla), ardından eğitilmiş ağırlıklarla amba_config kullanarak daha kısa bir sıkıştırma ince ayarı çalıştır.
Sıkıştırılmış Kontrol Noktasını Doğrulama#
Derlemeden önce doğruluğu aynı yapılandırmayı kullanarak doğrula:
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ış temel modelinle karşılaştır; doğruluk kaybı çok büyükse SpongeKit yapılandırmasını ayarla ve yeniden eğit.
ONNX'e Dışa Aktarma#
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() öğesini yeniden uygular, seyrek kontrol noktası ağırlıklarını hazırlanmış yapıya yeniden yükler ve Conv+BN birleştirmesi devre dışı bırakılmış şekilde ONNX'e izler; böylece CVflow derleyicisinin beklediği tam biçimde bir grafik üretir.
Model Meta Verilerini Koruma#
ONNX dışa aktarımı model görevini, sınıf adlarını, stride değerini ve giriş boyutunu ONNX dosyasına gömer; AmbaPB arka ucu ise bu bilgileri derlenmiş modelin yanındaki bir metadata.yaml sidecar dosyasından okur. CVflow derleyicin bu sidecar dosyasını 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_configayarlanmış şekilde düz bir kontrol noktasını dışa aktarmak şu hatayı verir: "Checkpoint has no SpongeTorch pruning state... Use a compressed checkpoint from amba training before export." - Yapılandırma, eğitim sırasında kullanılan yapılandırmayla eşleşmelidir; aksi halde ağırlıkların yeniden yüklenmesi başarısız olur.
CVflow Araç Zinciriyle Derleme#
Dışa aktarılan ONNX modelini, SDK'daki CVflow derleyicisini kullanarak hedef yonga setin için derle ve SDK'nın derleme kılavuzunu izle. Derleyici, grafiği CVflow AI motoruna eşler (niceleme, 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ş Modelle Çıkarım Çalıştırma#
Derlenmiş AmbaPB modeli, Ultralytics API üzerinden doğrudan yüklenir — AutoBackend, .ambapb son ekini algılar ve çıkarımı cvflowbackend üzerinden yönlendirerek modeli AI motorunda çalışacağı biçimin aynısıyla çalıştırı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 niceleme etkilerini içeren, donanıma dağıtımdan önceki son doğruluk kontrolüdür. Derlenmiş modelin yanında bir metadata.yaml dosyası varsa arka uç sınıf adlarını, stride değerini ve görev bilgilerini buradan okur. Arka uç varsayılan olarak CVflow çıkarım modu acinf değerini kullanır; hata ayıklama amacıyla giriş/çıkış ayrıntılarını günlüğe kaydetmek için ULTRALYTICS_AMBAPB_DEBUG=1 ortam değişkenini ayarla.
Karta Dağıtma#
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 ayarlarla eşleşmelidir: 0–255 aralığında letterbox uygulanmış RGB girişi (Ultralytics AmbaPB arka ucu, derlenmiş modele 0–255 RGB besler) ve çıktılarda standart YOLO algılama kod çözümü. Çalışma zamanı API'leri için SDK dağıtım belgelerine başvur.
SpongeTorch Olmadan Dışa Aktarma#
SpongeTorch'un eğitim sırasındaki budama ve niceleme farkındalıklı optimizasyonlarına ihtiyacın yoksa standart Ultralytics işlem hattı da CVflow ile derlenebilir bir model üretir:
yolo export model=yolo26n.pt format=onnxOrtaya çıkan ONNX'i, eğitim sonrası nicelemeyi kendisi gerçekleştiren CVflow araç zinciriyle derle. Bu yol, eğitim sırasında spongetorch bağımlılığı olmadan daha basit bir iş akışı karşılığında bir miktar NPU performansından ve nicelemeli doğruluktan ödün verir.
Gerçek Dünya Uygulamaları#
Ambarella CVflow SoC'leri üzerindeki Ultralytics YOLO modelleri uçta sürekli açık görüntü zekâsı sağlar:
- AI güvenlik kameraları: 4K IP kameralarda, 3 W'ın altındaki güç bütçesi içinde gerçek zamanlı kişi ve araç algılama.
- Dronlar ve robotik: CV5 sınıfı yongalarda navigasyon, denetim ve teslimat için yerleşik nesne algılama ve izleme.
- Otomotiv: CV3-AD alan denetleyicilerinde yaya ve araç algılama gibi ADAS algı iş yükleri.
- Endüstriyel ve perakende analitiği: Uç cihazlarda çok akışlı kişi sayımı, KKD 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ı açıkladı: SpongeTorch (amba_config/amba_chipset) ile sıkıştırma farkındalıklı eğitim, sıkıştırılmış kontrol noktasının ONNX'e aktarılması, CVflow araç zinciriyle AmbaPB'ye çevrimdışı derleme ve karta dağıtımdan önce derlenmiş modelin Ultralytics üzerinden bit düzeyinde kesin doğrulanması.
Diğer uç AI hedefleri için ilgili Hailo, Rockchip RKNN, Sony IMX500, Qualcomm QNN, DEEPX ve Axelera kılavuzlarına bak. Dışa aktarma biçimlerinin tam listesi için Dışa aktarma modu belgelerini ve entegrasyonlar sayfasını ziyaret et.
SSS#
Hayır.
format="ambarella"hedefi yoktur. ONNX'e aktar, (isteğe bağlı olarakamba_configüzerinden SpongeTorch sıkıştırması kullanabilirsin), ardından ONNX modelini SDK'daki Ambarella CVflow araç zinciriyle çevrimdışı olarak AmbaPB'ye derle.CVflow araç zincirin tarafından desteklenen CVflow tabanlı tüm SoC'ler hedeflenebilir; buna AI kameraları için CV72/CV75 aileleri, dronlar ve robotik için CV5/CV52 ve otomotiv için CV3-AD dahildir.
amba_chipsetbağımsız değişkeni 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.SpongeTorch, budama ve niceleme farkındalıklı eğitim için Ultralytics'in Ambarella çatallamasına entegre edilmiş Ambarella model sıkıştırma araç setidir. İsteğe bağlıdır: düz bir Ultralytics ONNX dışa aktarımı da eğitim sonrası niceleme kullanılarak CVflow araç zinciriyle derlenebilir; ancak NPU performansı ve nicelemeli doğruluk bir miktar düşebilir.
Bunlar özeldir ve PyPI'da bulunmaz. SDK erişimi talep etmek için Ambarella Developer Zone platformuna kaydol;
spongetorchvecvflowbackendwheel'leri ile CVflow derleyicisi SDK dağıtımıyla birlikte gelir.Ambarella çatallaması kurulu halde
yolo val model=model.ambapb.ckpt.onnx data=your_data.yamlkomutunu çalıştır. AmbaPB arka ucu, derlenmiş modeli CVflow AI motorunda çalışacağı biçimin aynısıyla çalıştırır; bu nedenle bildirilen mAP tüm derleyici niceleme etkilerini içerir.