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

के साथ मॉडल भविष्यवाणी Ultralytics YOLO

Ultralytics YOLO पारिस्थितिकी तंत्र और एकीकरण

परिचय

मशीन लर्निंग और कंप्यूटर दृष्टि की दुनिया में, दृश्य डेटा से समझ बनाने की प्रक्रिया को 'अनुमान' या 'भविष्यवाणी' कहा जाता है। Ultralytics YOLOv8 एक शक्तिशाली सुविधा प्रदान करता है जिसे पूर्वानुमान मोड के रूप में जाना जाता है जो डेटा स्रोतों की एक विस्तृत श्रृंखला पर उच्च-प्रदर्शन, वास्तविक समय अनुमान के अनुरूप है।



सतर्कता: आउटपुट को कैसे निकालें Ultralytics YOLOv8 कस्टम परियोजनाओं के लिए मॉडल।

वास्तविक दुनिया के अनुप्रयोग

निर्माण खेल-कूद सुरक्षा
वाहन स्पेयर पार्ट्स का पता लगाना फुटबॉल प्लेयर डिटेक्शन पीपल फॉल डिटेक्शन
वाहन स्पेयर पार्ट्स का पता लगाना फुटबॉल प्लेयर डिटेक्शन पीपल फॉल डिटेक्शन

क्यों उपयोग करें Ultralytics YOLO अनुमान के लिए?

यहां बताया गया है कि आपको क्यों विचार करना चाहिए YOLOv8आपकी विभिन्न अनुमान आवश्यकताओं के लिए भविष्यवाणी मोड:

  • बहुमुखी प्रतिभा: छवियों, वीडियो और यहां तक कि लाइव स्ट्रीम पर अनुमान लगाने में सक्षम।
  • प्रदर्शन: सटीकता का त्याग किए बिना वास्तविक समय, उच्च गति प्रसंस्करण के लिए इंजीनियर।
  • उपयोग में आसानी: अंतर्ज्ञानी Python और CLI तेजी से तैनाती और परीक्षण के लिए इंटरफेस।
  • अत्यधिक अनुकूलन: आपकी विशिष्ट आवश्यकताओं के अनुसार मॉडल के अनुमान व्यवहार को ट्यून करने के लिए विभिन्न सेटिंग्स और पैरामीटर।

भविष्यवाणी मोड की मुख्य विशेषताएं

YOLOv8भविष्यवाणी मोड मजबूत और बहुमुखी होने के लिए डिज़ाइन किया गया है, विशेषता:

  • एकाधिक डेटा स्रोत संगतता: चाहे आपका डेटा व्यक्तिगत छवियों, छवियों, वीडियो फ़ाइलों या रीयल-टाइम वीडियो स्ट्रीम के संग्रह के रूप में हो, भविष्यवाणी मोड ने आपको कवर किया है।
  • स्ट्रीमिंग मोड: की मेमोरी-कुशल जनरेटर उत्पन्न करने के लिए स्ट्रीमिंग सुविधा का उपयोग करें Results वस्तुएं। सेटिंग करके इसे सक्षम करें stream=True भविष्यवक्ता की कॉल विधि में।
  • बैच प्रोसेसिंग: एक ही बैच में कई छवियों या वीडियो फ़्रेमों को संसाधित करने की क्षमता, अनुमान समय को और तेज करती है।
  • एकीकरण के अनुकूल: मौजूदा डेटा पाइपलाइनों और अन्य सॉफ़्टवेयर घटकों के साथ आसानी से एकीकृत करें, इसके लचीले एपीआई के लिए धन्यवाद।

Ultralytics YOLO मॉडल या तो एक लौटाते हैं Python की सूची Results ऑब्जेक्ट्स, या एक मेमोरी-कुशल Python का जनरेटर Results वस्तुओं जब stream=True अनुमान के दौरान मॉडल को पारित किया जाता है:

भविष्‍यवाणी करना

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.jpg'])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk
from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.jpg'], stream=True)  # return a generator of Results objects

# Process results generator
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk

अनुमान स्रोत

YOLOv8 अनुमान के लिए विभिन्न प्रकार के इनपुट स्रोतों को संसाधित कर सकते हैं, जैसा कि नीचे दी गई तालिका में दिखाया गया है। स्रोतों में स्थिर चित्र, वीडियो स्ट्रीम और विभिन्न डेटा प्रारूप शामिल हैं। तालिका यह भी इंगित करती है कि तर्क के साथ स्ट्रीमिंग मोड में प्रत्येक स्रोत का उपयोग किया जा सकता है या नहीं stream=True ✅ स्ट्रीमिंग मोड वीडियो या लाइव स्ट्रीम को संसाधित करने के लिए फायदेमंद है क्योंकि यह सभी फ़्रेमों को मेमोरी में लोड करने के बजाय परिणामों का जनरेटर बनाता है।

नोक

