دليل البدء السريع: NVIDIA Jetson مع Ultralytics YOLOv8
يوفر هذا الدليل الشامل إرشادات تفصيلية للنشر Ultralytics YOLOv8 على أجهزة NVIDIA Jetson . بالإضافة إلى ذلك ، فإنه يعرض معايير الأداء لإظهار قدرات YOLOv8 على هذه الأجهزة الصغيرة والقوية.
ملاحظه
تم اختبار هذا الدليل باستخدام Seeed Studio reComputer J4012 الذي يعتمد على NVIDIA Jetson Orin NX 16GB الذي يعمل بأحدث إصدار مستقر من JetPack من JP5.1.3. قد لا يكون استخدام هذا الدليل لأجهزة Jetson القديمة مثل Jetson Nano (يدعم هذا فقط حتى JP4.6.4) مضمونا للعمل. ومع ذلك ، من المتوقع أن يعمل هذا على جميع أجهزة Jetson Orin و Xavier NX و AGX Xavier التي تعمل بنظام JP5.1.3.
ما هو نفيديا جيتسون؟
NVIDIA Jetson عبارة عن سلسلة من لوحات الحوسبة المضمنة المصممة لجلب حوسبة الذكاء الاصطناعي (الذكاء الاصطناعي) المتسارعة إلى أجهزة الحافة. تم تصميم هذه الأجهزة المدمجة والقوية حول بنية وحدة معالجة الرسومات من NVIDIA وهي قادرة على تشغيل خوارزميات الذكاء الاصطناعي المعقدة ونماذج التعلم العميق مباشرة على الجهاز ، دون الحاجة إلى الاعتماد على موارد الحوسبة السحابية. غالبا ما تستخدم لوحات Jetson في الروبوتات والمركبات المستقلة والأتمتة الصناعية والتطبيقات الأخرى حيث يجب إجراء الاستدلال الذكاء الاصطناعي محليا بزمن انتقال منخفض وكفاءة عالية. بالإضافة إلى ذلك ، تعتمد هذه اللوحات على بنية ARM64 وتعمل على طاقة أقل مقارنة بأجهزة حوسبة GPU التقليدية.
مقارنة سلسلة نفيديا جيتسون
Jetson Orin هو أحدث تكرار لعائلة NVIDIA Jetson استنادا إلى بنية NVIDIA Ampere التي توفر أداء الذكاء الاصطناعي محسنا بشكل كبير مقارنة بالأجيال السابقة. قارن الجدول أدناه عددا قليلا من أجهزة Jetson في النظام البيئي.
جيتسون AGX أورين 64 جيجابايت | جيتسون أورين NX 16 جيجابايت | جيتسون أورين نانو 8 جيجا | جيتسون AGX كزافييه | جيتسون كزافييه NX | جيتسون نانو | |
---|---|---|---|---|---|---|
أداء الذكاء الاصطناعي | 275 قمم | 100 قمم | 40 قمة | 32 قمم | 21 قمم | 472 جلوب |
الجرافيك | 2048 نواة لوحدة معالجة رسومات NVIDIA Ampere ذات بنية NVIDIA Ampere مع 64 Tensor نواة | 1024 نواة NVIDIA Ampere العمارة GPU مع 32 Tensor النوي | 1024 نواة NVIDIA Ampere العمارة GPU مع 32 Tensor النوي | 512 نواة NVIDIA فولتا العمارة GPU مع 64 Tensor النوي | 384 نواة NVIDIA فولتا™ العمارة GPU مع 48 Tensor النوي | 128 نواة NVIDIA ماكسويل™ العمارة GPU |
أقصى تردد GPU | 1.3 جيجاهرتز | 918 ميغاهيرتز | 625 ميغاهيرتز | 1377 ميجا هرتز | 1100 ميغاهيرتز | 921 ميجا هرتز |
وحده المعالجه المركزيه | 12 نواة نفيديا الذراع® اللحاء A78AE v8.2 64 بت وحدة المعالجة المركزية 3MB L2 + 6MB L3 | 8-core NVIDIA Arm® Cortex A78AE v8.2 64 بت وحدة المعالجة المركزية 2MB L2 + 4MB L3 | 6 النواة الذراع® اللحاء® A78AE v8.2 64 بت وحدة المعالجة المركزية 1.5MB L2 + 4MB L3 | 8-core NVIDIA Carmel Arm®v8.2 64 بت وحدة المعالجة المركزية 8 ميجابايت L2 + 4 ميجابايت L3 | وحدة المعالجة المركزية NVIDIA NVIDIA Carmel® Armv8.2 سداسية النواة NVIDIA Arm®v8.2 64 بت 6 ميجابايت L2 + 4 ميجابايت L3 | معالج رباعي النواة® Cortex-A57® MPCore |
وحدة المعالجة المركزية ماكس التردد | 2.2 جيجاهرتز | 2.0 جيجاهرتز | 1.5 جيجاهرتز | 2.2 جيجاهرتز | 1.9 جيجاهرتز | 1.43 جيجا هرتز |
ذاكرة | 64 جيجابايت 256 بت LPDDR5 204.8 جيجابايت / ثانية | 16 جيجابايت 128 بت LPDDR5 102.4 جيجابايت / ثانية | 8 جيجا بايت 128 بت LPDDR5 68 جيجا بايت / ثانية | 32 جيجابايت 256 بت LPDDR4x 136.5 جيجابايت / ثانية | 8 جيجا بايت 128 بت LPDDR4x 59.7 جيجا بايت / ثانية | 4 جيجابايت 64 بت LPDDR4 25.6 جيجابايت / ثانية " |
للحصول على جدول مقارنة أكثر تفصيلا ، يرجى زيارة قسم المواصفات الفنية في صفحة NVIDIA Jetson الرسمية.
ما هو نفيديا جيت باك؟
تعد NVIDIA JetPack SDK التي تعمل على تشغيل وحدات Jetson هي الحل الأكثر شمولا وتوفر بيئة تطوير كاملة لبناء تطبيقات الذكاء الاصطناعي المتسارعة الشاملة وتقصير وقت الوصول إلى السوق. يتضمن JetPack Jetson Linux مع أداة تحميل التشغيل ، ونواة Linux ، وبيئة سطح مكتب Ubuntu ، ومجموعة كاملة من المكتبات لتسريع حوسبة GPU والوسائط المتعددة والرسومات ورؤية الكمبيوتر. يتضمن أيضا عينات ووثائق وأدوات مطور لكل من الكمبيوتر المضيف ومجموعة المطورين ، ويدعم حزم SDK ذات المستوى الأعلى مثل DeepStream لتحليلات الفيديو المتدفقة و Isaac للروبوتات و Riva الذكاء الاصطناعي المحادثة.
فلاش JetPack إلى نفيديا جيتسون
الخطوة الأولى بعد وضع يديك على جهاز NVIDIA Jetson هي وميض NVIDIA JetPack على الجهاز. هناك عدة طرق مختلفة لوميض أجهزة NVIDIA Jetson.
- إذا كنت تمتلك مجموعة تطوير NVIDIA رسمية مثل Jetson Orin Nano Developer Kit ، فيمكنك زيارة هذا الرابط لتنزيل صورة وإعداد بطاقة SD باستخدام JetPack لتشغيل الجهاز.
- إذا كنت تمتلك أي مجموعة تطوير NVIDIA أخرى ، فيمكنك زيارة هذا الرابط لفلاش JetPack إلى الجهاز باستخدام SDK Manager.
- إذا كنت تمتلك جهاز Seeed Studio reComputer J4012 ، فيمكنك زيارة هذا الرابط لفلاش JetPack إلى SSD المضمن.
- إذا كنت تمتلك أي جهاز آخر تابع لجهة خارجية يتم تشغيله بواسطة وحدة NVIDIA Jetson ، فمن المستحسن اتباع وميض سطر الأوامر من خلال زيارة هذا الرابط.
ملاحظه
بالنسبة للطريقتين 3 و 4 أعلاه ، بعد وميض النظام وتشغيل الجهاز ، يرجى إدخال "sudo apt update && sudo apt install nvidia-jetpack -y" على طرف الجهاز لتثبيت جميع مكونات JetPack المتبقية المطلوبة.
الإعداد Ultralytics
هناك طريقتان لإعداد الحزمة Ultralytics على NVIDIA Jetson لبناء مشروعك التالي في مجال الرؤية الحاسوبية. يمكنك استخدام أي منهما.
ابدأ مع عامل ميناء
أسرع طريقة للبدء مع Ultralytics YOLOv8 على NVIDIA Jetson هو تشغيل مع صورة عامل ميناء مسبقة الصنع ل Jetson.
قم بتنفيذ الأمر أدناه لسحب حاوية Docker وتشغيلها على Jetson. يستند هذا الأمر إلى صورة L4t-pytorch docker التي تحتوي على PyTorch و Torchvision في بيئة Python3.
t=ultralytics/ultralytics:latest-jetson && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t
بعد الانتهاء من ذلك، انتقل إلى قسم استخدام TensorRT على NVIDIA Jetson.
ابدأ بدون عامل ميناء
أقام Ultralytics حزمة
سنقوم هنا بتثبيت حزمة ultralyics على Jetson مع تبعيات اختيارية حتى نتمكن من تصدير ملف PyTorch نماذج لتنسيقات مختلفة أخرى. سنركز بشكل أساسي على نفيديا TensorRT الصادرات لأن TensoRT سوف تتأكد من أنه يمكننا الحصول على أقصى أداء من أجهزة Jetson.
-
تحديث قائمة الحزم وتثبيت النقطة والترقية إلى الأحدث
-
أقام
ultralytics
حزمة النقطة مع التبعيات الاختيارية -
أعد تشغيل الجهاز
أقام PyTorch و Torchvision
ما سبق ultralytics سيتم تثبيت التثبيت Torch و Torchvision. ومع ذلك ، فإن حزم 2 المثبتة عبر النقطة غير متوافقة للتشغيل على منصة Jetson التي تعتمد على بنية ARM64. لذلك ، نحتاج إلى تثبيت يدويا مسبق الصنع PyTorch عجلة نقطة وتجميع / تثبيت Torchvision من المصدر.
-
إلغاء التثبيت مثبت حاليا PyTorch و Torchvision
-
أقام PyTorch 2.1.0 وفقا ل JP5.1.3
sudo apt-get install -y libopenblas-base libopenmpi-dev wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
-
تثبيت Torchvision v0.16.2 وفقا ل PyTorch الإصدار 2.1.0
قم بزيارة صفحةPyTorch لصفحة Jetson للوصول إلى جميع الإصدارات المختلفة من PyTorch لإصدارات JetPack المختلفة. للاطلاع على قائمة أكثر تفصيلاً على PyTorch ، توافق Torchvision، قم بزيارة صفحة التوافقPyTorch وتوافق Torchvision.
أقام onnxruntime-gpu
ال Onnxruntime-gpu الحزمة المستضافة في PyPI لا تحتوي على aarch64
ثنائيات لـ Jetson. لذلك نحن بحاجة إلى تثبيت هذه الحزمة يدوياً. هذه الحزمة مطلوبة لبعض الصادرات.
كل شيء مختلف onnxruntime-gpu
يتم سرد الحزم التي تتوافق مع إصدارات JetPack و Python المختلفة هنا. ومع ذلك، سنقوم هنا بتنزيل وتثبيت onnxruntime-gpu 1.17.0
مع Python3.8
دعم JetPack الذي نستخدمه في هذا الدليل.
wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
ملاحظه
onnxruntime-gpu
سيعيد تلقائيًا إصدار numpy إلى الأحدث. لذلك نحن بحاجة إلى إعادة تثبيت numpy إلى 1.23.5
لإصلاح مشكلة عن طريق التنفيذ
pip install numpy==1.23.5
استخدام TensorRT على نفيديا جيتسون
من بين جميع تنسيقات تصدير النموذج التي يدعمها Ultralytics, TensorRT يقدم أفضل أداء للاستدلال عند العمل مع أجهزة NVIDIA Jetson وتوصيتنا هي استخدام TensorRT مع جيتسون. لدينا أيضا وثيقة مفصلة عن TensorRT هنا.
تحويل النموذج إلى TensorRT وتشغيل الاستدلال
ال YOLOv8n نموذج في PyTorch يتم تحويل التنسيق إلى TensorRT لتشغيل الاستدلال مع النموذج المصدر.
مثل
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')
# Export the model
model.export(format='engine') # creates 'yolov8n.engine'
# Load the exported TensorRT model
trt_model = YOLO('yolov8n.engine')
# Run inference
results = trt_model('https://ultralytics.com/images/bus.jpg')
ملاحظه
قم بزيارة صفحة التصدير للوصول إلى الوسائط الإضافية عند تصدير النماذج إلى تنسيقات نماذج مختلفة
نفيديا جيتسون أورين YOLOv8 المعايير
YOLOv8 TF تم تشغيل المعايير من قبل فريق Ultralytics على 10 نماذج مختلفة لقياس السرعة والدقة: PyTorch و TorchScript و ONNX و OpenVINO و TensorRT و TF SavedModel و TF Graphdef و 0 لايت و PaddlePaddle و NCNN. تم تشغيل الاختبارات المعيارية على جهاز Seeed Studio reComputer J4012 المدعوم بجهاز Jetson Orin NX سعة 16 جيجابايت بدقة FP32 مع حجم إدخال افتراضي للصور يبلغ 640.
رسم بياني للمقارنة
على الرغم من أن جميع عمليات تصدير النماذج تعمل مع NVIDIA Jetson، فقد قمنا بتضمين PyTorch و TorchScript و TensorRT فقط في مخطط المقارنة أدناه لأنها تستخدم وحدة معالجة الرسومات على Jetson وهي مضمونة لتحقيق أفضل النتائج. جميع عمليات التصدير الأخرى تستخدم وحدة المعالجة المركزية فقط والأداء ليس جيدًا مثل الثلاثة المذكورة أعلاه. يمكنك العثور على معايير لجميع الصادرات في القسم بعد هذا الرسم البياني.
جدول المقارنة التفصيلي
يمثل الجدول أدناه النتائج المعيارية لخمسة نماذج مختلفة (YOLOv8n ، YOLOv8s ، ، YOLOv8m ، YOLOv8l ، YOLOv8x) عبر عشرة نماذج مختلفة (PyTorch ، TorchScript ، ONNX ، OpenVINO ، TensorRT ، TF SavedModel ، TF Graphdef ، TF لايت، PaddlePaddle ، NCNN)، مع إعطائنا الحالة والحجم ومقياس mAP50-95(B) وزمن الاستدلال لكل مجموعة.
اداء
تنسيق | حالة | الحجم على القرص (ميغابايت) | mAP50-95 (ب) | وقت الاستدلال (مللي ثانية / im) |
---|---|---|---|---|
PyTorch | ✅ | 6.2 | 0.6381 | 14.3 |
TorchScript | ✅ | 12.4 | 0.6117 | 13.3 |
ONNX | ✅ | 12.2 | 0.6092 | 70.6 |
OpenVINO | ✅ | 12.3 | 0.6092 | 104.2 |
TensorRT | ✅ | 13.6 | 0.6117 | 8.9 |
TF SavedModel | ✅ | 30.6 | 0.6092 | 141.74 |
TF GraphDef | ✅ | 12.3 | 0.6092 | 199.93 |
TF لايت | ✅ | 12.3 | 0.6092 | 349.18 |
PaddlePaddle | ✅ | 24.4 | 0.6030 | 555 |
NCNN | ✅ | 12.2 | 0.6092 | 32 |
تنسيق | حالة | الحجم على القرص (ميغابايت) | mAP50-95 (ب) | وقت الاستدلال (مللي ثانية / im) |
---|---|---|---|---|
PyTorch | ✅ | 21.5 | 0.6967 | 18 |
TorchScript | ✅ | 43.0 | 0.7136 | 23.81 |
ONNX | ✅ | 42.8 | 0.7136 | 185.55 |
OpenVINO | ✅ | 42.9 | 0.7136 | 243.97 |
TensorRT | ✅ | 44.0 | 0.7136 | 14.82 |
TF SavedModel | ✅ | 107 | 0.7136 | 260.03 |
TF GraphDef | ✅ | 42.8 | 0.7136 | 423.4 |
TF لايت | ✅ | 42.8 | 0.7136 | 1046.64 |
PaddlePaddle | ✅ | 85.5 | 0.7140 | 1464 |
NCNN | ✅ | 42.7 | 0.7200 | 63 |
تنسيق | حالة | الحجم على القرص (ميغابايت) | mAP50-95 (ب) | وقت الاستدلال (مللي ثانية / im) |
---|---|---|---|---|
PyTorch | ✅ | 49.7 | 0.7370 | 36.4 |
TorchScript | ✅ | 99.2 | 0.7285 | 53.58 |
ONNX | ✅ | 99 | 0.7280 | 452.09 |
OpenVINO | ✅ | 99.1 | 0.7280 | 544.36 |
TensorRT | ✅ | 100.3 | 0.7285 | 33.21 |
TF SavedModel | ✅ | 247.5 | 0.7280 | 543.65 |
TF GraphDef | ✅ | 99 | 0.7280 | 906.63 |
TF لايت | ✅ | 99 | 0.7280 | 2758.08 |
PaddlePaddle | ✅ | 197.9 | 0.7280 | 3678 |
NCNN | ✅ | 98.9 | 0.7260 | 135 |
تنسيق | حالة | الحجم على القرص (ميغابايت) | mAP50-95 (ب) | وقت الاستدلال (مللي ثانية / im) |
---|---|---|---|---|
PyTorch | ✅ | 83.7 | 0.7768 | 61.3 |
TorchScript | ✅ | 167.2 | 0.7554 | 87.9 |
ONNX | ✅ | 166.8 | 0.7551 | 852.29 |
OpenVINO | ✅ | 167 | 0.7551 | 1012.6 |
TensorRT | ✅ | 168.4 | 0.7554 | 51.23 |
TF SavedModel | ✅ | 417.2 | 0.7551 | 990.45 |
TF GraphDef | ✅ | 166.9 | 0.7551 | 1649.86 |
TF لايت | ✅ | 166.9 | 0.7551 | 5652.37 |
PaddlePaddle | ✅ | 333.6 | 0.7551 | 7114.67 |
NCNN | ✅ | 166.8 | 0.7685 | 231.9 |
تنسيق | حالة | الحجم على القرص (ميغابايت) | mAP50-95 (ب) | وقت الاستدلال (مللي ثانية / im) |
---|---|---|---|---|
PyTorch | ✅ | 130.5 | 0.7759 | 93 |
TorchScript | ✅ | 260.7 | 0.7472 | 135.1 |
ONNX | ✅ | 260.4 | 0.7479 | 1296.13 |
OpenVINO | ✅ | 260.6 | 0.7479 | 1502.15 |
TensorRT | ✅ | 261.8 | 0.7469 | 84.53 |
TF SavedModel | ✅ | 651.1 | 0.7479 | 1451.76 |
TF GraphDef | ✅ | 260.5 | 0.7479 | 4029.36 |
TF لايت | ✅ | 260.4 | 0.7479 | 8772.86 |
PaddlePaddle | ✅ | 520.8 | 0.7479 | 10619.53 |
NCNN | ✅ | 260.4 | 0.7646 | 376.38 |
قم بزيارة هذا الرابط لاستكشاف المزيد من جهود قياس الأداء من قبل Seeed Studio الذي يعمل على إصدارات مختلفة من أجهزة NVIDIA Jetson.
إعادة إنتاج نتائجنا
لإعادة إنتاج ما سبق Ultralytics تقوم المعايير في جميع تنسيقات التصدير بتشغيل هذا الرمز:
مثل
لاحظ أن نتائج القياس قد تختلف بناء على التكوين الدقيق للأجهزة والبرامج للنظام ، بالإضافة إلى عبء العمل الحالي للنظام في وقت تشغيل المعايير. للحصول على النتائج الأكثر موثوقية ، استخدم مجموعة بيانات تحتوي على عدد كبير من الصور ، أي data='coco8.yaml' (4 val images), or
data='coco.yaml'' (5000 صورة فال).
أفضل الممارسات عند استخدام NVIDIA Jetson
عند استخدام NVIDIA Jetson ، هناك بعض أفضل الممارسات التي يجب اتباعها من أجل تمكين أقصى أداء على تشغيل NVIDIA Jetson YOLOv8.
-
تمكين وضع الطاقة MAX
سيؤدي تمكين وضع الطاقة MAX على Jetson إلى التأكد من تشغيل جميع نوى وحدة المعالجة المركزية ووحدة معالجة الرسومات.
-
تمكين ساعات جيتسون
سيؤدي تمكين Jetson Clocks إلى التأكد من تسجيل جميع نوى وحدة المعالجة المركزية ووحدة معالجة الرسومات بأقصى تردد لها.
-
تثبيت تطبيق إحصائيات جيتسون
يمكننا استخدام تطبيق Jetson stats لمراقبة درجات حرارة مكونات النظام والتحقق من تفاصيل النظام الأخرى مثل عرض وحدة المعالجة المركزية ووحدة معالجة الرسومات واستخدام ذاكرة الوصول العشوائي وتغيير أوضاع الطاقة وضبطها على الساعات القصوى والتحقق من معلومات JetPack
الخطوات التالية
تهانينا على الإعداد الناجح YOLOv8 على نفيديا جيتسون الخاص بك! لمزيد من التعلم والدعم ، قم بزيارة المزيد من الدليل على Ultralytics YOLOv8 المستندات!