सामग्री पर जाएं

TensorRT के लिए निर्यात करें YOLOv8 मॉडल

उच्च-प्रदर्शन वाले वातावरण में कंप्यूटर विज़न मॉडल को तैनात करने के लिए एक प्रारूप की आवश्यकता हो सकती है जो गति और दक्षता को अधिकतम करता है। यह विशेष रूप से सच है जब आप अपने मॉडल को NVIDIA GPU पर तैनात कर रहे हों।

का उपयोग करके TensorRT निर्यात प्रारूप, आप अपने को बढ़ा सकते हैं Ultralytics YOLOv8 NVIDIA हार्डवेयर पर तेज और कुशल अनुमान के लिए मॉडल। यह मार्गदर्शिका आपको रूपांतरण प्रक्रिया के लिए पालन करने में आसान चरण देगी और आपकी गहन शिक्षण परियोजनाओं में NVIDIA की उन्नत तकनीक का अधिकतम लाभ उठाने में आपकी सहायता करेगी।

TensorRT

TensorRT विहंगावलोकन

TensorRT, developed by NVIDIA, is an advanced software development kit (SDK) designed for high-speed deep learning inference. It's well-suited for real-time applications like object detection.

यह टूलकिट NVIDIA GPU के लिए गहन शिक्षण मॉडल का अनुकूलन करता है और इसके परिणामस्वरूप तेज़ और अधिक कुशल संचालन होता है। TensorRT मॉडल से गुजरते हैं TensorRT अनुकूलन, जिसमें परत संलयन, सटीक अंशांकन (INT8 और FP16), गतिशील जैसी तकनीकें शामिल हैं tensor मेमोरी प्रबंधन, और कर्नेल ऑटो-ट्यूनिंग। गहन शिक्षण मॉडल को में परिवर्तित करना TensorRT प्रारूप डेवलपर्स को NVIDIA GPU की क्षमता को पूरी तरह से महसूस करने की अनुमति देता है।

TensorRT विभिन्न मॉडल प्रारूपों के साथ अपनी संगतता के लिए जाना जाता है, जिसमें शामिल हैं TensorFlow, PyTorchऔर ONNX, डेवलपर्स को विभिन्न रूपरेखाओं से मॉडल को एकीकृत और अनुकूलित करने के लिए एक लचीला समाधान प्रदान करना। यह बहुमुखी प्रतिभा विविध हार्डवेयर और सॉफ्टवेयर वातावरण में कुशल मॉडल परिनियोजन को सक्षम बनाती है।

की मुख्य विशेषताएं TensorRT मॉडल

TensorRT मॉडल कई प्रमुख विशेषताओं की पेशकश करते हैं जो उच्च गति वाले गहन शिक्षण अनुमान में उनकी दक्षता और प्रभावशीलता में योगदान करते हैं:

  • सटीक अंशांकन: TensorRT सटीक अंशांकन का समर्थन करता है, जिससे मॉडल को विशिष्ट सटीकता आवश्यकताओं के लिए ठीक-ठीक ट्यून किया जा सकता है। इसमें INT8 और FP16 जैसे कम सटीक प्रारूपों के लिए समर्थन शामिल है, जो स्वीकार्य सटीकता स्तरों को बनाए रखते हुए अनुमान गति को और बढ़ा सकता है।

  • लेयर फ्यूजन: TensorRT अनुकूलन प्रक्रिया में परत संलयन शामिल है, जहां एक तंत्रिका नेटवर्क की कई परतों को एक ही ऑपरेशन में जोड़ा जाता है। यह कम्प्यूटेशनल ओवरहेड को कम करता है और मेमोरी एक्सेस और कम्प्यूटेशन को कम करके अनुमान की गति में सुधार करता है।

TensorRT लेयर फ्यूजन

  • गतिशील Tensor मेमोरी प्रबंधन: TensorRT कुशलता से प्रबंधन करता है tensor अनुमान के दौरान स्मृति उपयोग, स्मृति उपरि को कम करना और स्मृति आवंटन का अनुकूलन। इसके परिणामस्वरूप अधिक कुशल GPU मेमोरी उपयोग होता है।

  • स्वचालित कर्नेल ट्यूनिंग: TensorRT मॉडल की प्रत्येक परत के लिए सबसे अनुकूलित GPU कर्नेल का चयन करने के लिए स्वचालित कर्नेल ट्यूनिंग लागू करता है. यह अनुकूली दृष्टिकोण सुनिश्चित करता है कि मॉडल GPU की कम्प्यूटेशनल शक्ति का पूरा लाभ उठाता है।

में परिनियोजन विकल्प TensorRT