प्रयोग stream=True मेमोरी को कुशलतापूर्वक प्रबंधित करने के लिए लंबे वीडियो या बड़े डेटासेट को संसाधित करने के लिए। कब stream=False, सभी फ़्रेमों या डेटा बिंदुओं के परिणाम मेमोरी में संग्रहीत होते हैं, जो बड़े इनपुट के लिए जल्दी से जोड़ सकते हैं और आउट-ऑफ-मेमोरी त्रुटियों का कारण बन सकते हैं। इसके विपरीत, stream=True एक जनरेटर का उपयोग करता है, जो केवल स्मृति में वर्तमान फ्रेम या डेटा बिंदु के परिणामों को रखता है, स्मृति खपत को काफी कम करता है और आउट-ऑफ-मेमोरी मुद्दों को रोकता है।

मूल युक्ति प्रकार नोट्स
प्रतिबिंब 'image.jpg' str नहीं तो Path एकल छवि फ़ाइल।
यूआरएल 'https://ultralytics.com/images/bus.jpg' str एक छवि के लिए URL।
स्क्रीनशॉट 'screen' str स्क्रीनशॉट कैप्चर करें.
जनहित याचिका Image.open('im.jpg') PIL.Image RGB च्यानलहरूसँग HWC ढाँचा।
ओपनसीवी cv2.imread('im.jpg') np.ndarray बीजीआर चैनलों के साथ एचडब्ल्यूसी प्रारूप uint8 (0-255).
स्तब्ध np.zeros((640,1280,3)) np.ndarray बीजीआर चैनलों के साथ एचडब्ल्यूसी प्रारूप uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor RGB चैनलों के साथ BCHW प्रारूप float32 (0.0-1.0).
सीएसवी 'sources.csv' str नहीं तो Path CSV फ़ाइल जिसमें छवियों, वीडियो या निर्देशिकाओं के पथ होते हैं।
वीडियो ✅ 'video.mp4' str नहीं तो Path MP4, AVI, आदि जैसे प्रारूपों में वीडियो फ़ाइल।
डायरेक्टरी ✅ 'path/' str नहीं तो Path छवियों या वीडियो वाली निर्देशिका का पथ।
ढेला ✅ 'path/*.jpg' str एकाधिक फ़ाइलों से मेल खाने के लिए ग्लोब पैटर्न। का उपयोग करें * वाइल्डकार्ड के रूप में चरित्र।
यूट्यूब ✅ 'https://youtu.be/LNwODJXcvt4' str YouTube वीडियो का URL.
नदी ✅ 'rtsp://example.com/media.mp4' str स्ट्रीमिंग प्रोटोकॉल जैसे RTSP, RTMP, TCP या IP पते के लिए URL.
मल्टी-स्ट्रीम ✅ 'list.streams' str नहीं तो Path *.streams प्रति पंक्ति एक स्ट्रीम URL के साथ टेक्स्ट फ़ाइल, यानी 8 स्ट्रीम बैच-आकार 8 पर चलेंगी।

नीचे प्रत्येक स्रोत प्रकार का उपयोग करने के लिए कोड उदाहरण दिए गए हैं:

भविष्यवाणी स्रोत

एक छवि फ़ाइल पर अनुमान चलाएँ।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define path to the image file
source = 'path/to/image.jpg'

# Run inference on the source
results = model(source)  # list of Results objects

स्क्रीनशॉट के रूप में वर्तमान स्क्रीन सामग्री पर अनुमान चलाएं।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define current screenshot as source
source = 'screen'

# Run inference on the source
results = model(source)  # list of Results objects

URL के माध्यम से दूरस्थ रूप से होस्ट की गई छवि या वीडियो पर अनुमान चलाएं।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define remote image or video URL
source = 'https://ultralytics.com/images/bus.jpg'

# Run inference on the source
results = model(source)  # list of Results objects

के साथ खोले गए चित्र पर अनुमान चलाएँ Python इमेजिंग लाइब्रेरी (पीआईएल)।

from PIL import Image
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Open an image using PIL
source = Image.open('path/to/image.jpg')

# Run inference on the source
results = model(source)  # list of Results objects

OpenCV के साथ पढ़ी गई छवि पर अनुमान चलाएं।

import cv2
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Read an image using OpenCV
source = cv2.imread('path/to/image.jpg')

# Run inference on the source
results = model(source)  # list of Results objects

एक numpy सरणी के रूप में प्रतिनिधित्व की गई छवि पर अनुमान चलाएं।

import numpy as np
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype='uint8')

# Run inference on the source
results = model(source)  # list of Results objects

एक के रूप में प्रतिनिधित्व की गई छवि पर अनुमान चलाएं PyTorch tensor.

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

# Run inference on the source
results = model(source)  # list of Results objects

