رؤية YOLO لعام 2026:

تصدير Ambarella CVflow لنماذج Ultralytics YOLO#

دليل معاينة — لم يتم التحقق منه من قبل البائع بعد

هذا الدليل هو معاظرة مبكرة ولم يكتمل أو يتم التحقق منه بواسطة Ambarella بعد. قد تتغير الأوامر وتفاصيل التوافق وخطوات سير العمل كلما توفرت تعليقات من المورد. لا يوجد حالياً هدف تصدير format="ambarella"؛ حيث يستخدم سير العمل تصدير ONNX القياسي (format="onnx") مقترناً بوسيطات amba_config/amba_chipset، ثم يترجم نموذج ONNX الناتج إلى تنسيق AmbaPB القابل للنشر دون اتصال بالإنترنت باستخدام سلسلة أدوات CVflow الخاصة بـ Ambarella.

يتطلب نشر نماذج Ultralytics YOLO على شرائح Ambarella المتكاملة (SoCs) تنسيق نموذج محسناً لمحرك الذكاء الاصطناعي CVflow®. تدمج هذه النسخة المعدلة من Ultralytics مجموعة أدوات الضغط SpongeTorch الخاصة بـ Ambarella مباشرة في مسار التدريب والتحقق والتصدير، بحيث يمكنك إنتاج نماذج محسنة بالتقليم والتكميم تعمل بكفاءة على أجهزة Ambarella. يوضح هذا الدليل سير عمل اكتشاف الكائنات الحالي: التدريب الواعي بالضغط، وتصدير ONNX، والتجميع باستخدام سلسلة أدوات CVflow، والاستدلال باستخدام نموذج AmbaPB المجمع.

ملاحظة

يتطلب سير العمل هذا مكونات سلسلة أدوات Ambarella الاحتكارية (spongetorch، ومترجم CVflow، وcvflowbackend) غير المتوفرة على PyPI. قم بالتسجيل في منطقة مطوري Ambarella للحصول على إمكانية الوصول إلى حزمة تطوير البرمجيات (SDK) من خلال منصة مطوري Cooper™.

ما هو Ambarella CVflow؟#

Ambarella هي شركة أشباه موصلات مقرها سانتا كلارا وتشتهر بشرائح الرؤية بالذكاء الاصطناعي منخفضة الطاقة، والتي تُستخدم على نطاق واسع في كاميرات الأمان عبر بروتوكول الإنترنت، وكاميرات لوحة القيادة، والطائرات بدون طيار، والروبوتات، وأنظمة السيارات. تم بنيت رقائقها حول CVflow®، وهي بنية معالجة متجهية عصبية مخصصة (مسرع الذكاء الاصطناعي على الرقيبة، أو وحدة المعالجة العصبية NPU) توفر إنتاجية عالية للاستدلال باستهلاك منخفض جداً للطاقة - حيث يشغل CV72S أحمال عمل الذكاء الاصطناعي لكاميرات المراقبة بدقة 4K بأقل من 3 واط. يتم تجميع النماذج المدربة في أطر عمل قياسية مثل PyTorch إلى تنسيق CVflow الأصلي باستخدام سلسلة أدوات Ambarella غير المتصلة بالإنترنت قبل النشر.

عائلات CVflow SoC الحالية وتطبيقاتها النموذجية:

عائلة SoCالتطبيقات النموذجية
CV72 / CV75كاميرات أمن ذكاء اصطناعي بدقة 4K، كاميرات ذكية، رؤية صناعية
CV5 / CV52طائرات بدون طيار، كاميرات الحركة، روبوتات، أنظمة متعددة الكاميرات
CV3-ADأنظمة مساعدة السائق المتقدمة (ADAS) للسيارات ووحدات التحكم في القيادة الذاتية
N1أجهزة الذكاء الاصطناعي التوليدي المحلية وأجهزة تحليل الفيديو متعددة التدفق

