Ultralytics YOLO26 على أجهزة NVIDIA Jetson باستخدام DeepStream SDK و TensorRT
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
يوفر هذا الدليل الشامل شرحاً مفصلاً لنشر نماذج Ultralytics YOLO26 على أجهزة NVIDIA Jetson باستخدام DeepStream SDK و TensorRT. نستخدم هنا TensorRT لتحقيق أقصى أداء استنتاج على منصة Jetson.

تم اختبار هذا الدليل باستخدام NVIDIA Jetson Orin Nano Super Developer Kit الذي يعمل بأحدث إصدار مستقر من JetPack وهو JP6.1، وجهاز Seeed Studio reComputer J4012 الذي يعتمد على NVIDIA Jetson Orin NX 16GB ويعمل بإصدار JetPack JP5.1.3، وجهاز Seeed Studio reComputer J1020 v2 الذي يعتمد على NVIDIA Jetson Nano 4GB ويعمل بإصدار JetPack JP4.6.4. من المتوقع أن يعمل الدليل على جميع أجهزة NVIDIA Jetson بما في ذلك الإصدارات الحديثة والقديمة.
ما هو NVIDIA DeepStream؟
NVIDIA's DeepStream SDK هو مجموعة أدوات تحليل البث الكاملة القائمة على GStreamer لمعالجة البيانات متعددة المستشعرات المستندة إلى الذكاء الاصطناعي، وفهم الفيديو، والصوت، والصور. وهو مثالي لمطوري رؤية الحاسوب، وشركاء البرمجيات، والشركات الناشئة، ومصنعي المعدات الأصلية الذين يبنون تطبيقات وخدمات تحليل الفيديو الذكي (IVA). يمكنك الآن إنشاء خطوط معالجة للبث تدمج الشبكات العصبية ومهام معالجة معقدة أخرى مثل التتبع، وترميز/فك ترميز الفيديو، وعرض الفيديو. تتيح خطوط المعالجة هذه إجراء تحليلات في الوقت الفعلي على بيانات الفيديو والصور والمستشعرات. يمنحك دعم DeepStream للمنصات المتعددة طريقة أسرع وأسهل لتطوير تطبيقات وخدمات رؤية الذكاء الاصطناعي محلياً، وعند الحافة، وفي السحابة.
المتطلبات الأساسية
قبل البدء في اتباع هذا الدليل:
- قم بزيارة وثائقنا، دليل البدء السريع: NVIDIA Jetson مع Ultralytics YOLO26 لإعداد جهاز NVIDIA Jetson الخاص بك باستخدام Ultralytics YOLO26
- قم بتثبيت DeepStream SDK وفقاً لإصدار JetPack
- لإصدار JetPack 4.6.4، قم بتثبيت DeepStream 6.0.1
- لإصدار JetPack 5.1.3، قم بتثبيت DeepStream 6.3
- لإصدار JetPack 6.1، قم بتثبيت DeepStream 7.1
- لإصدار JetPack 7.1، قم بتثبيت DeepStream 9.0
في هذا الدليل، استخدمنا طريقة حزم Debian لتثبيت DeepStream SDK على جهاز Jetson. يمكنك أيضاً زيارة DeepStream SDK على Jetson (مؤرشف) للوصول إلى الإصدارات القديمة من DeepStream.
تهيئة DeepStream لـ YOLO26
نستخدم هنا مستودع GitHub marcoslucianops/DeepStream-Yolo الذي يتضمن دعم NVIDIA DeepStream SDK لنماذج YOLO. نشكر جهود marcoslucianops على مساهماته!
-
تثبيت Ultralytics مع التبعيات اللازمة
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim -
استنساخ مستودع DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
انسخ ملف
export_yolo26.pyمن دليلDeepStream-Yolo/utilsإلى مجلدultralyticscp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
قم بتنزيل نموذج الكشف Ultralytics YOLO26 (.pt) الذي تختاره من إصدارات YOLO26. نستخدم هنا yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
يمكنك أيضاً استخدام نموذج YOLO26 مدرب مخصصاً.
-
تحويل النموذج إلى ONNX
python3 export_yolo26.py -w yolo26s.pt
بالنسبة لـ DeepStream 5.1، قم بإزالة وسيط --dynamic واستخدم opset 12 أو أقل. القيمة الافتراضية لـ opset هي 17.
--opset 12لتغيير حجم الاستنتاج (الافتراضي: 640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHمثال لـ 1280:
-s 1280
or
-s 1280 1280لتبسيط نموذج ONNX (DeepStream >= 6.0)
--simplifyلاستخدام حجم دفعة ديناميكي (DeepStream >= 6.1)
--dynamicلاستخدام حجم دفعة ثابت (مثال لحجم دفعة = 4)
--batch 4-
انسخ ملف النموذج
.onnxالذي تم إنشاؤه وملفlabels.txtإلى مجلدDeepStream-Yolocp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
قم بتعيين إصدار CUDA وفقاً لإصدار JetPack المثبت
لإصدار JetPack 4.6.4:
export CUDA_VER=10.2لإصدار JetPack 5.1.3:
export CUDA_VER=11.4لإصدار JetPack 6.1:
export CUDA_VER=12.6 -
تجميع المكتبة
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
قم بتحرير ملف
config_infer_primary_yolo26.txtوفقاً لنموذجك (لـ YOLO26s مع 80 فئة)[property] ... onnx-file=yolo26s.pt.onnx ... num-detected-classes=80 ... -
قم بتحرير ملف
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
يمكنك أيضاً تغيير مصدر الفيديو في ملف
deepstream_app_config. هنا، يتم تحميل ملف فيديو افتراضي... [source0] ... uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
تشغيل الاستنتاج
deepstream-app -c deepstream_app_config.txtسيستغرق الأمر وقتاً طويلاً لإنشاء ملف محرك TensorRT قبل بدء الاستنتاج. لذا يرجى التحلي بالصبر.

إذا كنت ترغب في تحويل النموذج إلى دقة FP16، قم ببساطة بضبط model-engine-file=model_b1_gpu0_fp16.engine و network-mode=2 داخل config_infer_primary_yolo26.txt
معايرة INT8
إذا كنت ترغب في استخدام دقة INT8 للاستنتاج، فأنت بحاجة إلى اتباع الخطوات أدناه:
حالياً لا يعمل INT8 مع TensorRT 10.x. تم اختبار هذا القسم من الدليل مع TensorRT 8.x ومن المتوقع أن يعمل.
-
ضبط متغير البيئة
OPENCVexport OPENCV=1 -
تجميع المكتبة
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
بالنسبة لمجموعة بيانات COCO، قم بتنزيل val2017، واستخرج الملف، وانقله إلى مجلد
DeepStream-Yolo -
قم بإنشاء دليل جديد لصور المعايرة
mkdir calibration -
قم بتشغيل ما يلي لاختيار 1000 صورة عشوائية من مجموعة بيانات COCO لتشغيل المعايرة
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
توصي NVIDIA بـ 500 صورة على الأقل للحصول على دقة جيدة. في هذا المثال، تم اختيار 1000 صورة للحصول على دقة أفضل (المزيد من الصور = دقة أعلى). يمكنك ضبط ذلك من head -1000. على سبيل المثال، لـ 2000 صورة، استخدم head -2000. قد تستغرق هذه العملية وقتاً طويلاً.
-
قم بإنشاء ملف
calibration.txtمع جميع الصور المختارةrealpath calibration/*jpg > calibration.txt -
ضبط متغيرات البيئة
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
ستؤدي قيم INT8_CALIB_BATCH_SIZE الأعلى إلى دقة أكبر وسرعة معايرة أسرع. اضبطها وفقاً لذاكرة GPU الخاصة بك.
-
قم بتحديث ملف
config_infer_primary_yolo26.txtمن
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...إلى
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
تشغيل الاستنتاج
deepstream-app -c deepstream_app_config.txtإعداد البث المتعدد
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
لإعداد تدفقات متعددة تحت تطبيق DeepStream واحد، قم بإجراء التغييرات التالية على ملف deepstream_app_config.txt:
-
قم بتغيير الصفوف والأعمدة لبناء عرض شبكي وفقاً لعدد التدفقات التي تريد الحصول عليها. على سبيل المثال، لـ 4 تدفقات، يمكننا إضافة صفين وعمودين.
[tiled-display] rows=2 columns=2 -
قم بضبط
num-sources=4وأضف إدخالاتuriلجميع التدفقات الأربعة.[source0] enable=1 type=3 uri=path/to/video1.jpg uri=path/to/video2.jpg uri=path/to/video3.jpg uri=path/to/video4.jpg num-sources=4
تشغيل الاستنتاج
deepstream-app -c deepstream_app_config.txt
نتائج القياس المعياري
تلخص المعايير التالية كيفية أداء نماذج YOLO26 عند مستويات دقة TensorRT المختلفة مع حجم إدخال 640x640 على NVIDIA Jetson Orin NX 16GB.
جدول المقارنة

جدول مقارنة مفصل
| التنسيق | الحالة | وقت الاستنتاج (مللي ثانية/صورة) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
شكر وتقدير
تم إنشاء هذا الدليل في الأصل بواسطة أصدقائنا في Seeed Studio، لاكشانثا وإيلين.
الأسئلة الشائعة
كيف يمكنني إعداد Ultralytics YOLO26 على جهاز NVIDIA Jetson؟
لإعداد Ultralytics YOLO26 على جهاز NVIDIA Jetson، تحتاج أولاً إلى تثبيت DeepStream SDK المتوافق مع إصدار JetPack الخاص بك. اتبع الدليل خطوة بخطوة في دليل البدء السريع لتهيئة NVIDIA Jetson لنشر YOLO26.
ما فائدة استخدام TensorRT مع YOLO26 على NVIDIA Jetson؟
يؤدي استخدام TensorRT مع YOLO26 إلى تحسين النموذج للاستنتاج، مما يقلل بشكل كبير من زمن الوصول ويحسن الإنتاجية على أجهزة NVIDIA Jetson. يوفر TensorRT استنتاج تعلم عميق عالي الأداء ومنخفض زمن الوصول من خلال دمج الطبقات، ومعايرة الدقة، والضبط التلقائي للنواة. يؤدي هذا إلى تنفيذ أسرع وأكثر كفاءة، وهو مفيد بشكل خاص للتطبيقات في الوقت الفعلي مثل تحليلات الفيديو والآلات المستقلة.
هل يمكنني تشغيل Ultralytics YOLO26 باستخدام DeepStream SDK عبر أجهزة NVIDIA Jetson المختلفة؟
نعم، دليل نشر Ultralytics YOLO26 باستخدام DeepStream SDK و TensorRT متوافق مع جميع أجهزة NVIDIA Jetson. يشمل ذلك أجهزة مثل Jetson Orin NX 16GB مع JetPack 5.1.3 و Jetson Nano 4GB مع JetPack 4.6.4. ارجع إلى قسم تهيئة DeepStream لـ YOLO26 للحصول على خطوات مفصلة.
كيف يمكنني تحويل نموذج YOLO26 إلى ONNX لـ DeepStream؟
لتحويل نموذج YOLO26 إلى تنسيق ONNX للنشر باستخدام DeepStream، استخدم البرنامج النصي utils/export_yolo26.py من مستودع DeepStream-Yolo.
إليك مثال على الأمر:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplifyلمزيد من التفاصيل حول تحويل النموذج، راجع قسم تصدير النموذج الخاص بنا.
ما هي معايير الأداء لـ YOLO على NVIDIA Jetson Orin NX؟
يختلف أداء نماذج YOLO26 على NVIDIA Jetson Orin NX 16GB بناءً على مستويات دقة TensorRT. على سبيل المثال، تحقق نماذج YOLO26s ما يلي:
- دقة FP32: 14.6 مللي ثانية/صورة، 68.5 إطار في الثانية
- دقة FP16: 7.94 مللي ثانية/صورة، 126 إطار في الثانية
- دقة INT8: 5.95 مللي ثانية/صورة، 168 إطار في الثانية
تؤكد هذه المعايير كفاءة وقدرة استخدام نماذج YOLO26 المحسنة بواسطة TensorRT على أجهزة NVIDIA Jetson. لمزيد من التفاصيل، راجع قسم نتائج القياس المعياري الخاص بنا.