Before we look at the code for exporting YOLOv8 models to the TensorRT format, let's understand where TensorRT models are normally used.

TensorRT कई परिनियोजन विकल्प प्रदान करता है, और प्रत्येक विकल्प एकीकरण में आसानी, प्रदर्शन अनुकूलन और लचीलेपन को अलग-अलग तरीके से संतुलित करता है:

  • भीतर परिनियोजन TensorFlow: यह विधि एकीकृत करती है TensorRT में TensorFlow, अनुकूलित मॉडल को एक परिचित में चलाने की अनुमति देता है TensorFlow पर्यावरण। यह समर्थित और असमर्थित परतों के मिश्रण वाले मॉडल के लिए उपयोगी है, जैसा कि TF-TRT इन कुशलता से संभाल सकते हैं.

TensorRT विहंगावलोकन

  • स्टैंडअलोन TensorRT रनटाइम एपीआई: दानेदार नियंत्रण प्रदान करता है, प्रदर्शन-महत्वपूर्ण अनुप्रयोगों के लिए आदर्श है। यह अधिक जटिल है लेकिन असमर्थित ऑपरेटरों के कस्टम कार्यान्वयन की अनुमति देता है।

  • एनवीडिया Triton अनुमान सर्वर: एक विकल्प जो विभिन्न ढांचे से मॉडल का समर्थन करता है। क्लाउड या एज अनुमान के लिए विशेष रूप से उपयुक्त, यह समवर्ती मॉडल निष्पादन और मॉडल विश्लेषण जैसी सुविधाएँ प्रदान करता है।

निर्यात YOLOv8 करने के लिए मॉडल TensorRT

आप निष्पादन दक्षता में सुधार कर सकते हैं और परिवर्तित करके प्रदर्शन को अनुकूलित कर सकते हैं YOLOv8 करने के लिए मॉडल TensorRT प्रारूप।

संस्थापन

आवश्यक पैकेज स्थापित करने के लिए, चलाएं:

संस्थापन

# Install the required package for YOLOv8
pip install ultralytics

स्थापना प्रक्रिया से संबंधित विस्तृत निर्देशों और सर्वोत्तम प्रथाओं के लिए, हमारी जाँच करें 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")
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine''

# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

निर्यात प्रक्रिया के बारे में अधिक जानकारी के लिए, पर जाएँ Ultralytics निर्यात पर प्रलेखन पृष्ठ

निर्यात TensorRT INT8 परिमाणीकरण के साथ

निर्यात Ultralytics YOLO का उपयोग कर मॉडल TensorRT INT8 के साथ परिशुद्धता पोस्ट-ट्रेनिंग परिमाणीकरण (PTQ) निष्पादित करती है। TensorRT पीटीक्यू के लिए अंशांकन का उपयोग करता है, जो प्रत्येक सक्रियण के भीतर सक्रियण के वितरण को मापता है tensor के रूप में YOLO मॉडल प्रतिनिधि इनपुट डेटा पर अनुमान संसाधित करता है, और फिर प्रत्येक के लिए स्केल मानों का अनुमान लगाने के लिए उस वितरण का उपयोग करता है tensor. प्रत्येक सक्रियण tensor यही है, परिमाणीकरण के लिए एक उम्मीदवार के पास एक संबद्ध पैमाना है जो एक अंशांकन प्रक्रिया द्वारा घटाया जाता है।

अंतर्निहित रूप से मात्रात्मक नेटवर्क को संसाधित करते समय TensorRT परत निष्पादन समय को अनुकूलित करने के लिए अवसरवादी रूप से INT8 का उपयोग करता है। यदि एक परत INT8 में तेजी से चलती है और उसके डेटा इनपुट और आउटपुट पर परिमाणीकरण पैमाने को सौंपा गया है, तो INT8 परिशुद्धता वाला कर्नेल उस परत को सौंपा गया है, अन्यथा TensorRT कर्नेल के लिए FP32 या FP16 की सटीकता का चयन करता है, जो उस परत के लिए तेजी से निष्पादन समय में परिणाम देता है।

नोक

यह सुनिश्चित करना महत्वपूर्ण है कि वही उपकरण जो TensorRT परिनियोजन के लिए मॉडल भार का उपयोग INT8 परिशुद्धता के साथ निर्यात करने के लिए किया जाता है, क्योंकि अंशांकन परिणाम सभी उपकरणों में भिन्न हो सकते हैं।

INT8 निर्यात कॉन्फ़िगर करना