CSV फ़ाइल में सूचीबद्ध छवियों, URL, वीडियो और निर्देशिकाओं के संग्रह पर अनुमान चलाएं.

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define a path to a CSV file with images, URLs, videos and directories
source = 'path/to/file.csv'

# Run inference on the source
results = model(source)  # list of Results objects

वीडियो फ़ाइल पर अनुमान चलाएँ। का उपयोग करके stream=True, आप स्मृति उपयोग को कम करने के लिए परिणाम ऑब्जेक्ट्स का एक जनरेटर बना सकते हैं।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define path to video file
source = 'path/to/video.mp4'

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

एक निर्देशिका में सभी छवियों और वीडियो पर अनुमान चलाएं। उपनिर्देशिकाओं में छवियों और वीडियो को कैप्चर करने के लिए एक ग्लोब पैटर्न का उपयोग करें, अर्थात। path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define path to directory containing images and videos for inference
source = 'path/to/dir'

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

उन सभी छवियों और वीडियो पर अनुमान चलाएं जो ग्लोब एक्सप्रेशन से मेल खाते हैं * वर्ण।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define a glob search for all JPG files in a directory
source = 'path/to/dir/*.jpg'

# OR define a recursive glob search for all JPG files including subdirectories
source = 'path/to/dir/**/*.jpg'

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

YouTube वीडियो पर अनुमान चलाएं. का उपयोग करके stream=True, आप लंबे वीडियो के लिए स्मृति उपयोग को कम करने के लिए परिणाम वस्तुओं का एक जनरेटर बना सकते हैं।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Define source as YouTube video URL
source = 'https://youtu.be/LNwODJXcvt4'

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

RTSP, RTMP, TCP और IP एड्रेस प्रोटोकॉल का उपयोग करके दूरस्थ स्ट्रीमिंग स्रोतों पर अनुमान चलाएँ। यदि एक में कई धाराएँ प्रदान की जाती हैं *.streams टेक्स्ट फ़ाइल फिर बैच्ड अनुमान चलेगा, यानी 8 स्ट्रीम बैच-आकार 8 पर चलेंगी, अन्यथा एकल स्ट्रीम बैच-आकार 1 पर चलेंगी।

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Single stream with batch-size 1 inference
source = 'rtsp://example.com/media.mp4'  # RTSP, RTMP, TCP or IP streaming address

# Multiple streams with batched inference (i.e. batch-size 8 for 8 streams)
source = 'path/to/list.streams'  # *.streams text file with one streaming address per row

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

अनुमान तर्क

model.predict() कई तर्क स्वीकार करता है जिन्हें डिफ़ॉल्ट को ओवरराइड करने के लिए अनुमान समय पर पारित किया जा सकता है:

उदाहरण

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on 'bus.jpg' with arguments
model.predict('bus.jpg', save=True, imgsz=320, conf=0.5)

अनुमान तर्क:

युक्ति प्रकार चूक विवरण: __________
source str 'ultralytics/assets' अनुमान के लिए डेटा स्रोत निर्दिष्ट करता है. लाइव फ़ीड के लिए एक छवि पथ, वीडियो फ़ाइल, निर्देशिका, URL या डिवाइस आईडी हो सकती है। प्रारूपों और स्रोतों की एक विस्तृत श्रृंखला का समर्थन करता है, विभिन्न प्रकार के इनपुट में लचीले अनुप्रयोग को सक्षम करता है।
conf float 0.25 पता लगाने के लिए न्यूनतम विश्वास सीमा निर्धारित करता है। इस सीमा से नीचे विश्वास के साथ पता लगाई गई वस्तुओं की अवहेलना की जाएगी। इस मान को समायोजित करने से झूठी सकारात्मकता को कम करने में मदद मिल सकती है।
iou float 0.7 गैर-अधिकतम दमन (NMS) के लिए संघ (IoU) सीमा पर चौराहा। उच्च मूल्यों के परिणामस्वरूप ओवरलैपिंग बॉक्स को समाप्त करके कम पता लगाया जाता है, जो डुप्लिकेट को कम करने के लिए उपयोगी होता है।
imgsz int or tuple 640 अनुमान के लिए छवि आकार को परिभाषित करता है। एकल पूर्णांक हो सकता है 640 वर्ग आकार बदलने या एक (ऊंचाई, चौड़ाई) टपल के लिए। उचित आकार पता लगाने की सटीकता और प्रसंस्करण गति में सुधार कर सकता है।
half bool False अर्ध-परिशुद्धता (FP16) अनुमान सक्षम करता है, जो सटीकता पर न्यूनतम प्रभाव के साथ समर्थित GPU पर मॉडल अनुमान को गति दे सकता है।
device str None अनुमान के लिए डिवाइस को निर्दिष्ट करता है (उदाहरण के लिए, cpu, cuda:0 नहीं तो 0). उपयोगकर्ताओं को मॉडल निष्पादन के लिए CPU, एक विशिष्ट GPU या अन्य गणना उपकरणों के बीच चयन करने की अनुमति देता है।
max_det int 300 प्रति छवि अनुमत डिटेक्शन की अधिकतम संख्या। उन वस्तुओं की कुल संख्या को सीमित करता है जिन्हें मॉडल एक ही अनुमान में पहचान सकता है, घने दृश्यों में अत्यधिक आउटपुट को रोकता है।
vid_stride int 1 वीडियो इनपुट के लिए फ़्रेम स्ट्राइड। अस्थायी संकल्प की कीमत पर प्रसंस्करण को गति देने के लिए वीडियो में फ्रेम लंघन की अनुमति देता है। 1 का मान प्रत्येक फ्रेम को संसाधित करता है, उच्च मान फ्रेम को छोड़ देते हैं।
stream_buffer bool False निर्धारित करता है कि वीडियो स्ट्रीम संसाधित करते समय सभी फ़्रेमों को बफ़र किया जाना चाहिए (True), या यदि मॉडल को सबसे हाल का फ्रेम वापस करना चाहिए (False). वास्तविक समय अनुप्रयोगों के लिए उपयोगी।
visualize bool False अनुमान के दौरान मॉडल सुविधाओं के विज़ुअलाइज़ेशन को सक्रिय करता है, जो मॉडल "देख" रहा है, इस बारे में अंतर्दृष्टि प्रदान करता है। डिबगिंग और मॉडल व्याख्या के लिए उपयोगी।
augment bool False भविष्यवाणियों के लिए परीक्षण-समय वृद्धि (टीटीए) को सक्षम करता है, संभावित रूप से अनुमान गति की कीमत पर पहचान की मजबूती में सुधार करता है।
agnostic_nms bool False वर्ग-अज्ञेयवादी गैर-अधिकतम दमन (एनएमएस) को सक्षम करता है, जो विभिन्न वर्गों के अतिव्यापी बक्से को विलीन करता है। बहु-वर्ग का पता लगाने वाले परिदृश्यों में उपयोगी जहां वर्ग ओवरलैप आम है।
classes list[int] None पूर्वानुमानों को वर्ग ID के सेट में फ़िल्टर करता है. केवल निर्दिष्ट वर्गों से संबंधित डिटेक्शन वापस किए जाएंगे। बहु-वर्ग का पता लगाने वाले कार्यों में प्रासंगिक वस्तुओं पर ध्यान केंद्रित करने के लिए उपयोगी।
retina_masks bool False मॉडल में उपलब्ध होने पर उच्च-रिज़ॉल्यूशन सेगमेंटेशन मास्क का उपयोग करता है। यह विभाजन कार्यों के लिए मुखौटा गुणवत्ता को बढ़ा सकता है, बेहतर विवरण प्रदान कर सकता है।
embed list[int] None उन परतों को निर्दिष्ट करता है जिनसे फीचर वैक्टर या एम्बेडिंग निकालना है। क्लस्टरिंग या समानता खोज जैसे डाउनस्ट्रीम कार्यों के लिए उपयोगी।

विज़ुअलाइज़ेशन तर्क:

युक्ति प्रकार चूक विवरण: __________
show bool False अगर True, एक विंडो में एनोटेट की गई छवियों या वीडियो को प्रदर्शित करता है। विकास या परीक्षण के दौरान तत्काल दृश्य प्रतिक्रिया के लिए उपयोगी।
save bool False फ़ाइल करने के लिए एनोटेट छवियों या वीडियो की बचत सक्षम करता है। दस्तावेज़ीकरण, आगे के विश्लेषण या परिणामों को साझा करने के लिए उपयोगी।
save_frames bool False वीडियो संसाधित करते समय, अलग-अलग फ़्रेमों को छवियों के रूप में सहेजता है। विशिष्ट फ्रेम निकालने या विस्तृत फ्रेम-दर-फ्रेम विश्लेषण के लिए उपयोगी है।
save_txt bool False प्रारूप का पालन करते हुए, पाठ फ़ाइल में पता लगाने के परिणामों को सहेजता है [class] [x_center] [y_center] [width] [height] [confidence]. अन्य विश्लेषण उपकरणों के साथ एकीकरण के लिए उपयोगी।
save_conf bool False सहेजी गई पाठ फ़ाइलों में विश्वास स्कोर शामिल करता है। पोस्ट-प्रोसेसिंग और विश्लेषण के लिए उपलब्ध विवरण को बढ़ाता है।
save_crop bool False पता लगाने की फसली छवियों को बचाता है। डेटासेट वृद्धि, विश्लेषण या विशिष्ट वस्तुओं के लिए केंद्रित डेटासेट बनाने के लिए उपयोगी।
show_labels bool True दृश्य आउटपुट में प्रत्येक पहचान के लिए लेबल प्रदर्शित करता है। पता लगाई गई वस्तुओं की तत्काल समझ प्रदान करता है।
show_conf bool True लेबल के साथ प्रत्येक पहचान के लिए विश्वास स्कोर प्रदर्शित करता है. प्रत्येक पहचान के लिए मॉडल की निश्चितता में अंतर्दृष्टि देता है।
show_boxes bool True पता लगाए गए ऑब्जेक्ट्स के चारों ओर बाउंडिंग बॉक्स खींचता है। छवियों या वीडियो फ्रेम में वस्तुओं की दृश्य पहचान और स्थान के लिए आवश्यक।
line_width None or int None बाउंडिंग बॉक्स की रेखा चौड़ाई निर्दिष्ट करता है। अगर None, छवि आकार के आधार पर लाइन की चौड़ाई स्वचालित रूप से समायोजित की जाती है। स्पष्टता के लिए दृश्य अनुकूलन प्रदान करता है।

