TensorRT تصدير ل YOLOv8 نماذج
يمكن أن يتطلب نشر نماذج رؤية الكمبيوتر في بيئات عالية الأداء تنسيقا يزيد من السرعة والكفاءة. هذا صحيح بشكل خاص عند نشر نموذجك على وحدات معالجة الرسومات NVIDIA.
باستخدام TensorRT تنسيق التصدير ، يمكنك تحسين ملف Ultralytics YOLOv8 نماذج للاستدلال السريع والفعال على أجهزة NVIDIA. سيمنحك هذا الدليل خطوات سهلة المتابعة لعملية التحويل ويساعدك على تحقيق أقصى استفادة من تقنية NVIDIA المتقدمة في مشاريع التعلم العميق الخاصة بك.
TensorRT
TensorRT، التي طورتها NVIDIA، هي مجموعة تطوير برامج متقدمة (SDK) مصممة للاستدلال على التعلم العميق عالي السرعة. إنه مناسب تماما للتطبيقات في الوقت الفعلي مثل اكتشاف الكائنات.
تعمل مجموعة الأدوات هذه على تحسين نماذج التعلم العميق لوحدات معالجة الرسومات NVIDIA وينتج عنها عمليات أسرع وأكثر كفاءة. TensorRT تخضع النماذج TensorRT التحسين ، والذي يتضمن تقنيات مثل اندماج الطبقة ، والمعايرة الدقيقة (INT8 و FP16) ، والديناميكية tensor إدارة الذاكرة والضبط التلقائي ل kernel. تحويل نماذج التعلم العميق إلى TensorRT يسمح التنسيق للمطورين بإدراك إمكانات وحدات معالجة الرسومات NVIDIA بشكل كامل.
TensorRT معروف بتوافقه مع تنسيقات النماذج المختلفة ، بما في ذلك TensorFlow, PyTorchو ONNX، مما يوفر للمطورين حلا مرنا لدمج النماذج وتحسينها من أطر عمل مختلفة. يتيح هذا التنوع نشر النماذج بكفاءة عبر بيئات الأجهزة والبرامج المتنوعة.
الميزات الرئيسية ل TensorRT نماذج
TensorRT تقدم النماذج مجموعة من الميزات الرئيسية التي تساهم في كفاءتها وفعاليتها في استدلال التعلم العميق عالي السرعة:
-
معايرة دقيقة: TensorRT يدعم المعايرة الدقيقة، مما يسمح بضبط النماذج بدقة لمتطلبات دقة محددة. يتضمن ذلك دعم تنسيقات الدقة المنخفضة مثل INT8 و FP16 ، والتي يمكن أن تعزز سرعة الاستدلال مع الحفاظ على مستويات دقة مقبولة.
-
طبقة الانصهار: ال TensorRT تتضمن عملية التحسين اندماج الطبقة ، حيث يتم دمج طبقات متعددة من الشبكة العصبية في عملية واحدة. هذا يقلل من الحمل الحسابي ويحسن سرعة الاستدلال عن طريق تقليل الوصول إلى الذاكرة والحوسبة.
-
دينامي Tensor إدارة الذاكرة: TensorRT يدير بكفاءة tensor استخدام الذاكرة أثناء الاستدلال ، مما يقلل من حمل الذاكرة ويحسن تخصيص الذاكرة. ينتج عن هذا استخدام ذاكرة GPU أكثر كفاءة.
-
ضبط النواة التلقائي: TensorRT يطبق ضبط kernel التلقائي لتحديد نواة GPU الأكثر تحسينا لكل طبقة من النموذج. يضمن هذا النهج التكيفي أن يستفيد النموذج بشكل كامل من القوة الحسابية لوحدة معالجة الرسومات.
خيارات النشر في TensorRT
قبل أن ننظر إلى رمز التصدير YOLOv8 نماذج إلى TensorRT التنسيق ، دعونا نفهم أين TensorRT عادة ما تستخدم النماذج.
TensorRT يوفر العديد من خيارات النشر، وكل خيار يوازن بين سهولة التكامل وتحسين الأداء والمرونة بشكل مختلف:
- النشر داخل TensorFlowتتكامل هذه الطريقة: TensorRT إلى TensorFlow، مما يسمح بتشغيل النماذج المحسنة بطريقة مألوفة TensorFlow وسط. إنه مفيد للنماذج التي تحتوي على مزيج من الطبقات المدعومة وغير المدعومة ، مثل TF-TRT يمكن التعامل مع هذه بكفاءة.
-
مستقل TensorRT واجهة برمجة تطبيقات وقت التشغيل: توفر تحكما دقيقا ، وهو مثالي للتطبيقات ذات الأداء الحرج. إنه أكثر تعقيدا ولكنه يسمح بالتنفيذ المخصص للمشغلين غير المدعومين.
-
نفيديا Triton خادم الاستدلال: خيار يدعم النماذج من أطر عمل مختلفة. مناسب بشكل خاص للاستدلال السحابي أو الحافة ، فهو يوفر ميزات مثل تنفيذ النموذج المتزامن وتحليل النموذج.
تصدير YOLOv8 نماذج ل TensorRT
يمكنك تحسين كفاءة التنفيذ وتحسين الأداء عن طريق التحويل YOLOv8 نماذج ل TensorRT تنسيق.
تركيب
لتثبيت الحزمة المطلوبة ، قم بتشغيل:
للحصول على إرشادات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت ، تحقق من YOLOv8 دليل التثبيت. أثناء تثبيت الحزم المطلوبة ل YOLOv8، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على حلول ونصائح.
استخدام
قبل الغوص في تعليمات الاستخدام ، تأكد من إطلاعك على نطاق YOLOv8 النماذج التي تقدمها Ultralytics. سيساعدك هذا في اختيار النموذج الأنسب لمتطلبات مشروعك.
استخدام
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to TensorRT format
model.export(format='engine') # creates 'yolov8n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO('yolov8n.engine')
# Run inference
results = tensorrt_model('https://ultralytics.com/images/bus.jpg')
لمزيد من التفاصيل حول عملية التصدير ، قم بزيارة Ultralytics صفحة التوثيق الخاصة بالتصدير.
التصدير TensorRT مع التحويل الكمي INT8
يؤدي تصدير نماذج Ultralytics YOLO باستخدام TensorRT مع دقة INT8 إلى تنفيذ عملية التكميم بعد التدريب (PTQ). TensorRT يستخدم المعايرة لـ PTQ، والتي تقيس توزيع التنشيطات داخل كل تنشيط tensor بينما يعالج نموذج YOLO الاستدلال على بيانات المدخلات التمثيلية، ثم يستخدم هذا التوزيع لتقدير قيم المقياس لكل tensor. كل تنشيط tensor مرشح للتقدير الكمي له مقياس مرتبط يتم استنتاجه من خلال عملية معايرة.
عند معالجة الشبكات المكممة ضمنيًا TensorRT يستخدم INT8 بشكل انتهازي لتحسين وقت تنفيذ الطبقة. إذا كانت إحدى الطبقات تعمل بشكل أسرع في INT8 وتم تعيين مقاييس تكميمية لمدخلات ومخرجات بياناتها، يتم تعيين نواة بدقة INT8 لتلك الطبقة، وإلا فإن TensorRT يختار دقة FP32 أو FP16 للنواة بناءً على أيهما يؤدي إلى وقت تنفيذ أسرع لتلك الطبقة.
بقشيش
من الأهمية بمكان التأكد من استخدام نفس الجهاز الذي سيستخدم أوزان النموذج TensorRT للنشر للتصدير بدقة INT8، حيث يمكن أن تختلف نتائج المعايرة عبر الأجهزة.
تكوين تصدير INT8
الوسيطات المقدمة عند استخدام تصدير لطرازYOLO Ultralytics سوف إلى حد كبير تؤثر على أداء النموذج المُصدَّر. سيتعين أيضًا تحديدها بناءً على موارد الجهاز المتاحة، ومع ذلك فإن الوسيطات الافتراضية يجب العمل لمعظم وحدات معالجة رسومات NVIDIA المنفصلة Ampere (أو أحدث). خوارزمية المعايرة المستخدمة هي "ENTROPY_CALIBRATION_2"
ويمكنك قراءة المزيد من التفاصيل حول الخيارات المتاحة في دليل المطورين TensorRT. Ultralytics وجدت الاختبارات أن "ENTROPY_CALIBRATION_2"
كان الخيار الأفضل والصادرات ثابتة لاستخدام هذه الخوارزمية.
-
workspace
: يتحكم في الحجم (بالجيجابايت) لتخصيص ذاكرة الجهاز أثناء تحويل أوزان النموذج.-
احرص على استخدام الحد الأدنى
workspace
القيمة المطلوبة لأن هذا يمنع اختبار الخوارزميات التي تتطلب المزيد منworkspace
من اعتبارها من قبل منشئ TensorRT . تحديد قيمة أعلى لـworkspace
قد يستغرق أطول بكثير للمعايرة والتصدير. -
الافتراضي هو
workspace=4
(GiB)، قد تحتاج إلى زيادة هذه القيمة في حالة تعطل المعايرة (الخروج دون تحذير). -
TensorRT سيقدم تقريراً
UNSUPPORTED_STATE
أثناء التصدير إذا كانت قيمةworkspace
أكبر من الذاكرة المتوفرة للجهاز، مما يعني أن قيمةworkspace
يجب خفضها. -
لو
workspace
على القيمة القصوى وفشلت/تعطلت المعايرة، فكر في تقليل قيمimgsz
وbatch
لتقليل متطلبات الذاكرة. -
تذكّر أن معايرة INT8 خاصة بكل جهاز، فاستعارة وحدة معالجة رسومات "متطورة" للمعايرة، قد يؤدي إلى ضعف الأداء عند تشغيل الاستدلال على جهاز آخر.
-
-
batch
: الحد الأقصى لحجم الدفعة التي سيتم استخدامها للاستدلال. أثناء الاستدلال يمكن استخدام دفعات أصغر، لكن الاستدلال لن يقبل دفعات أكبر من الحجم المحدد.ملاحظه
أثناء المعايرة، ضعف
batch
سيتم استخدام الحجم المقدم. يمكن أن يؤدي استخدام دفعات صغيرة إلى قياس غير دقيق أثناء المعايرة. وذلك لأن العملية يتم ضبطها بناءً على البيانات التي تراها. قد لا تلتقط الدُفعات الصغيرة النطاق الكامل للقيم، مما يؤدي إلى حدوث مشكلات في المعايرة النهائية، لذا فإنbatch
يتضاعف الحجم تلقائيًا. إذا لم يتم تحديد حجم الدفعةbatch=1
، سيتم إجراء المعايرة عندbatch=1 * 2
لتقليل أخطاء قياس المعايرة.
قادتهم التجارب التي أجرتها NVIDIA إلى التوصية باستخدام 500 صورة معايرة على الأقل تمثل بيانات نموذجك، مع معايرة INT8 الكمية. هذا دليل إرشادي وليس قاسية شرط، و ستحتاج إلى تجربة ما هو مطلوب للأداء الجيد لمجموعة بياناتك. نظرًا لأن بيانات المعايرة مطلوبة لمعايرة INT8 مع TensorRT ، تأكد من استخدام data
الحجة عندما int8=True
ل TensorRT واستخدامها data="my_dataset.yaml"
والتي ستستخدم الصور من التحقق من الصحة للمعايرة بها. عندما لا يتم تمرير أي قيمة ل data
مع التصدير إلى TensorRT مع التكميم INT8، سيكون الافتراضي هو استخدام أحد مجموعات بيانات أمثلة "صغيرة" تستند إلى مهمة النموذج بدلاً من طرح خطأ.
مثل
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(
format="engine",
dynamic=True, #(1)!
batch=8, #(2)!
workspace=4, #(3)!
int8=True,
data="coco.yaml", #(4)!
)
model = YOLO("yolov8n.engine", task="detect") # load the model
- التصدير بمحاور ديناميكية، سيتم تمكين ذلك افتراضيًا عند التصدير باستخدام
int8=True
حتى عندما لا يتم تعيينها بشكل صريح. انظر وسيطات التصدير للحصول على معلومات إضافية. - يضبط الحد الأقصى لحجم الدفعة 8 للنموذج المُصدَّر، والذي تتم معايرته مع
batch = 2 *×* 8
لتجنب أخطاء القياس أثناء المعايرة. - يخصص 4 غيغابايت من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
- يستخدم مجموعة بيانات COCO للمعايرة، وتحديداً الصور المستخدمة للتحقق من الصحة (إجمالي 5000 صورة).
ذاكرة التخزين المؤقت للمعايرة
TensorRT سينشئ معايرة .cache
والتي يمكن إعادة استخدامها لتسريع تصدير أوزان النماذج المستقبلية باستخدام البيانات نفسها، ولكن قد يؤدي ذلك إلى معايرة ضعيفة عندما تكون البيانات مختلفة إلى حد كبير أو إذا كانت batch
تغيرت القيمة بشكل كبير. في هذه الظروف، فإن .cache
يجب إعادة تسميته ونقله إلى دليل مختلف أو حذفه بالكامل.
مزايا استخدام YOLO مع TensorRT INT8
-
تقليل حجم النموذج: يمكن أن يؤدي التحويل الكمي من FP32 إلى INT8 إلى تقليل حجم النموذج بمقدار 4 أضعاف (على القرص أو في الذاكرة)، مما يؤدي إلى تسريع أوقات التنزيل وتقليل متطلبات التخزين وتقليل بصمة الذاكرة عند نشر النموذج.
-
استهلاك أقل للطاقة: يمكن أن تستهلك العمليات ذات الدقة المنخفضة لنماذج INT8 المصدرة YOLO طاقة أقل مقارنةً بنماذج FP32، خاصةً للأجهزة التي تعمل بالبطارية.
-
سرعات استدلال محسّنة: يعمل TensorRT على تحسين النموذج للأجهزة المستهدفة، مما قد يؤدي إلى سرعات استدلال أسرع على وحدات معالجة الرسومات والأجهزة المدمجة والمسرعات.
ملاحظة حول سرعات الاستدلال
من المتوقع أن تستغرق المكالمات الاستدلالية القليلة الأولى مع نموذج تم تصديره إلى TensorRT INT8 أوقاتًا أطول من المعتاد في المعالجة المسبقة و/أو الاستدلال و/أو ما بعد المعالجة. قد يحدث هذا أيضًا عند تغيير imgsz
أثناء الاستدلال، خاصةً عند imgsz
ليس هو نفسه ما تم تحديده أثناء التصدير (تصدير imgsz
على TensorRT الملف الشخصي "الأمثل" ).
عيوب استخدام YOLO مع TensorRT INT8
-
الانخفاضات في مقاييس التقييم: استخدام دقة أقل يعني أن
mAP
,Precision
,Recall
أو أي المقاييس الأخرى المستخدمة لتقييم أداء النموذج من المرجح أن يكون أسوأ إلى حد ما. انظر قسم نتائج الأداء لمقارنة الاختلافات فيmAP50
وmAP50-95
عند التصدير باستخدام INT8 على عينة صغيرة من الأجهزة المختلفة. -
زيادة أوقات التطوير: يمكن أن يستغرق العثور على الإعدادات "المثلى" لمعايرة INT8 لمجموعة البيانات والجهاز قدرًا كبيرًا من الاختبارات.
-
الاعتماد على الأجهزة: قد تكون المعايرة ومكاسب الأداء معتمدة بشكل كبير على الأجهزة، كما أن أوزان النماذج أقل قابلية للنقل.
Ultralytics YOLO TensorRT أداء التصدير
NVIDIA A100
اداء
تم اختباره باستخدام Ubuntu 22.04.3 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
راجع مستندات الكشف للحصول على أمثلة الاستخدام مع هذه النماذج المدربة على COCO، والتي تتضمن 80 فصلا مدربا مسبقا.
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
FP32 | كوفال | 0.52 | 0.52 | 0.37 | 1 | 640 | |
FP16 | تنبأ | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
FP16 | كوفال | 0.33 | 0.52 | 0.37 | 1 | 640 | |
INT8 | تنبأ | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
INT8 | كوفال | 0.29 | 0.47 | 0.33 | 1 | 640 |
راجع مستندات التقسيم للحصول على أمثلة الاستخدام مع هذه النماذج المدربة على COCO، والتي تتضمن 80 فصلا مدربا مسبقا.
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-seg.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
mAPval 50(M) |
mAPval 50-95(M) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|---|---|
FP32 | تنبأ | 0.62 | 0.61 | 0.68 | 8 | 640 | ||||
FP32 | كوفال | 0.63 | 0.52 | 0.36 | 0.49 | 0.31 | 1 | 640 | |
FP16 | تنبأ | 0.40 | 0.39 | 0.44 | 8 | 640 | ||||
FP16 | كوفال | 0.43 | 0.52 | 0.36 | 0.49 | 0.30 | 1 | 640 | |
INT8 | تنبأ | 0.34 | 0.33 | 0.37 | 8 | 640 | ||||
INT8 | كوفال | 0.36 | 0.46 | 0.32 | 0.43 | 0.27 | 1 | 640 |
راجع مستندات التصنيف للحصول على أمثلة الاستخدام مع هذه النماذج المدربة على ImageNet ، والتي تتضمن 1000 فئة مدربة مسبقا.
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-cls.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
أعلى 1 | أعلى 5 | batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 0.26 | 0.25 | 0.28 | 0.35 | 0.61 | 8 | 640 |
FP32 | إيمدج نتفال | 0.26 | 1 | 640 | |||
FP16 | تنبأ | 0.18 | 0.17 | 0.19 | 0.35 | 0.61 | 8 | 640 |
FP16 | إيمدج نتفال | 0.18 | 1 | 640 | |||
INT8 | تنبأ | 0.16 | 0.15 | 0.57 | 0.32 | 0.59 | 8 | 640 |
INT8 | إيمدج نتفال | 0.15 | 1 | 640 |
راجع مستندات تقدير الوضعية للاطلاع على أمثلة استخدام هذه النماذج المدرّبة على COCO، والتي تتضمن فئة واحدة مدرّبة مسبقًا، "شخص".
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-pose.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
mAPval 50(P) |
mAPval 50-95(P) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|---|---|
FP32 | تنبأ | 0.54 | 0.53 | 0.58 | 8 | 640 | ||||
FP32 | كوفال | 0.55 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
FP16 | تنبأ | 0.37 | 0.35 | 0.41 | 8 | 640 | ||||
FP16 | كوفال | 0.36 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
INT8 | تنبأ | 0.29 | 0.28 | 0.33 | 8 | 640 | ||||
INT8 | كوفال | 0.30 | 0.90 | 0.68 | 0.78 | 0.47 | 1 | 640 |
راجع مستندات الكشف الموجهة للحصول على أمثلة الاستخدام مع هذه النماذج المدربة على DOTAv1، والتي تتضمن 15 فصلا مدربا مسبقا.
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-obb.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 0.52 | 0.51 | 0.59 | 8 | 640 | ||
FP32 | DOTAv1val | 0.76 | 0.50 | 0.36 | 1 | 640 | |
FP16 | تنبأ | 0.34 | 0.33 | 0.42 | 8 | 640 | ||
FP16 | DOTAv1val | 0.59 | 0.50 | 0.36 | 1 | 640 | |
INT8 | تنبأ | 0.29 | 0.28 | 0.33 | 8 | 640 | ||
INT8 | DOTAv1val | 0.32 | 0.45 | 0.32 | 1 | 640 |
وحدات معالجة الرسومات الاستهلاكية
أداء الكشف (COCO)
تم اختباره مع نظام التشغيل Windows 10.0.19045, python 3.10.9
, ultralytics==8.2.4
, tensorrt==10.0.0b6
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
FP32 | كوفال | 1.37 | 0.52 | 0.37 | 1 | 640 | |
FP16 | تنبأ | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
FP16 | كوفال | 0.85 | 0.52 | 0.37 | 1 | 640 | |
INT8 | تنبأ | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
INT8 | كوفال | 0.74 | 0.47 | 0.33 | 1 | 640 |
تم اختباره مع Windows 10.0.22631, python 3.11.9
, ultralytics==8.2.4
, tensorrt==10.0.1
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 1.76 | 1.69 | 1.87 | 8 | 640 | ||
FP32 | كوفال | 1.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | تنبأ | 0.86 | 0.75 | 1.00 | 8 | 640 | ||
FP16 | كوفال | 1.43 | 0.52 | 0.37 | 1 | 640 | |
INT8 | تنبأ | 0.80 | 0.75 | 1.00 | 8 | 640 | ||
INT8 | كوفال | 1.35 | 0.47 | 0.33 | 1 | 640 |
تم اختباره مع نظام التشغيل Pop!_OS 22.04 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 2.84 | 2.84 | 2.85 | 8 | 640 | ||
FP32 | كوفال | 2.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | تنبأ | 1.09 | 1.09 | 1.10 | 8 | 640 | ||
FP16 | كوفال | 1.20 | 0.52 | 0.37 | 1 | 640 | |
INT8 | تنبأ | 0.75 | 0.74 | 0.75 | 8 | 640 | ||
INT8 | كوفال | 0.76 | 0.47 | 0.33 | 1 | 640 |
الأجهزة المدمجة
أداء الكشف (COCO)
تم اختباره باستخدام JetPack 5.1.3 (L4T 35.5.0) Ubuntu 20.04.6, python 3.8.10
, ultralytics==8.2.4
, tensorrt==8.5.2.2
ملاحظه
أزمنة الاستدلال الموضحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
دقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
حجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | تنبأ | 6.90 | 6.89 | 6.93 | 8 | 640 | ||
FP32 | كوفال | 6.97 | 0.52 | 0.37 | 1 | 640 | |
FP16 | تنبأ | 3.36 | 3.35 | 3.39 | 8 | 640 | ||
FP16 | كوفال | 3.39 | 0.52 | 0.37 | 1 | 640 | |
INT8 | تنبأ | 2.32 | 2.32 | 2.34 | 8 | 640 | ||
INT8 | كوفال | 2.33 | 0.47 | 0.33 | 1 | 640 |
معلومات
اطلع على دليل البدء السريع الخاص بنا على NVIDIA Jetson مع Ultralytics YOLO لمعرفة المزيد حول الإعداد والتهيئة.
طرق التقييم
قم بتوسيع الأقسام أدناه للحصول على معلومات حول كيفية تصدير هذه النماذج واختبارها.
تكوينات التصدير
راجع وضع التصدير للحصول على التفاصيل المتعلقة بوسائط تكوين التصدير.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
# TensorRT FP32
out = model.export(
format="engine",
imgsz:640,
dynamic:True,
verbose:False,
batch:8,
workspace:2
)
# TensorRT FP16
out = model.export(
format="engine",
imgsz:640,
dynamic:True,
verbose:False,
batch:8,
workspace:2,
half=True
)
# TensorRT INT8
out = model.export(
format="engine",
imgsz:640,
dynamic:True,
verbose:False,
batch:8,
workspace:2,
int8=True,
data:"data.yaml" # COCO, ImageNet, or DOTAv1 for appropriate model task
)
حلقة التنبؤ
راجع وضع التنبؤ للحصول على معلومات إضافية.
تكوين التحقق من الصحة
رأى val
الوضع لمعرفة المزيد عن وسيطات تكوين التحقق من الصحة.
نشر التصدير YOLOv8 TensorRT نماذج
بعد أن نجحت في تصدير Ultralytics YOLOv8 نماذج ل TensorRT ، أنت الآن جاهز لنشرها. للحصول على إرشادات متعمقة حول نشر TensorRT النماذج في إعدادات مختلفة ، ألق نظرة على الموارد التالية:
-
نشر Ultralytics مع خادم Triton : دليلنا الخاص بكيفية استخدام خادم NVIDIA Triton Inference ( TensorRT Inference سابقًا) الخاص بـ NVIDIA Inference ( Inference سابقًا) خصيصًا للاستخدام مع نماذج Ultralytics YOLO .
-
نشر الشبكات العصبية العميقة باستخدام NVIDIA TensorRTتشرح هذه المقالة كيفية استخدام NVIDIA: TensorRT لنشر الشبكات العصبية العميقة على منصات النشر القائمة على GPU بكفاءة.
-
الذكاء الاصطناعي شاملة لأجهزة الكمبيوتر المستندة إلى NVIDIA: NVIDIA TensorRT التوزيع: يشرح منشور المدونة هذا استخدام NVIDIA TensorRT لتحسين ونشر نماذج الذكاء الاصطناعي على أجهزة الكمبيوتر المستندة إلى NVIDIA.
-
مستودع جيثب ل NVIDIA TensorRT:: هذا هو مستودع GitHub الرسمي الذي يحتوي على الكود المصدري والوثائق الخاصة ب NVIDIA TensorRT.
ملخص
في هذا الدليل ، ركزنا على التحويل Ultralytics YOLOv8 نماذج إلى نفيديا TensorRT تنسيق النموذج. خطوة التحويل هذه ضرورية لتحسين كفاءة وسرعة YOLOv8 النماذج، مما يجعلها أكثر فعالية وملاءمة لبيئات النشر المتنوعة.
لمزيد من المعلومات حول تفاصيل الاستخدام ، ألق نظرة على TensorRT الوثائق الرسمية.
إذا كنت مهتما بالمزيد Ultralytics YOLOv8 عمليات التكامل ، توفر صفحة دليل التكامل الخاصة بنا مجموعة واسعة من الموارد والرؤى الإعلامية.