उपयोग करते समय प्रदान किए गए तर्क निर्यातित माल एक के लिए Ultralytics YOLO मॉडल होगा अत्‍यधिक निर्यात किए गए मॉडल के प्रदर्शन को प्रभावित करते हैं। उन्हें उपलब्ध डिवाइस संसाधनों के आधार पर भी चुनना होगा, हालांकि डिफ़ॉल्ट तर्क चाहिए अधिकांश के लिए काम एम्पीयर (या नया) NVIDIA असतत GPU. उपयोग किया जाने वाला अंशांकन एल्गोरिथ्म है "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 के लिए अंशांकन प्रत्येक डिवाइस के लिए विशिष्ट है, अंशांकन के लिए "उच्च-अंत" GPU उधार लेना, किसी अन्य डिवाइस पर अनुमान चलाने पर खराब प्रदर्शन का परिणाम हो सकता है।

  • batch : अधिकतम बैच-आकार जिसका उपयोग अनुमान के लिए किया जाएगा। अनुमान के दौरान छोटे बैचों का उपयोग किया जा सकता है, लेकिन अनुमान निर्दिष्ट बैचों से बड़े बैचों को स्वीकार नहीं करेगा।

    नोट

    During calibration, twice the `batch` size provided will be used. Using small batches can lead to inaccurate scaling during calibration. This is because the process adjusts based on the data it sees. Small batches might not capture the full range of values, leading to issues with the final calibration, so the `batch` size is doubled automatically. If no batch size is specified `batch=1`, calibration will be run at `batch=1 * 2` to reduce calibration scaling errors.
    

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)!
)

# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. गतिशील अक्षों के साथ निर्यात करता है, यह निर्यात करते समय डिफ़ॉल्ट रूप से सक्षम हो जाएगा int8=True यहां तक कि जब स्पष्ट रूप से सेट नहीं किया गया हो। देखना निर्यात तर्क अतिरिक्त जानकारी के लिए।
  2. निर्यात किए गए मॉडल के लिए 8 का अधिकतम बैच आकार सेट करता है, जो इसके साथ कैलिब्रेट करता है batch = 2 * 8 अंशांकन के दौरान स्केलिंग त्रुटियों से बचने के लिए।
  3. रूपांतरण प्रक्रिया के लिए संपूर्ण डिवाइस आवंटित करने के बजाय 4 GiB मेमोरी आवंटित करता है।
  4. अंशांकन के लिए COCO डेटासेट का उपयोग करता है, विशेष रूप से सत्यापन के लिए उपयोग की जाने वाली छवियां (कुल 5,000)।
# Export a YOLOv8n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolov8n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml  # creates 'yolov8n.engine''

# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
अंशांकन कैश

TensorRT एक अंशांकन उत्पन्न करेगा .cache जिसे उसी डेटा का उपयोग करके भविष्य के मॉडल वजन के निर्यात में तेजी लाने के लिए फिर से उपयोग किया जा सकता है, लेकिन इसके परिणामस्वरूप खराब अंशांकन हो सकता है जब डेटा बहुत अलग होता है या यदि batch मूल्य काफी बदल जाता है। इन परिस्थितियों में, मौजूदा .cache इसका नाम बदला जाना चाहिए और एक अलग निर्देशिका में ले जाया जाना चाहिए या पूरी तरह से हटा दिया जाना चाहिए।

उपयोग करने के लाभ YOLO के साथ TensorRT इंट8

  • मॉडल का आकार कम होना: FP32 से INT8 तक परिमाणीकरण मॉडल के आकार को 4x (डिस्क पर या मेमोरी में) कम कर सकता है, जिससे डाउनलोड समय तेजी से बढ़ सकता है। कम भंडारण आवश्यकताएं, और मॉडल को तैनात करते समय मेमोरी पदचिह्न कम हो जाता है।

  • कम बिजली की खपत: निर्यात किए गए INT8 के लिए कम सटीक संचालन YOLO FP32 मॉडल की तुलना में मॉडल कम बिजली की खपत कर सकते हैं, खासकर बैटरी से चलने वाले उपकरणों के लिए।

  • बेहतर अनुमान गति: TensorRT लक्ष्य हार्डवेयर के लिए मॉडल का अनुकूलन करता है, संभावित रूप से GPU, एम्बेडेड डिवाइस और त्वरक पर तेज अनुमान गति की ओर ले जाता है।

अनुमान गति पर ध्यान दें

निर्यात किए गए मॉडल के साथ पहले कुछ अनुमान कॉल TensorRT INT8 से सामान्य प्रीप्रोसेसिंग, अनुमान और/या पोस्टप्रोसेसिंग समय से अधिक होने की उम्मीद की जा सकती है। बदलते समय भी ऐसा हो सकता है imgsz अनुमान के दौरान, खासकर जब imgsz निर्यात (निर्यात) के दौरान निर्दिष्ट किए गए के समान नहीं है imgsz के रूप में सेट किया गया है TensorRT "इष्टतम" प्रोफ़ाइल)।

