Ultralytics YOLO11 على NVIDIA جيتسون باستخدام مجموعة أدوات تطوير البرمجيات DeepStream SDK و TensorRT
شاهد: كيفية تشغيل تدفقات متعددة باستخدام DeepStream SDK على Jetson Nano باستخدام Ultralytics YOLO11
يقدم هذا الدليل الشامل شرحًا تفصيليًا لنشر Ultralytics YOLO11 على أجهزة NVIDIA Jetson باستخدام DeepStream SDK و TensorRT. نستخدم هنا TensorRT لزيادة أداء الاستدلال على منصة Jetson.
ملاحظة
This guide has been tested with NVIDIA Jetson Orin Nano Super Developer Kit running the latest stable JetPack release of JP6.1, Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.4. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.
ما هو NVIDIA DeepStream؟
NVIDIAإن مجموعة أدوات DeepStream SDK الخاصة ب DeepStream عبارة عن مجموعة أدوات كاملة لتحليلات البث تعتمد على GStreamer لمعالجة متعددة أجهزة الاستشعار القائمة على الذكاء الاصطناعي والفيديو والصوت وفهم الصور. إنها مثالية لمطوري الذكاء الاصطناعي للرؤية وشركاء البرامج والشركات الناشئة ومصنعي المعدات الأصلية الذين يقومون ببناء تطبيقات وخدمات تحليلات الفيديو الذكية (IVA). يمكنك الآن إنشاء خطوط أنابيب لمعالجة البث تتضمن شبكات عصبية ومهام معالجة معقدة أخرى مثل التتبع وتشفير/فك تشفير الفيديو وعرض الفيديو. تمكّن خطوط الأنابيب هذه من إجراء تحليلات في الوقت الفعلي على بيانات الفيديو والصور وبيانات المستشعرات. يمنحك دعم DeepStream متعدد المنصات طريقة أسرع وأسهل لتطوير تطبيقات وخدمات الذكاء الاصطناعي للرؤية في مكان العمل وعلى الحافة وفي السحابة.
المتطلبات الأساسية
قبل البدء في اتباع هذا الدليل
- قم بزيارة وثائقنا، دليل البدء السريع: NVIDIA Jetson مع Ultralytics YOLO11 لإعداد جهاز NVIDIA Jetson الخاص بك Jetson مع Ultralytics YOLO11
-
قم بتثبيت DeepStream SDK وفقًا لإصدار JetPack
- بالنسبة ل JetPack 4.6.4، قم بتثبيت DeepStream 6.0.1
- بالنسبة إلى JetPack 5.1.3، قم بتثبيت DeepStream 6.3
- For JetPack 6.1, install DeepStream 7.1
نصيحة
استخدمنا في هذا الدليل طريقة حزمة دبيان لتثبيت DeepStream SDK على جهاز Jetson. يمكنك أيضًا زيارة DeepStream SDK على Jetson (مؤرشف) للوصول إلى الإصدارات القديمة من DeepStream.
تهيئة DeepStream لـ YOLO11
نحن هنا نستخدم مستودع Marcoslucianops/DeepStream-Yolo GitHub الذي يتضمن دعم NVIDIA DeepStream SDK لنماذج YOLO . نحن نقدر جهود marcoslucianops على مساهماته!
-
Install Ultralytics with necessary dependencies
-
Clone the DeepStream-Yolo repository
-
Copy the
export_yoloV8.py
file fromDeepStream-Yolo/utils
directory to theultralytics
المجلدملاحظة
export_yoloV8.py
works for both YOLOv8 and YOLO11 models. -
Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolo11s.pt.
ملاحظة
يمكنك أيضًا استخدام نموذج YOLO11 مدرب مخصص.
-
تحويل النموذج إلى ONNX
مرر الوسيطات التالية إلى الأمر أعلاه
بالنسبة إلى DeepStream 6.0.1، استخدم مجموعة العمليات 12 أو أقل. مجموعة العمليات الافتراضية هي 16.
لتغيير حجم الاستدلال (الافتراضي: 640)
مثال على 1280:
لتبسيط نموذج ONNX (DeepStream >= 6.0)
لاستخدام حجم الدُفعات الديناميكي (DeepStream >= 6.1)
لاستخدام حجم الدفعة الثابت (مثال لحجم الدفعة الثابتة = 4)
-
Copy the generated
.onnx
model file andlabels.txt
file to theDeepStream-Yolo
المجلد -
قم بتعيين الإصدار CUDA وفقًا لإصدار JetPack المثبت
بالنسبة إلى JetPack 4.6.4:
بالنسبة إلى JetPack 5.1.3:
For Jetpack 6.1:
-
تجميع المكتبة
-
تحرير
config_infer_primary_yoloV8.txt
file according to your model (for YOLO11s with 80 classes) -
تحرير
deepstream_app_config
الملف -
يمكنك أيضًا تغيير مصدر الفيديو في
deepstream_app_config
ملف. هنا يتم تحميل ملف فيديو افتراضي
تشغيل الاستدلال
ملاحظة
سيستغرق الأمر وقتاً طويلاً لإنشاء ملف المحرك TensorRT قبل بدء الاستدلال. لذا يرجى التحلي بالصبر.
نصيحة
If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.engine
و network-mode=2
في الداخل config_infer_primary_yoloV8.txt
معايرة INT8
إذا كنت ترغب في استخدام دقة INT8 للاستدلال، عليك اتباع الخطوات التالية
ملاحظة
Currently INT8 does not work with TensorRT 10.x. This section of the guide has been tested with TensorRT 8.x which is expected to work.
-
مجموعة
OPENCV
متغير البيئة -
تجميع المكتبة
-
بالنسبة لمجموعة بيانات COCO، قم بتنزيل فال2017واستخرج، وانتقل إلى
DeepStream-Yolo
المجلد -
إنشاء دليل جديد لصور المعايرة
-
قم بتشغيل ما يلي لتحديد 1000 صورة عشوائية من مجموعة بيانات COCO لتشغيل المعايرة
ملاحظة
NVIDIA يوصي بما لا يقل عن 500 صورة للحصول على دقة جيدة. في هذا المثال، تم اختيار 1000 صورة للحصول على دقة أفضل (المزيد من الصور = دقة أكبر). يمكنك ضبطه من الرأس -1000. على سبيل المثال، لـ 2000 صورة، الرأس -2000. قد تستغرق هذه العملية وقتًا طويلاً.
-
إنشاء
calibration.txt
ملف يحتوي على جميع الصور المحددة -
تعيين متغيرات البيئة
ملاحظة
ستؤدي قيم INT8_CALIB_BATCH_SIZE الأعلى إلى دقة أكبر وسرعة معايرة أسرع. اضبطها وفقًا لذاكرتك GPU .
-
تحديث
config_infer_primary_yoloV8.txt
الملفمن
إلى
تشغيل الاستدلال
إعداد البث المتعدد
لإعداد تدفقات متعددة ضمن تطبيق واحد عميق، يمكنك إجراء التغييرات التالية على deepstream_app_config.txt
الملف
-
قم بتغيير الصفوف والأعمدة لإنشاء عرض الشبكة وفقًا لعدد التدفقات التي تريدها. على سبيل المثال، لـ 4 تدفقات، يمكننا إضافة صفين وعمودين.
-
مجموعة
num-sources=4
وإضافةuri
من جميع التدفقات الأربعة
تشغيل الاستدلال
النتائج المعيارية
The following benchmarks summarizes how YOLO11 models perform at different TensorRT precision levels with an input size of 640x640 on NVIDIA Jetson Orin NX 16GB.
رسم بياني للمقارنة
جدول المقارنة التفصيلي
الأداء
التنسيق | الحالة | زمن الاستدلال (م/م) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
التنسيق | الحالة | زمن الاستدلال (م/م) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
التنسيق | الحالة | زمن الاستدلال (م/م) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
التنسيق | الحالة | زمن الاستدلال (م/م) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
التنسيق | الحالة | زمن الاستدلال (م/م) |
---|---|---|
TensorRT (FP32) | ✅ | 80.65 |
TensorRT (FP16) | ✅ | 39.06 |
TensorRT (INT8) | ✅ | 22.83 |
شكر وتقدير
تم إنشاء هذا الدليل في البداية من قبل أصدقائنا في Seeed Studio، لاكشانتا وإلين.
الأسئلة الشائعة
كيف أقوم بإعداد Ultralytics YOLO11 على جهاز NVIDIA جيتسون؟
لإعداد Ultralytics YOLO11 على جهاز NVIDIA Jetson، تحتاج أولاً إلى تثبيت DeepStream SDK المتوافق مع إصدار JetPack الخاص بك. اتبع الدليل التفصيلي خطوة بخطوة في دليل البدء السريع لتهيئة جهازك NVIDIA Jetson للنشر YOLO11 .
ما هي الفائدة من استخدام TensorRT مع YOLO11 على NVIDIA جيتسون ؟
يؤدي استخدام TensorRT مع YOLO11 إلى تحسين نموذج الاستدلال، مما يقلل بشكل كبير من زمن الاستجابة ويحسن الإنتاجية على أجهزة NVIDIA Jetson. TensorRT يوفر استنتاج التعلم العميق عالي الأداء ومنخفض زمن الاستجابة من خلال دمج الطبقات والمعايرة الدقيقة والضبط التلقائي للنواة. ويؤدي ذلك إلى تنفيذ أسرع وأكثر كفاءة، وهو أمر مفيد بشكل خاص لتطبيقات الوقت الحقيقي مثل تحليلات الفيديو والآلات المستقلة.
هل يمكنني تشغيل Ultralytics YOLO11 باستخدام DeepStream SDK عبر أجهزة NVIDIA Jetson مختلفة؟
نعم، يتوافق دليل النشر Ultralytics YOLO11 مع DeepStream SDK و TensorRT عبر مجموعة NVIDIA Jetson بأكملها Jetson. وهذا يشمل أجهزة مثل Jetson Orin Orin NX 16GB مع JetPack 5.1.3 و Jetson Nano 4GB مع JetPack 4.6.4. ارجع إلى قسم تهيئة DeepStream لـ YOLO11 للاطلاع على الخطوات التفصيلية.
كيف يمكنني تحويل نموذج YOLO11 إلى ONNX لـ DeepStream؟
لتحويل نموذج YOLO11 إلى تنسيق ONNX للنشر باستخدام DeepStream، استخدم utils/export_yoloV8.py
نص من ديب ستريم-Yolo المستودع.
إليك مثال على ذلك الأمر
لمزيد من التفاصيل حول تحويل النماذج، راجع قسم تصدير النماذج لدينا.
ما هي معايير الأداء YOLO على NVIDIA Jetson Orin NX؟
The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLO11s models achieve:
- FP32 Precision: 14.6 ms/im, 68.5 FPS
- الدقة FP16: 7.94 متر/متر، 126 إطارًا في الثانية
- INT8 Precision: 5.95 ms/im, 168 FPS
تؤكد هذه المعايير على كفاءة وقدرة استخدام نماذج YOLO11 المحسّنة TensorRT على أجهزة NVIDIA Jetson . لمزيد من التفاصيل، راجع قسم النتائج المعيارية.