छवि और वीडियो प्रारूप

YOLOv8 विभिन्न छवि और वीडियो प्रारूपों का समर्थन करता है, जैसा कि में निर्दिष्ट है ultralytics/data/utils.py का उपयोग करें। मान्य प्रत्ययों और उदाहरण पूर्वानुमान आदेशों के लिए नीचे दी गई तालिकाएँ देखें।

छवियां

नीचे दी गई तालिका में मान्य है Ultralytics छवि प्रारूप।

छवि प्रत्यय उदाहरण: भविष्यवाणी आदेश हवाला
.bmp yolo predict source=image.bmp Microsoft BMP फ़ाइल स्वरूप
.dng yolo predict source=image.dng एडोब डीएनजी
.jpeg yolo predict source=image.jpeg जेपीईजी
.jpg yolo predict source=image.jpg जेपीईजी
.mpo yolo predict source=image.mpo मल्टी पिक्चर ऑब्जेक्ट
.png yolo predict source=image.png पोर्टेबल नेटवर्क ग्राफिक्स
.tif yolo predict source=image.tif टैग छवि फ़ाइल स्वरूप
.tiff yolo predict source=image.tiff टैग छवि फ़ाइल स्वरूप
.webp yolo predict source=image.webp वेबपी
.pfm yolo predict source=image.pfm पोर्टेबल फ्लोटमैप

वीडियो

नीचे दी गई तालिका में मान्य है Ultralytics वीडियो प्रारूप।

वीडियो प्रत्यय उदाहरण: भविष्यवाणी आदेश हवाला
.asf yolo predict source=video.asf उन्नत सिस्टम प्रारूप
.avi yolo predict source=video.avi ऑडियो वीडियो इंटरलीव
.gif yolo predict source=video.gif ग्राफिक्स इंटरचेंज प्रारूप
.m4v yolo predict source=video.m4v एमपीईजी -4 भाग 14
.mkv yolo predict source=video.mkv Matroska
.mov yolo predict source=video.mov क्विकटाइम फ़ाइल स्वरूप
.mp4 yolo predict source=video.mp4 एमपीईजी -4 भाग 14 - विकिपीडिया
.mpeg yolo predict source=video.mpeg एमपीईजी -1 भाग 2
.mpg yolo predict source=video.mpg एमपीईजी -1 भाग 2
.ts yolo predict source=video.ts एमपीईजी ट्रांसपोर्ट स्ट्रीम
.wmv yolo predict source=video.wmv विंडोज मीडिया वीडियो
.webm yolo predict source=video.webm वेबएम परियोजना

परिणामों के साथ कार्य करना

सब Ultralytics predict() कॉल की एक सूची लौटाएगा Results वस्तुएं:

परिणाम

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # list of 1 Results object
results = model(['bus.jpg', 'zidane.jpg'])  # list of 2 Results objects

Results ऑब्जेक्ट्स में निम्नलिखित विशेषताएँ हैं:

लक्षण प्रकार विवरण: __________
orig_img numpy.ndarray एक numpy सरणी के रूप में मूल छवि।
orig_shape tuple मूल छवि आकृति (ऊँचाई, चौड़ाई) स्वरूप में.
boxes Boxes, optional एक बॉक्स ऑब्जेक्ट जिसमें डिटेक्शन बाउंडिंग बॉक्स होते हैं।
masks Masks, optional एक मास्क ऑब्जेक्ट जिसमें डिटेक्शन मास्क होते हैं।
probs Probs, optional वर्गीकरण कार्य के लिए प्रत्येक वर्ग की संभावनाओं वाली एक प्रोब्स ऑब्जेक्ट।
keypoints Keypoints, optional एक कीपॉइंट ऑब्जेक्ट जिसमें प्रत्येक ऑब्जेक्ट के लिए खोजे गए कीपॉइंट होते हैं।
obb OBB, optional एक OBB ऑब्जेक्ट जिसमें ओरिएंटेड बाउंडिंग बॉक्स होते हैं।
speed dict प्रति छवि मिलीसेकंड में प्रीप्रोसेस, अनुमान और पोस्टप्रोसेस गति का एक शब्दकोश।
names dict वर्ग के नामों का एक शब्दकोश।
path str छवि फ़ाइल का पथ.

