Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics 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 DeepStream SDK on Jetson platform
ملاحظة

تم اختبار هذا الدليل باستخدام 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 بما في ذلك الأجهزة الحديثة والقديمة.

Link to this sectionما هو NVIDIA DeepStream؟#

NVIDIA's DeepStream SDK عبارة عن مجموعة أدوات متكاملة لتحليلات البث تعتمد على GStreamer لمعالجة المستشعرات المتعددة المستندة إلى الذكاء الاصطناعي، وفهم الفيديو، والصوت، والصور. إنها مثالية لمطوري رؤية الحاسوب بالذكاء الاصطناعي، وشركاء البرمجيات، والشركات الناشئة، ومصنعي المعدات الأصلية (OEMs) الذين يبنون تطبيقات وخدمات IVA (تحليلات الفيديو الذكية). يمكنك الآن إنشاء خطوط أنابيب لمعالجة البث تدمج الشبكات العصبية ومهام معالجة معقدة أخرى مثل التتبع، وترميز/فك ترميز الفيديو، وعرض الفيديو. تتيح خطوط الأنابيب هذه إجراء تحليلات في الوقت الفعلي على بيانات الفيديو والصور والمستشعرات. يمنحك دعم DeepStream متعدد المنصات طريقة أسرع وأسهل لتطوير تطبيقات وخدمات رؤية الذكاء الاصطناعي محلياً، وعند الحافة، وفي السحابة.

Link to this sectionالمتطلبات الأساسية#

قبل البدء في اتباع هذا الدليل:

نصيحة

في هذا الدليل، استخدمنا طريقة حزم Debian لتثبيت DeepStream SDK على جهاز Jetson. يمكنك أيضاً زيارة DeepStream SDK على Jetson (مؤرشف) للوصول إلى الإصدارات القديمة من DeepStream.

Link to this sectionتهيئة DeepStream لـ YOLO26#

نستخدم هنا مستودع GitHub الخاص بـ marcoslucianops/DeepStream-Yolo والذي يتضمن دعم NVIDIA DeepStream SDK لنماذج YOLO. نقدر جهود marcoslucianops لمساهماته!

  1. تثبيت Ultralytics مع التبعيات اللازمة

    cd ~
    pip install -U pip
    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    pip install -e ".[export]" onnxslim
  2. استنساخ مستودع DeepStream-Yolo

    cd ~
    git clone https://github.com/marcoslucianops/DeepStream-Yolo
  3. انسخ ملف export_yolo26.py من دليل DeepStream-Yolo/utils إلى مجلد ultralytics

    cp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics
    cd ultralytics
  4. قم بتنزيل نموذج الكشف Ultralytics YOLO26 (.pt) الذي تختاره من إصدارات YOLO26. نستخدم هنا yolo26s.pt.

    wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
ملاحظة

يمكنك أيضاً استخدام نموذج YOLO26 مُدرب مخصصاً.

  1. تحويل النموذج إلى 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

لاستخدام حجم دفعة (batch-size) ديناميكي (DeepStream >= 6.1)

--dynamic

لاستخدام حجم دفعة ثابت (مثال لحجم دفعة = 4)

--batch 4
  1. انسخ ملف النموذج المُنشأ .onnx وملف labels.txt إلى مجلد DeepStream-Yolo

    cp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo
    cd ~/DeepStream-Yolo
  2. اضبط إصدار 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
  3. ترجمة المكتبة

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  4. قم بتحرير ملف config_infer_primary_yolo26.txt وفقاً لنموذجك (بالنسبة لـ YOLO26s مع 80 فئة)

    [property]
    ...
    onnx-file=yolo26s.pt.onnx
    ...
    num-detected-classes=80
    ...
  5. قم بتحرير ملف deepstream_app_config

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yolo26.txt
  6. يمكنك أيضاً تغيير مصدر الفيديو في ملف deepstream_app_config. هنا، يتم تحميل ملف فيديو افتراضي

    ...
    [source0]
    ...
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4

Link to this sectionتشغيل الاستنتاج#

deepstream-app -c deepstream_app_config.txt
ملاحظة

سيستغرق الأمر وقتاً طويلاً لإنشاء ملف محرك TensorRT قبل بدء الاستنتاج. لذا يرجى التحلي بالصبر.

YOLO26 with deepstream
نصيحة

إذا كنت ترغب في تحويل النموذج إلى دقة FP16، قم ببساطة بضبط model-engine-file=model_b1_gpu0_fp16.engine و network-mode=2 داخل config_infer_primary_yolo26.txt

Link to this sectionمعايرة INT8#

إذا كنت ترغب في استخدام دقة INT8 للاستنتاج، فأنت بحاجة إلى اتباع الخطوات أدناه:

ملاحظة

حالياً، لا يعمل INT8 مع TensorRT 10.x. تم اختبار هذا القسم من الدليل مع TensorRT 8.x ومن المتوقع أن يعمل.

  1. اضبط متغير البيئة OPENCV

    export OPENCV=1
  2. ترجمة المكتبة

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
  3. بالنسبة لمجموعة بيانات COCO، قم بتنزيل val2017، واستخرج الملفات، وانقلها إلى مجلد DeepStream-Yolo

  4. أنشئ دليلاً جديداً لصور المعايرة

    mkdir calibration
  5. قم بتشغيل ما يلي لاختيار 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. قد تستغرق هذه العملية وقتاً طويلاً.

  1. أنشئ ملف calibration.txt مع جميع الصور المحددة

    realpath calibration/*jpg > calibration.txt
  2. اضبط متغيرات البيئة

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
ملاحظة

ستؤدي قيم INT8_CALIB_BATCH_SIZE الأعلى إلى دقة أكبر وسرعة معايرة أسرع. اضبطها وفقاً لذاكرة GPU الخاصة بك.

  1. قم بتحديث ملف 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
    ...

Link to this sectionتشغيل الاستنتاج#

deepstream-app -c deepstream_app_config.txt

Link to this sectionإعداد البث المتعدد#



Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀

لإعداد تدفقات متعددة ضمن تطبيق DeepStream واحد، قم بإجراء التغييرات التالية على ملف deepstream_app_config.txt:

  1. قم بتغيير الصفوف والأعمدة لبناء عرض شبكي وفقاً لعدد التدفقات التي تريد الحصول عليها. على سبيل المثال، لـ 4 تدفقات، يمكننا إضافة صفين وعمودين.

    [tiled-display]
    rows=2
    columns=2
  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

Link to this sectionتشغيل الاستنتاج#

deepstream-app -c deepstream_app_config.txt
DeepStream multi-camera streaming configuration

Link to this sectionنتائج القياس المرجعي#

تلخص المقاييس المرجعية التالية كيفية أداء نماذج YOLO26 عند مستويات دقة TensorRT المختلفة بحجم إدخال 640x640 على NVIDIA Jetson Orin NX 16GB.

Link to this sectionمخطط المقارنة#

NVIDIA Jetson DeepStream performance benchmarks

Link to this sectionجدول مقارنة مفصل#

الأداء
التنسيقالحالةوقت الاستدلال (ms/im)
TensorRT (FP32)8.64
TensorRT (FP16)5.27
TensorRT (INT8)4.54

Link to this sectionشكر وتقدير#

تم إنشاء هذا الدليل في البداية بواسطة أصدقائنا في Seeed Studio، Lakshantha و Elaine.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف أقوم بإعداد Ultralytics YOLO26 على جهاز NVIDIA Jetson؟#

لإعداد Ultralytics YOLO26 على جهاز NVIDIA Jetson، تحتاج أولاً إلى تثبيت DeepStream SDK المتوافق مع إصدار JetPack الخاص بك. اتبع الدليل خطوة بخطوة في دليل البدء السريع لتهيئة NVIDIA Jetson الخاص بك لنشر YOLO26.

Link to this sectionما هي فائدة استخدام TensorRT مع YOLO26 على NVIDIA Jetson؟#

يؤدي استخدام TensorRT مع YOLO26 إلى تحسين النموذج للاستنتاج، مما يقلل بشكل كبير من التأخير ويحسن الإنتاجية على أجهزة NVIDIA Jetson. يوفر TensorRT استنتاج تعلم عميق عالي الأداء ومنخفض التأخير من خلال دمج الطبقات، ومعايرة الدقة، والضبط التلقائي للنواة. يؤدي هذا إلى تنفيذ أسرع وأكثر كفاءة، وهو مفيد بشكل خاص للتطبيقات في الوقت الفعلي مثل تحليلات الفيديو والآلات المستقلة.

Link to this sectionهل يمكنني تشغيل 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 للحصول على خطوات مفصلة.

Link to this sectionكيف يمكنني تحويل نموذج YOLO26 إلى ONNX لـ DeepStream؟#

لتحويل نموذج YOLO26 إلى تنسيق ONNX للنشر مع DeepStream، استخدم البرنامج النصي utils/export_yolo26.py من مستودع DeepStream-Yolo.

إليك مثال على الأمر:

python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplify

لمزيد من التفاصيل حول تحويل النموذج، تحقق من قسم تصدير النموذج الخاص بنا.

Link to this sectionما هي مقاييس الأداء لـ 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. لمزيد من التفاصيل، راجع قسم نتائج المعايير الخاص بنا.

التعليقات