उपयोग करने की कमियां YOLO के साथ TensorRT इंट8

  • मूल्यांकन मेट्रिक्स में कमी: कम परिशुद्धता का उपयोग करने का मतलब यह होगा कि mAP, Precision, Recall या कोई भी मॉडल के प्रदर्शन का मूल्यांकन करने के लिए उपयोग किए जाने वाले अन्य मीट्रिक कुछ हद तक बदतर होने की संभावना है। देखें प्रदर्शन परिणाम अनुभाग में अंतर की तुलना करने के लिए mAP50 और mAP50-95 विभिन्न उपकरणों के छोटे नमूने पर INT8 के साथ निर्यात करते समय।

  • विकास के समय में वृद्धि: डेटासेट और डिवाइस के लिए INT8 अंशांकन के लिए "इष्टतम" सेटिंग्स ढूँढना परीक्षण की एक महत्वपूर्ण राशि ले सकता है।

  • Hardware dependency: Calibration and performance gains could be highly hardware dependent and model weights are less transferable.

Ultralytics YOLO TensorRT निर्यात प्रदर्शन

एनवीडिया A100

प्रदर्शन

उबंटू 22.04.3 एलटीएस के साथ परीक्षण किया गया, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

COCO पर प्रशिक्षित इन मॉडलों के साथ उपयोग के उदाहरणों के लिए डिटेक्शन डॉक्स देखें, जिसमें 80 पूर्व-प्रशिक्षित कक्षाएं शामिल हैं।

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 0.52 0.51 | 0.56 8 640
एफपी32 COCOval 0.52 0.52 0.37 1 640
एफपी16 भविष्‍यवाणी करना 0.34 0.34 | 0.41 8 640
एफपी16 COCOval 0.33 0.52 0.37 1 640
INT8 भविष्‍यवाणी करना 0.28 0.27 | 0.31 8 640
INT8 COCOval 0.29 0.47 0.33 1 640

COCO पर प्रशिक्षित इन मॉडलों के साथ उपयोग के उदाहरणों के लिए सेगमेंटेशन डॉक्स देखें, जिसमें 80 पूर्व-प्रशिक्षित कक्षाएं शामिल हैं।

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n-seg.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
मानचित्रवैल
50 (एम)
मानचित्रवैल
50-95 (एम)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 0.62 0.61 | 0.68 8 640
एफपी32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
एफपी16 भविष्‍यवाणी करना 0.40 0.39 | 0.44 8 640
एफपी16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 भविष्‍यवाणी करना 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

इमेजनेट पर प्रशिक्षित इन मॉडलों के साथ उपयोग के उदाहरणों के लिए वर्गीकरण डॉक्स देखें, जिसमें 1000 पूर्व-प्रशिक्षित कक्षाएं शामिल हैं।

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n-cls.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
शीर्ष-1 शीर्ष-5 batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 0.26 0.25 | 0.28 8 640
एफपी32 इमेजनेटवैल 0.26 0.35 0.61 1 640
एफपी16 भविष्‍यवाणी करना 0.18 0.17 | 0.19 8 640
एफपी16 इमेजनेटवैल 0.18 0.35 0.61 1 640
INT8 भविष्‍यवाणी करना 0.16 0.15 | 0.57 8 640
INT8 इमेजनेटवैल 0.15 0.32 0.59 1 640