Results ऑब्जेक्ट्स में निम्न विधियाँ हैं:

विधि वापसी प्रकार विवरण: __________
update() None परिणाम ऑब्जेक्ट के बॉक्स, मास्क और जांच विशेषताओं को अपडेट करें।
cpu() Results CPU स्मृति पर सभी टेंसर के साथ परिणाम ऑब्जेक्ट की एक प्रतिलिपि लौटाएं।
numpy() Results परिणाम ऑब्जेक्ट की एक प्रतिलिपि को सभी टेंसर के साथ numpy सरणियों के रूप में लौटाएं।
cuda() Results GPU स्मृति पर सभी टेंसर के साथ परिणाम ऑब्जेक्ट की एक प्रतिलिपि लौटाएं।
to() Results निर्दिष्ट डिवाइस और dtype पर टेंसर के साथ परिणाम ऑब्जेक्ट की एक प्रति लौटाएं।
new() Results समान छवि, पथ और नामों के साथ एक नया परिणाम ऑब्जेक्ट लौटाएं।
plot() numpy.ndarray पता लगाने के परिणामों को प्लॉट करता है। एनोटेट की गई छवि की एक सुन्न सरणी लौटाता है।
show() None स्क्रीन पर एनोटेट किए गए परिणाम दिखाएं।
save() None एनोटेट किए गए परिणामों को फ़ाइल में सहेजें।
verbose() str प्रत्येक कार्य के लिए लॉग स्ट्रिंग लौटाएं।
save_txt() None भविष्यवाणियों को एक txt फ़ाइल में सहेजें।
save_crop() None फसली पूर्वानुमानों को इन पर सहेजें save_dir/cls/file_name.jpg.
tojson() str ऑब्जेक्ट को JSON प्रारूप में कनवर्ट करें।

अधिक जानकारी के लिए देखें Results कक्षा प्रलेखन.

बक्से

Boxes ऑब्जेक्ट का उपयोग बाउंडिंग बॉक्स को विभिन्न स्वरूपों में अनुक्रमित, हेरफेर और परिवर्तित करने के लिए किया जा सकता है।

बक्से

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

यहाँ के लिए एक तालिका है Boxes वर्ग के तरीके और गुण, उनके नाम, प्रकार और विवरण सहित:

नाम प्रकार विवरण: __________
cpu() विधि ऑब्जेक्ट CPU स्मृति में ले जाएँ।
numpy() विधि ऑब्जेक्ट को एक numpy सरणी में कनवर्ट करें।
cuda() विधि ऑब्जेक्ट को CUDA स्मृति में ले जाएँ।
to() विधि ऑब्जेक्ट को निर्दिष्ट डिवाइस पर ले जाएँ।
xyxy संपत्ति (torch.Tensor) बक्सों को xyxy स्वरूप में लौटाएं।
conf संपत्ति (torch.Tensor) बक्से के विश्वास मूल्यों को वापस करें।
cls संपत्ति (torch.Tensor) बक्सों के वर्ग मान लौटाएं।
id संपत्ति (torch.Tensor) बॉक्स की ट्रैक आईडी लौटाएं (यदि उपलब्ध हो)।
xywh संपत्ति (torch.Tensor) बक्सों को xywh प्रारूप में लौटाएं।
xyxyn संपत्ति (torch.Tensor) मूल छवि आकार द्वारा सामान्यीकृत xyxy प्रारूप में बक्से लौटाएं।
xywhn संपत्ति (torch.Tensor) मूल छवि आकार द्वारा सामान्यीकृत xywh प्रारूप में बक्से लौटाएं।

अधिक जानकारी के लिए देखें Boxes कक्षा प्रलेखन.

मास्क

Masks ऑब्जेक्ट का उपयोग किया जा सकता है, अनुक्रमित, हेरफेर और मास्क को खंडों में परिवर्तित किया जा सकता है।

मास्क