لماذا يتم نشر YOLO على Ambarella؟#

  • الأداء لكل واط: تم تصميم رقائق CVflow المتكاملة للذكاء الاصطناعي على الحافة الذي يعمل دائماً، حيث تقوم بتشغيل اكتشاف الكائنات في الوقت الفعلي ضمن ميزانيات الطاقة الخاصة بكاميرات المراقبة.
  • التدريب الواعي بالضغط: يطبق SpongeTorch التقليم والتحسين الواعي بالتكميم أثناء التدريب، بحيث يتعلم النموذج الحفاظ على دقته مع أن يصبح متوافقاً مع وحدة المعالجة العصبية NPU.
  • التحقق على المضيف بدقة البتات: يعمل نموذج AmbaPB المجمع من خلال predict/val لـ Ultralytics على محطتك تماماً كما سيتم تنفيذه على الشريحة، بحيث يمكنك قياس مقياس الخريطة المتوسط mAP المكمم قبل لمس الأجهزة.
  • خط أنابيب الكاميرا المتكامل: تجمع Ambarella SoCs بين محرك الذكاء الاصطناعي وISP ومشفرات الفيديو، مما يجعلها حلاً بشريحة واحدة لكاميرات الذكاء الاصطناعي.

نظرة عامة على سير العمل#

يحتوي خط الأنابيب على أربع مراحل:

  1. التدريب الواعي بالضغط — التدريب باستخدام تكوين SpongeKit (amba_config) بحيث يطبق SpongeTorch التقليم/التكميم بشكل تدريجي أثناء التدريب.
  2. تصدير ONNX — تصدير نقطة التحقق المضغوطة بنفس amba_config، مع الحفاظ على هيكل الضغط في مخطط ONNX.
  3. تجميع CVflow — قم بتجميع نموذج ONNX إلى ملف AmbaPB باستخدام سلسلة أدوات CVflow.
  4. الاستدلال والتحقق — تشغيل نموذج *.ambapb.ckpt.onnx المجمع عبر predict/val لـ Ultralytics عبر الواجهة الخلفية لـ AmbaPB، ثم النشر على اللوحة.

يمكن استبدال تدريب SpongeTorch والتصدير الواعي لـ SpongeTorch بتصدير ONNX عادي إذا لم تكن بحاجة إلى تحسينات وقت التدريب لـ SpongeTorch (راجع التصدير بدون SpongeTorch).

المتطلبات الأساسية#

التثبيت#

قم بتثبيت نسخة Ultralytics هذه، ثم قم بتثبيت حزم تعريفات (wheels) سلسلة أدوات 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 من خلال أمر سلسلة أدوات CVflow المسمى tv2 (tv2 -libpath cvflowbackend)، لذا يجب تثبيت سلسلة أدوات وتواجدها على مسار PATH قبل تشغيل الاستدلال أو التحقق باستخدام النماذج المجمعة.

ملف تكوين SpongeKit#

يتم تشغيل SpongeTorch بواسطة ملف تكوين SpongeKit (بتنسيق نص بروتوباف، .prototxt) يحدد عمليات الضغط المراد تطبيقها: أهداف متفرقة التقليم، وإعدادات التكميم، وجدول الضغط. احصل على تكوينات أمثلة وثائق المخطط المطابقة من إصدار حزمة تطوير البرمجيات SDK الخاص بـ Ambarella. استخدم تكوين التدريب كلما احتجب التحقق لإعداد نموذج غير معداد، واستخدم دائماً نفس التكون عند تصدير نقطة تحقق مضغوطة.

وسيطات Amba#

تتحكم وسيطتان في تكامل SpongeTorch عبر أوضاع train، وval، وexport:

الوسيطالنوعالافتراضيالوصف
amba_configstrNoneمسار تكوين SpongeKit الذي يتم تمريره إلى spongetorch.prepare(). يمكن التدريب الواعي بالضغط والتصدير الواعي لـ SpongeTorch.
amba_chipsetstrNoneاسم مجموعة الشرائح المستهدفة الذي يتم تمريره إلى spongetorch.set_target_chipset()، على سبيل المثال CV72.

يضيف الفرع أيضاً وسيطة تصدير عامة:

الوسيطالنوعالافتراضيالوصف
export_filestrNoneمسار/اسم مخصص لمخرج التصدير، على سبيل المثال '/tmp/model.onnx' أو 'model.onnx'.

التدريب الواعي بالضغط#

درب (أو قم بضبط) نموذجك مع تمكين ضغط 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 على الأوزان المدربة.

التحقق من نقطة التحقق المضغوطة#

تحقق من الدقة قبل التجميع، باستخدام نفس التكوين:

الاستخدام
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 وأعد التدريب.

التصدير إلى 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.

الحفاظ على بيانات تعريف النموذج#

يقوم تصدير ONNX بتضمين مهمة النموذج، وأسماء الفئات، والخطوة (stride), وحجم الإدخال في ملف 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 إلى ظهور الخطأ: "Checkpoint has no SpongeTorch pruning state... Use a compressed checkpoint from amba training before export."
  • يجب أن يطابق التكوين ذلك المستخدم أثناء التدريب، وإلا سيفشل تحميل الأوزان.

التجميع باستخدام سلسلة أدوات CVflow#

قم بتجميع نموذج ONNX المصدر لمجموعة الشرائح المستهدفة باستخدام مترجم CVflow من SDK، باتباع دليل التجميع الخاص بـ SDK. يقوم المترجم بتعيين الرسم البياني على محرك ذكاء اصطناعي CVflow (التكميم، الجدولة، تخطيط الذاكرة) وينتج ملف AmbaPB القابل للنشر.

ملاحظة

لكي يتعرف Ultralytics على النموذج المجمع، يجب أن ينتهي اسم ملفه بـ .ambapb.ckpt.onnx أو .ambapb.fastckpt.onnx.

تشغيل الاستدلال بالنموذج المجمع#

يتم تحميل نموذج 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 موجوداً بجوار النموذج المجمع، فإن الواجهة الخلفية تقرأ أسماء الفئات، والخطوة (stride)، ومعلومات المهمة منه. تستخدم الواجهة الخلفية وضع استدلال CVflow acinf بشكل افتراضي؛ قم تعيين متغير البيئة ULTRALYTICS_AMBAPB_DEBUG=1 لتسجيل تفاصيل الإدخال/الإخراج لتصحيح الأخطاء.

النشر على اللوحة#

قم بتحميل النموذج المجمع على جهاز Ambarella الخاص بك باستخدام وقت تشغيل حزمة تطوير البرمجيات SDK لـ Ambarella. يجب أن يتطابق المعالجة المسبقة والمعالجة اللاحقة مع ما تم تجميع نموذج الاكتشاف من أجله: إدخال RGB بتنسيق letterbox في نطاق 0–255 (تقوم الواجهة الخلفية لـ Ultralytics AmbaPB بتغذية النموذج المجمع بـ RGB 0–255)، وفك تشفير اكتشاف YOLO القياسي على المخرجات. راجع وثائق نشر حزمة تطوير البرمجيات SDK لواجهات برمجة تطبيقات وقت التشغيل.

التصدير بدون SpongeTorch#

إذا كنت لا تحتاج إلى تحسينات التقليم والتكميم الواعي بالتدريب الخاصة بـ SpongeTorch، فإن خط أنابيب Ultralytics القياسي ينتج أيضاً نموذجاً قابلاً للتجميع بـ CVflow:

الاستخدام
yolo export model=yolo26n.pt format=onnx

قم بتجميع ملف ONNX الناتج باستخدام سلسلة أدوات CVflow، والتي تقوم بإجراء التكميم اللاحق للتدريب بنفسها. يضحي هذا المسار ببعض أداء وحدة المعالجة العصبية (NPU) ودقة التكميم مقابل سير عمل أبسط بدون أي تبعية لـ spongetorch في وقت التدريب.

تطبيقات العالم الحقيقي#