COCO पर प्रशिक्षित इन मॉडलों के साथ उपयोग के उदाहरणों के लिए पोज़ एस्टीमेशन डॉक्स देखें, जिसमें 1 पूर्व-प्रशिक्षित वर्ग, "व्यक्ति" शामिल हैं।

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n-pose.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
मानचित्रवैल
50(पी)
मानचित्रवैल
50-95 (पी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 0.54 0.53 | 0.58 8 640
एफपी32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
एफपी16 भविष्‍यवाणी करना 0.37 0.35 | 0.41 8 640
एफपी16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 भविष्‍यवाणी करना 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

DOTAv1 पर प्रशिक्षित इन मॉडलों के साथ उपयोग के उदाहरणों के लिए ओरिएंटेड डिटेक्शन डॉक्स देखें, जिसमें 15 पूर्व-प्रशिक्षित कक्षाएं शामिल हैं।

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n-obb.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 0.52 0.51 | 0.59 8 640
एफपी32 DOTAv1val 0.76 0.50 0.36 1 640
एफपी16 भविष्‍यवाणी करना 0.34 0.33 | 0.42 8 640
एफपी16 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

उपभोक्ता GPU

डिटेक्शन परफॉर्मेंस (COCO)

विंडोज 10.0.19045 के साथ परीक्षण किया गया, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 1.06 0.75 | 1.88 8 640
एफपी32 COCOval 1.37 0.52 0.37 1 640
एफपी16 भविष्‍यवाणी करना 0.62 0.75 | 1.13 8 640
एफपी16 COCOval 0.85 0.52 0.37 1 640
INT8 भविष्‍यवाणी करना 0.52 0.38 | 1.00 8 640
INT8 COCOval 0.74 0.47 0.33 1 640

विंडोज 10.0.22631 के साथ परीक्षण किया गया, python 3.11.9, ultralytics==8.2.4, tensorrt==10.0.1

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 1.76 1.69 | 1.87 8 640
एफपी32 COCOval 1.94 0.52 0.37 1 640
एफपी16 भविष्‍यवाणी करना 0.86 0.75 | 1.00 8 640
एफपी16 COCOval 1.43 0.52 0.37 1 640
INT8 भविष्‍यवाणी करना 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

पॉप के साथ परीक्षण किया गया!_OS 22.04 एलटीएस, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 2.84 2.84 | 2.85 8 640
एफपी32 COCOval 2.94 0.52 0.37 1 640
एफपी16 भविष्‍यवाणी करना 1.09 1.09 | 1.10 8 640
एफपी16 COCOval 1.20 0.52 0.37 1 640
INT8 भविष्‍यवाणी करना 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

एम्बेडेड डिवाइस

डिटेक्शन परफॉर्मेंस (COCO)

JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS के साथ परीक्षण किया गया, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

नोट

के लिए दिखाया गया अनुमान समय mean, min (सबसे तेज़), और max (सबसे धीमा) पूर्व-प्रशिक्षित वजन का उपयोग करके प्रत्येक परीक्षण के लिए yolov8n.engine

यथार्थता इवल परीक्षण औसत
(एमएस)
मिनट | अधिकतम
(एमएस)
मानचित्रवैल
50(ख)
मानचित्रवैल
50-95 (बी)
batch आकार वाला
(पिक्सेल)
एफपी32 भविष्‍यवाणी करना 6.11 6.10 | 6.29 8 640
एफपी32 COCOval 6.17 0.52 0.37 1 640
एफपी16 भविष्‍यवाणी करना 3.18 3.18 | 3.20 8 640
एफपी16 COCOval 3.19 0.52 0.37 1 640
INT8 भविष्‍यवाणी करना 2.30 2.29 | 2.35 8 640
INT8 COCOval 2.32 0.46 0.32 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 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
लूप की भविष्यवाणी करें

अतिरिक्त जानकारी के लिए भविष्यवाणी मोड देखें।

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
सत्यापन कॉन्फ़िगरेशन

देखना val मोड समूह सत्यापन कॉन्फ़िगरेशन तर्कों के बारे में अधिक जानने के लिए.

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

निर्यात की गई तैनाती YOLOv8 TensorRT मॉडल

सफलतापूर्वक अपने निर्यात करने के बाद Ultralytics YOLOv8 करने के लिए मॉडल TensorRT प्रारूप, अब आप उन्हें तैनात करने के लिए तैयार हैं। अपने परिनियोजन पर गहन निर्देशों के लिए TensorRT विभिन्न सेटिंग्स में मॉडल, निम्नलिखित संसाधनों पर एक नज़र डालें:

सारांश

इस गाइड में, हमने परिवर्तित करने पर ध्यान केंद्रित किया Ultralytics YOLOv8 NVIDIA के लिए मॉडल TensorRT मॉडल प्रारूप। यह रूपांतरण कदम दक्षता और गति में सुधार के लिए महत्वपूर्ण है YOLOv8 मॉडल, उन्हें विविध तैनाती वातावरण के लिए अधिक प्रभावी और उपयुक्त बनाते हैं।

उपयोग विवरण के बारे में अधिक जानकारी के लिए, पर एक नज़र डालें TensorRT आधिकारिक दस्तावेज।

यदि आप अतिरिक्त के बारे में उत्सुक हैं Ultralytics YOLOv8 एकीकरण, हमारा एकीकरण गाइड पृष्ठ सूचनात्मक संसाधनों और अंतर्दृष्टि का व्यापक चयन प्रदान करता है।



Created 2024-01-28, Updated 2024-06-10
Authors: glenn-jocher (8), IvorZhu331 (1), Burhan-Q (2), abirami-vina (1)

टिप्पणियाँ