from ultralytics import YOLO

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO('yolov8n-seg.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

यहाँ के लिए एक तालिका है Masks वर्ग के तरीके और गुण, उनके नाम, प्रकार और विवरण सहित:

नाम प्रकार विवरण: __________
cpu() विधि मास्क लौटाता है tensor CPU मेमोरी पर।
numpy() विधि मास्क लौटाता है tensor एक सुन्न सरणी के रूप में।
cuda() विधि मास्क लौटाता है tensor GPU मेमोरी पर।
to() विधि मास्क लौटाता है tensor निर्दिष्ट डिवाइस और dType के साथ।
xyn संपत्ति (torch.Tensor) टेंसर के रूप में दर्शाए गए सामान्यीकृत खंडों की एक सूची।
xy संपत्ति (torch.Tensor) पिक्सेल निर्देशांक में खंडों की एक सूची को टेंसर के रूप में दर्शाया गया है।

अधिक जानकारी के लिए देखें Masks कक्षा प्रलेखन.

प्रमुख बिंदु

Keypoints ऑब्जेक्ट का उपयोग निर्देशांक को अनुक्रमित, हेरफेर और सामान्य किया जा सकता है।

प्रमुख बिंदु

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO('yolov8n-pose.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

यहाँ के लिए एक तालिका है Keypoints वर्ग के तरीके और गुण, उनके नाम, प्रकार और विवरण सहित:

नाम प्रकार विवरण: __________
cpu() विधि मुख्य बिंदु लौटाता है tensor CPU मेमोरी पर।
numpy() विधि मुख्य बिंदु लौटाता है tensor एक सुन्न सरणी के रूप में।
cuda() विधि मुख्य बिंदु लौटाता है tensor GPU मेमोरी पर।
to() विधि मुख्य बिंदु लौटाता है tensor निर्दिष्ट डिवाइस और dType के साथ।
xyn संपत्ति (torch.Tensor) टेंसर के रूप में दर्शाए गए सामान्यीकृत कीपॉइंट्स की एक सूची।
xy संपत्ति (torch.Tensor) पिक्सेल निर्देशांक में कीपॉइंट की एक सूची को टेंसर के रूप में दर्शाया गया है।
conf संपत्ति (torch.Tensor) यदि उपलब्ध हो तो मुख्य बिंदुओं के विश्वास मान लौटाता है, अन्यथा कोई नहीं।

अधिक जानकारी के लिए देखें Keypoints कक्षा प्रलेखन.

संभावना

Probs ऑब्जेक्ट का उपयोग सूचकांक किया जा सकता है, प्राप्त करें top1 और top5 सूचकांक और वर्गीकरण के स्कोर।

संभावना

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO('yolov8n-cls.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

यहां विधियों और गुणों को सारांशित करने वाली एक तालिका दी गई है Probs कक्षा:

नाम प्रकार विवरण: __________
cpu() विधि जांच की एक प्रति लौटाता है tensor CPU मेमोरी पर।
numpy() विधि जांच की एक प्रति लौटाता है tensor एक सुन्न सरणी के रूप में।
cuda() विधि जांच की एक प्रति लौटाता है tensor GPU मेमोरी पर।
to() विधि जांच की एक प्रति लौटाता है tensor निर्दिष्ट डिवाइस और dType के साथ।
top1 संपत्ति (int) शीर्ष 1 वर्ग का सूचकांक।
top5 संपत्ति (list[int]) शीर्ष 5 वर्गों के सूचकांक।
top1conf संपत्ति (torch.Tensor) शीर्ष 1 वर्ग का आत्मविश्वास।
top5conf संपत्ति (torch.Tensor) शीर्ष 5 वर्गों का विश्वास।

अधिक जानकारी के लिए देखें Probs कक्षा प्रलेखन.

ओबीबी

OBB ऑब्जेक्ट का उपयोग ओरिएंटेड बाउंडिंग बॉक्स को विभिन्न स्वरूपों में अनुक्रमित, हेरफेर और परिवर्तित करने के लिए किया जा सकता है।

ओबीबी

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n-obb.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

यहाँ के लिए एक तालिका है OBB वर्ग के तरीके और गुण, उनके नाम, प्रकार और विवरण सहित:

नाम प्रकार विवरण: __________
cpu() विधि ऑब्जेक्ट CPU स्मृति में ले जाएँ।
numpy() विधि ऑब्जेक्ट को एक numpy सरणी में कनवर्ट करें।
cuda() विधि ऑब्जेक्ट को CUDA स्मृति में ले जाएँ।
to() विधि ऑब्जेक्ट को निर्दिष्ट डिवाइस पर ले जाएँ।
conf संपत्ति (torch.Tensor) बक्से के विश्वास मूल्यों को वापस करें।
cls संपत्ति (torch.Tensor) बक्सों के वर्ग मान लौटाएं।
id संपत्ति (torch.Tensor) बॉक्स की ट्रैक आईडी लौटाएं (यदि उपलब्ध हो)।
xyxy संपत्ति (torch.Tensor) क्षैतिज बक्सों को xyxy स्वरूप में लौटाएं।
xywhr संपत्ति (torch.Tensor) घुमाए गए बक्से को xywhr प्रारूप में लौटाएं।
xyxyxyxy संपत्ति (torch.Tensor) घुमाए गए बक्सों को xyxyxyxy प्रारूप में लौटाएं।
xyxyxyxyn संपत्ति (torch.Tensor) घुमाए गए बक्से को छवि आकार द्वारा सामान्यीकृत xyxyxy प्रारूप में लौटाएं।

अधिक जानकारी के लिए देखें OBB कक्षा प्रलेखन.

प्लॉटिंग परिणाम

वही plot() विधि में Results ऑब्जेक्ट्स मूल छवि पर पता लगाए गए ऑब्जेक्ट्स (जैसे बाउंडिंग बॉक्स, मास्क, कीपॉइंट्स और संभावनाओं) को ओवरले करके भविष्यवाणियों के विज़ुअलाइज़ेशन की सुविधा प्रदान करते हैं। यह विधि एनोटेट की गई छवि को NumPy सरणी के रूप में लौटाती है, जिससे आसान प्रदर्शन या बचत की अनुमति मिलती है।

प्लॉटिंग

from PIL import Image
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on 'bus.jpg'
results = model(['bus.jpg', 'zidane.jpg'])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_array[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f'results{i}.jpg')

plot() विधि पैरामीटर

वही plot() विधि आउटपुट को अनुकूलित करने के लिए विभिन्न तर्कों का समर्थन करती है:

युक्ति प्रकार विवरण: __________ चूक
conf bool डिटेक्शन कॉन्फिडेंस स्कोर शामिल करें। True
line_width float बाउंडिंग बॉक्स की लाइन चौड़ाई। छवि आकार के साथ तराजू यदि None. None
font_size float पाठ फ़ॉन्ट आकार. छवि आकार के साथ तराजू यदि None. None
font str पाठ एनोटेशन के लिए फ़ॉन्ट नाम. 'Arial.ttf'
pil bool PIL छवि ऑब्जेक्ट के रूप में छवि लौटाएं। False
img numpy.ndarray प्लॉटिंग के लिए वैकल्पिक छवि। मूल छवि का उपयोग करता है यदि None. None
im_gpu torch.Tensor तेजी से मुखौटा साजिश रचने के लिए GPU- त्वरित छवि। आकार: (1, 3, 640, 640)। None
kpt_radius int खींचे गए कीपॉइंट के लिए त्रिज्या। 5
kpt_line bool लाइनों के साथ कीपॉइंट्स कनेक्ट करें। True
labels bool एनोटेशन में क्लास लेबल शामिल करें। True
boxes bool छवि पर ओवरले बाउंडिंग बॉक्स। True
masks bool छवि पर ओवरले मास्क। True
probs bool वर्गीकरण संभावनाओं को शामिल करें। True
show bool डिफ़ॉल्ट छवि व्यूअर का उपयोग करके सीधे एनोटेट की गई छवि प्रदर्शित करें। False
save bool एनोटेट की गई छवि को द्वारा निर्दिष्ट फ़ाइल में सहेजें filename. False
filename str एनोटेट की गई छवि को सहेजने के लिए फ़ाइल का पथ और नाम यदि save है True. None

थ्रेड-सुरक्षित अनुमान

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

उपयोग करते समय YOLO मॉडल एक बहु-थ्रेडेड एप्लिकेशन में, प्रत्येक थ्रेड के लिए अलग-अलग मॉडल ऑब्जेक्ट्स को तत्काल करना या संघर्षों को रोकने के लिए थ्रेड-लोकल स्टोरेज को नियोजित करना महत्वपूर्ण है:

थ्रेड-सुरक्षित अनुमान

थ्रेड-सुरक्षित अनुमान के लिए प्रत्येक थ्रेड के अंदर एक एकल मॉडल को इंस्टेंट करें:

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    # Instantiate a new model inside the thread
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

के साथ धागा-सुरक्षित अनुमान पर गहराई से देखने के लिए YOLO मॉडल और चरण-दर-चरण निर्देश, कृपया हमारे YOLO थ्रेड-सुरक्षित अनुमान गाइड। यह मार्गदर्शिका आपको सामान्य नुकसान से बचने के लिए सभी आवश्यक जानकारी प्रदान करेगी और यह सुनिश्चित करेगी कि आपका बहु-थ्रेडेड अनुमान सुचारू रूप से चले।

स्ट्रीमिंग स्रोत for-छल्‍ला

यहाँ एक है Python ओपनसीवी का उपयोग करने वाली स्क्रिप्ट (cv2) और YOLOv8 वीडियो फ्रेम पर अनुमान चलाने के लिए। यह स्क्रिप्ट मानती है कि आपने पहले ही आवश्यक पैकेज स्थापित कर लिए हैं (opencv-python और ultralytics).

लूप के लिए स्ट्रीमिंग

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

यह स्क्रिप्ट वीडियो के प्रत्येक फ्रेम पर भविष्यवाणियां चलाएगी, परिणामों की कल्पना करेगी और उन्हें एक विंडो में प्रदर्शित करेगी। लूप को 'q' दबाकर बाहर निकाला जा सकता है।



2023-11-12 बनाया गया, अपडेट किया गया 2024-02-13
लेखक: ग्लेन-जोचर (15), टेंसरटर्टल (1), आयुषएक्सल (1), लाफिंग-क्यू (1)

टिप्पणियाँ