نماذج Ultralytics YOLO على Ambarella CVflow SoCs تشغل رؤية تعمل دائماً عند الحافة:

  • كاميرات أمن الذكاء الاصطناعي: اكتشاف الأشخاص والمركبات في الوقت الفعلي على كاميرات IP بدقة 4K ضمن ميزانية طاقة أقل من 3 واط.
  • الطائرات بدون طيار والروبوتات: اكتشاف الكائنات وتتبعها على متن الطائرة للملاحة والتفتيش والتسليم على رقائق من فئة CV5.
  • السيارات: أحمال عمل إدراك ADAS مثل اكتشاف المشاة والمركبات على وحدات تحكم مجال CV3-AD.
  • تحليلات الصناعة والتجزئة: عد الأشخاص متعدد التدفق، اكتشاف معدات الوقاية الشخصية، ومراقبة الرفوف على أجهزة الحافة.

ملخص#

حدد دليل المعاظرة هذا سير العمل الحالي لنشر نماذج Ultralytics YOLO على شرائح Ambarella CVflow المتكاملة (SoCs): التدريب الواعي بالضغط باستخدام SpongeTorch (amba_config/amba_chipset)، وتصدير ONNX لنقطة التحقق المضغوطة، والتجميع دون اتصال بالإنترنت إلى AmbaPB باستخدام سلسلة أدوات CVflow، والتحقق المطابق للبتات من النموذج المجمع عبر Ultralytics قبل نشر اللوحة.

بالنسبة لأهداف الذكاء الاصطناعي على الحافة الأخرى، راجع أدلة Hailo، وRockchip RKNN، وSony IMX500، وQualcomm QNN، وDEEPX، وAxelera ذات الصلة. للحصول على القائمة الكاملة لتنسيقات التصدير، تفضل بزيارة وثائق وضع التصدير وصفحة عمليات التكامل.

الأسئلة الشائعة#

  • لا. لا يوجد هدف لـ format="ambarella". قم بالتصدير إلى ONNX (اختيارياً مع ضغط SpongeTorch عبر amba_config)، ثم قم بتجميع نموذج ONNX إلى AmbaPB دون اتصال بالإنترنت باستخدام سلسلة أدوات CVflow الخاصة بـ Ambarella من حزمة تطوير البرمجيات SDK.

  • يمكن استهداف أي شريحة متكاملة (SoC) تعتمد على CVflow وتدعمها سلسلة أدوات CVflow الخاصة بك، بما في ذلك عائلات CV72/CV75 لكاميرات الذكاء الاصطناعي، وCV5/CV52 للطائرات بدون طيار والروبوتات، وCV3-AD للسيارات. يقوم وسيط amba_chipset بتكوين هدف تحسين SpongeTorch؛ حدد الهدف المطابق بشكل منفصل عند التجميع. تعتمد سلاسل شرائح المقبولة والتوافر على إصدار حزمة تطوير البرمجيات SDK المثبت.

  • SpongeTorch هو مجموعة أدوات ضغط النماذج من Ambarella، مدمجة في فرع Ambarella من Ultralytics للتقليم والتدريب الواعي بالتكميم. إنه اختياري: يمكن أيضاً تجميع تصدير ONNX عادي من Ultralytics باستخدام سلسلة أدوات CVflow باستخدام تكميم ما بعد التدريب، بتكلفة ما في أداء NPU ودقة التكميم.

  • إنها ملكية خاصة وليست على PyPI. قم بالتسجيل في منطقة مطوري Ambarella لطلب الوصول إلى حزمة تطوير البرمجيات SDK؛ حيث تأتي حزم تعريفات (wheels) spongetorch وcvflowbackend ومترجم CVflow مع توزيعة حزمة تطوير البرمجيات SDK.

  • قم بتشغيل yolo val model=model.ambapb.ckpt.onnx data=your_data.yaml مع تثبيت نسخة Ambarella المعدلة. تنفذ الواجهة الخلفية لـ AmbaPB النموذج المجمع بتطابق تام للبتات كما يعمل على محرك الذكاء الاصطناعي CVflow، لذلك يتضمن مقياس الخريطة المتوسط (mAP) المبلغ عنه جميع تأثيرات تكميم المترجم.

المساهمون

التعليقات