Link to this sectionتصدير Ambarella CVflow لنماذج Ultralytics YOLO#
هذا الدليل هو معاينة أولية ولم يكتمل أو يتم التحقق منه من قبل Ambarella بعد. قد تتغير الأوامر وتفاصيل التوافق وخطوات سير العمل مع توفر تعليقات البائع. لا يوجد حالياً هدف تصدير format="ambarella"؛ حيث يستخدم سير العمل تصدير ONNX القياسي (format="onnx") مدمجاً مع وسيطات amba_config/amba_chipset، ثم يتم تجميع نموذج ONNX الناتج إلى تنسيق AmbaPB القابل للنشر دون اتصال بالإنترنت باستخدام سلسلة أدوات CVflow الخاصة بـ Ambarella.
Deploying Ultralytics YOLO models on Ambarella SoCs requires a model format optimized for the CVflow® AI engine. This fork of Ultralytics integrates Ambarella's SpongeTorch compression toolkit directly into the train, validate, and export pipeline, so you can produce pruned and quantization-optimized models that run efficiently on Ambarella hardware. This guide outlines the current object detection workflow: compression-aware training, ONNX export, compilation with the CVflow toolchain, and inference with the compiled AmbaPB model.
يتطلب سير العمل هذا مكونات سلسلة أدوات Ambarella المملوكة (spongetorch ومترجم CVflow و cvflowbackend) غير المتوفرة على PyPI. سجل في منطقة مطوري Ambarella للحصول على وصول SDK عبر منصة مطوري Cooper™.
Link to this sectionما هو Ambarella CVflow؟#
تعد Ambarella شركة أشباه موصلات مقرها سانتا كلارا معروفة بأنظمة AI vision SoCs منخفضة الطاقة، والمستخدمة على نطاق واسع في كاميرات أمن IP وكاميرات لوحة القيادة والطائرات بدون طيار والروبوتات وأنظمة السيارات. تم بناء رقائقها حول CVflow®، وهي بنية معالجة متجهية عصبية مخصصة (مُسرّع الذكاء الاصطناعي على الرقاقة، أو NPU) التي توفر إنتاجية استدلال عالية بطاقة منخفضة جداً - حيث تشغل CV72S أحمال عمل الذكاء الاصطناعي لكاميرات الأمان بدقة 4K بأقل من 3 واط. يتم تجميع النماذج التي تم تدريبها في أطر عمل قياسية مثل PyTorch إلى تنسيق CVflow الأصلي باستخدام سلسلة أدوات Ambarella غير المتصلة بالإنترنت قبل النشر.
عائلات CVflow SoC الحالية وتطبيقاتها النموذجية:
| عائلة SoC | التطبيقات النموذجية |
|---|---|
| CV72 / CV75 | كاميرات أمن ذكاء اصطناعي بدقة 4K، كاميرات ذكية، رؤية صناعية |
| CV5 / CV52 | طائرات بدون طيار، كاميرات الحركة، روبوتات، أنظمة متعددة الكاميرات |
| CV3-AD | أنظمة مساعدة السائق المتقدمة (ADAS) للسيارات ووحدات التحكم في القيادة الذاتية |
| N1 | أجهزة الذكاء الاصطناعي التوليدي المحلية وأجهزة تحليل الفيديو متعددة التدفق |
Link to this sectionلماذا يتم نشر YOLO على Ambarella؟#
- الأداء لكل واط: تم تصميم CVflow SoCs للذكاء الاصطناعي المتطور الذي يعمل دائماً، حيث تقوم بتشغيل اكتشاف الكائنات في الوقت الفعلي ضمن ميزانيات طاقة مناسبة للكاميرا.
- Compression-aware training: SpongeTorch applies pruning and quantization-aware optimization during training, so the model learns to stay accurate while becoming NPU-friendly.
- التحقق من المضيف بدقة البت: يعمل نموذج AmbaPB المجمع عبر
predict/valالخاص بـ Ultralytics على محطة عملك تماماً كما سيعمل على الرقاقة، بحيث يمكنك قياس mAP المكمم قبل لمس الأجهزة. - خط أنابيب الكاميرا المتكامل: تجمع Ambarella SoCs بين محرك الذكاء الاصطناعي وISP ومشفرات الفيديو، مما يجعلها حلاً بشريحة واحدة لكاميرات الذكاء الاصطناعي.
Link to this sectionنظرة عامة على سير العمل#
يحتوي خط الأنابيب على أربع مراحل:
- التدريب الواعي بالضغط — تدرب باستخدام تكوين SpongeKit (
amba_config) بحيث تطبق SpongeTorch التقليم/التكميم تدريجياً أثناء التدريب. - تصدير ONNX — قم بتصدير نقطة التحقق المضغوطة باستخدام نفس
amba_config، مع الحفاظ على هيكل الضغط في رسم ONNX البياني. - تجميع CVflow — قم بتجميع نموذج ONNX إلى ملف AmbaPB باستخدام سلسلة أدوات CVflow.
- الاستدلال والتحقق — قم بتشغيل نموذج
*.ambapb.ckpt.onnxالمجمع عبرpredict/valالخاص بـ Ultralytics عبر خلفية AmbaPB، ثم انشره على اللوحة.
يمكن استبدال تدريب SpongeTorch والتصدير الواعي بـ SpongeTorch بتصدير ONNX عادي إذا كنت لا تحتاج إلى تحسينات وقت التدريب الخاصة بـ SpongeTorch (انظر التصدير بدون SpongeTorch).
Link to this sectionالمتطلبات الأساسية#
Link to this sectionالتثبيت#
قم بتثبيت هذا الفرع من Ultralytics، ثم قم بتثبيت عجلات سلسلة أدوات Ambarella من توزيع SDK:
!!! تلميح "التثبيت"
# 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 موقع cvflowbackend من خلال أمر tv2 الخاص بسلسلة أدوات CVflow (tv2 -libpath cvflowbackend)، لذا يجب تثبيت سلسلة الأدوات وأن تكون على PATH الخاص بك قبل تشغيل الاستدلال أو التحقق باستخدام النماذج المجمعة.
Link to this sectionملف تكوين SpongeKit#
يتم تشغيل SpongeTorch بواسطة ملف تكوين SpongeKit (تنسيق نص بروتوكول، .prototxt) الذي يحدد عمليات الضغط المراد تطبيقها: أهداف ندرة التقليم، وإعدادات التكميم، وجدول الضغط. احصل على تكوينات أمثلة ووثائق المخطط المطابقة من إصدار Ambarella SDK الخاص بك. استخدم تكوين التدريب كلما احتاج التحقق إلى إعداد نموذج غير جاهز، واستخدم دائماً نفس التكوين عند تصدير نقطة تحقق مضغوطة.
Link to this sectionوسيطات Amba#
تتحكم وسيطتان في تكامل SpongeTorch عبر أوضاع train و val و export:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
amba_config | str | None | مسار تكوين SpongeKit الممرر إلى spongetorch.prepare()، مما يتيح التدريب الواعي بالضغط والتصدير الواعي بـ SpongeTorch. |
amba_chipset | str | None | اسم مجموعة الشرائح المستهدفة الممرر إلى spongetorch.set_target_chipset()، على سبيل المثال CV72. |
يضيف الفرع أيضاً وسيطة تصدير عامة:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
export_file | str | None | مسار/اسم مخرجات التصدير المخصص، على سبيل المثال '/tmp/model.onnx' أو 'model.onnx'. |
Link to this sectionالتدريب الواعي بالضغط#
درب (أو قم بضبط) نموذجك مع تمكين ضغط SpongeTorch:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(
data="coco8.yaml",
epochs=100,
amba_config="config.prototxt",
amba_chipset="CV72",
)عند تعيين amba_config، يقوم المدرب بتغليف النموذج والمُحسِّن بـ spongetorch.prepare() عند الإعداد. يتم تطبيق الضغط تدريجياً وفق جدول خطي، بحيث تتعلم الشبكة البقاء دقيقة مع أن تصبح متفرقة وصديقة للتكميم. تخزن نقطة التحقق المدربة حالة التفرع الخاصة بـ SpongeTorch (موترات _orig/_mask)، والتي تتطلبها خطوة التصدير لاحقاً. يتم نسخ ملف التكوين إلى دليل التشغيل كـ amba_config.prototxt لضمان إمكانية التكرار.
لا يتم حفظ best.pt و last.pt عمداً حتى يتجاوز جدول ضغط SpongeTorch end_step الخاص به — لن تكون نقطة التحقق المضغوطة جزئياً قابلة للاستخدام. تأكد من أن epochs طويلة بما يكفي ليكتمل الجدول في تكوينك؛ يبلغ السجل متى يبدأ حفظ نقطة التحقق. إذا انتهى التدريب قبل اكتمال الجدول، يتم حفظ الحقبة النهائية على أي حال مع تحذير، ولكن لا ينبغي نشر نقطة تحقق كهذه.
للحصول على أفضل دقة، قم أولاً بتدريب نموذجك بشكل طبيعي (أو ابدأ من نقطة تحقق مدربة مسبقاً)، ثم قم بتشغيل ضبط ضغط دقيق أقصر باستخدام amba_config على الأوزان المدربة.
Link to this sectionالتحقق من نقطة التحقق المضغوطة#
تحقق من الدقة قبل التجميع، باستخدام نفس التكوين:
yolo val model=runs/detect/train/weights/best.pt data=coco8.yaml \
amba_config=config.prototxt amba_chipset=CV72يقوم المدقق بإعادة تطبيق spongetorch.prepare() عند الحاجة ويعطل دمج Conv+BN بحيث يتم الحفاظ على هيكل الضغط. قارن mAP مقابل خط الأساس غير المضغوط الخاص بك؛ إذا كان انخفاض الدقة كبيراً جداً، قم بتعديل تكوين SpongeKit وأعد التدريب.
Link to this sectionالتصدير إلى ONNX#
قم بتصدير نقطة التحقق المضغوطة باستخدام نفس amba_config المستخدم في التدريب:
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")
model.export(
format="onnx",
amba_config="config.prototxt",
amba_chipset="CV72",
)يقوم المُصدِّر بإعادة بناء النموذج، وإعادة تطبيق spongetorch.prepare() مع تكوينك، وإعادة تحميل أوزان نقطة التحقق المتفرقة في الهيكل المُعد، والتتبع إلى ONNX مع تعطيل دمج Conv+BN — مما ينتج رسماً بيانياً بالشكل الذي يتوقعه مترجم CVflow بالضبط.
Link to this sectionالحفاظ على بيانات تعريف النموذج#
يضمن تصدير ONNX مهمة النموذج وأسماء الفئات والخطوة وحجم الإدخال في ملف ONNX، بينما تقرأ خلفية AmbaPB هذه المعلومات من ملف جانبي metadata.yaml بجوار النموذج المجمع. ما لم ينشئ مترجم CVflow الخاص بك هذا الملف الجانبي، استخرجه من نموذج ONNX قبل التجميع:
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 في نفس الدليل مثل ملف *.ambapb.ckpt.onnx أو *.ambapb.fastckpt.onnx المجمع.
- يجب أن تحتوي نقطة التحقق على حالة ضغط SpongeTorch. يؤدي تصدير نقطة تحقق عادية مع تعيين
amba_configإلى ظهور: "نقطة التحقق ليس لديها حالة تقليم SpongeTorch... استخدم نقطة تحقق مضغوطة من تدريب amba قبل التصدير." - يجب أن يطابق التكوين ذلك المستخدم أثناء التدريب، وإلا سيفشل تحميل الأوزان.
Link to this sectionالتجميع باستخدام سلسلة أدوات CVflow#
قم بتجميع نموذج ONNX المصدر لمجموعة الشرائح المستهدفة باستخدام مترجم CVflow من SDK، باتباع دليل التجميع الخاص بـ SDK. يقوم المترجم بتعيين الرسم البياني على محرك ذكاء اصطناعي CVflow (التكميم، الجدولة، تخطيط الذاكرة) وينتج ملف AmbaPB القابل للنشر.
لكي تتعرف Ultralytics على النموذج المجمع، يجب أن ينتهي اسم ملفه بـ .ambapb.ckpt.onnx أو .ambapb.fastckpt.onnx.
Link to this sectionتشغيل الاستدلال بالنموذج المجمع#
يتم تحميل نموذج AmbaPB المجمع مباشرة عبر واجهة برمجة تطبيقات Ultralytics — تكتشف AutoBackend لاحقة .ambapb وتوجه الاستدلال عبر cvflowbackend، لتنفيذ النموذج بدقة البت كما سيعمل على محرك الذكاء الاصطناعي:
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")هذا هو فحص الدقة النهائي قبل نشر الأجهزة، بما في ذلك جميع تأثيرات تكميم المترجم. إذا كان ملف metadata.yaml بجوار النموذج المجمع، فستقرأ الخلفية أسماء الفئات والخطوة ومعلومات المهمة منه. تستخدم الخلفية وضع استدلال CVflow acinf افتراضياً؛ قم بتعيين متغير البيئة ULTRALYTICS_AMBAPB_DEBUG=1 لتسجيل تفاصيل الإدخال/الإخراج لتصحيح الأخطاء.
Link to this sectionالنشر على اللوحة#
قم بتحميل النموذج المجمع على جهاز Ambarella الخاص بك باستخدام وقت تشغيل Ambarella SDK. يجب أن يطابق المعالجة المسبقة والمعالجة اللاحقة ما تم تجميع نموذج الاكتشاف لأجله: إدخال RGB letterboxed في نطاق 0–255 (تغذي خلفية Ultralytics AmbaPB النموذج المجمع بـ 0–255 RGB)، وفك تشفير اكتشاف YOLO القياسي على المخرجات. ارجع إلى وثائق نشر SDK لواجهات برمجة تطبيقات وقت التشغيل.
Link to this sectionالتصدير بدون SpongeTorch#
إذا كنت لا تحتاج إلى تحسينات التقليم والتكميم الواعي بالتدريب الخاصة بـ SpongeTorch، فإن خط أنابيب Ultralytics القياسي ينتج أيضاً نموذجاً قابلاً للتجميع بـ CVflow:
yolo export model=yolo26n.pt format=onnxقم بتجميع ONNX الناتج باستخدام سلسلة أدوات CVflow، التي تقوم بتكميم ما بعد التدريب بنفسها. يقايض هذا المسار بعض أداء NPU ودقة التكميم بسير عمل أبسط بدون تبعية spongetorch في وقت التدريب.
Link to this sectionتطبيقات العالم الحقيقي#
نماذج Ultralytics YOLO على Ambarella CVflow SoCs تشغل رؤية تعمل دائماً عند الحافة:
- كاميرات أمن الذكاء الاصطناعي: اكتشاف الأشخاص والمركبات في الوقت الفعلي على كاميرات IP بدقة 4K ضمن ميزانية طاقة أقل من 3 واط.
- الطائرات بدون طيار والروبوتات: اكتشاف الكائنات وتتبعها على متن الطائرة للملاحة والتفتيش والتسليم على رقائق من فئة CV5.
- السيارات: أحمال عمل إدراك ADAS مثل اكتشاف المشاة والمركبات على وحدات تحكم مجال CV3-AD.
- تحليلات الصناعة والتجزئة: عد الأشخاص متعدد التدفق، اكتشاف معدات الوقاية الشخصية، ومراقبة الرفوف على أجهزة الحافة.
Link to this sectionملخص#
حدد دليل المعاينة هذا سير العمل الحالي لنشر نماذج Ultralytics YOLO على Ambarella CVflow SoCs: التدريب الواعي بالضغط باستخدام SpongeTorch (amba_config/amba_chipset)، وتصدير ONNX لنقطة التحقق المضغوطة، والتجميع دون اتصال بـ AmbaPB مع سلسلة أدوات CVflow، والتحقق بدقة البت من النموذج المجمع عبر Ultralytics قبل نشر اللوحة.
لأهداف الذكاء الاصطناعي الأخرى عند الحافة، راجع أدلة Hailo، و Rockchip RKNN، و Sony IMX500، و Qualcomm QNN، و DEEPX، و Axelera ذات الصلة. للحصول على القائمة الكاملة لتنسيقات التصدير، تفضل بزيارة وثائق وضع التصدير و صفحة التكاملات.
Link to this sectionالأسئلة الشائعة#
Link to this sectionهل يمكنني تصدير نموذج YOLO مباشرة إلى تنسيق Ambarella باستخدام model.export()؟#
لا. لا يوجد هدف format="ambarella". قم بالتصدير إلى ONNX (اختيارياً مع ضغط SpongeTorch عبر amba_config)، ثم قم بتجميع نموذج ONNX إلى AmbaPB دون اتصال بالإنترنت باستخدام سلسلة أدوات CVflow الخاصة بـ Ambarella من SDK.
Link to this sectionأي رقائق Ambarella يمكنها تشغيل نماذج Ultralytics YOLO؟#
يمكن استهداف أي SoC قائم على CVflow مدعوم من سلسلة أدوات CVflow الخاصة بك، بما في ذلك عائلات CV72/CV75 لكاميرات الذكاء الاصطناعي، وCV5/CV52 للطائرات بدون طيار والروبوتات، وCV3-AD للسيارات. تقوم وسيطة amba_chipset بتكوين هدف تحسين SpongeTorch؛ اختر الهدف المطابق بشكل منفصل عند التجميع. تعتمد سلاسل مجموعة الشرائح المقبولة والتوافر على إصدار SDK المثبت.
Link to this sectionما هو SpongeTorch وهل أحتاجه؟#
SpongeTorch هو مجموعة أدوات ضغط النماذج من Ambarella، مدمجة في فرع Ambarella من Ultralytics للتقليم والتدريب الواعي بالتكميم. إنه اختياري: يمكن أيضاً تجميع تصدير ONNX عادي من Ultralytics باستخدام سلسلة أدوات CVflow باستخدام تكميم ما بعد التدريب، بتكلفة ما في أداء NPU ودقة التكميم.
Link to this sectionمن أين أحصل على Ambarella SDK وSpongeTorch وسلسلة أدوات CVflow؟#
إنها مملوكة وليست على PyPI. سجل في منطقة مطوري Ambarella لطلب الوصول إلى SDK؛ يتم شحن عجلات spongetorch و cvflowbackend ومترجم CVflow مع توزيع SDK.
Link to this sectionكيف أتحقق من دقة النموذج المجمع قبل النشر؟#
قم بتشغيل yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml مع تثبيت فرع Ambarella. تنفذ خلفية AmbaPB النموذج المجمع بدقة البت كما يعمل على محرك ذكاء اصطناعي CVflow، لذا فإن mAP المُبلغ عنه يتضمن جميع تأثيرات تكميم المترجم.