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

ऑब्जेक्ट क्रॉपिंग का उपयोग करके Ultralytics YOLOv8 🚀

ऑब्जेक्ट क्रॉपिंग क्या है?

ऑब्जेक्ट के साथ काट-छाँट करना Ultralytics YOLOv8 किसी छवि या वीडियो से विशिष्ट ज्ञात वस्तुओं को अलग करना और निकालना शामिल है। वही YOLOv8 मॉडल क्षमताओं का उपयोग वस्तुओं को सटीक रूप से पहचानने और चित्रित करने के लिए किया जाता है, जिससे आगे के विश्लेषण या हेरफेर के लिए सटीक फसल सक्षम होती है।



सतर्कता: Object Cropping using Ultralytics YOLOv8

ऑब्जेक्ट क्रॉपिंग के लाभ?

  • केंद्रित विश्लेषण: YOLOv8 लक्षित वस्तु फसल की सुविधा प्रदान करता है, जिससे एक दृश्य के भीतर व्यक्तिगत वस्तुओं की गहन परीक्षा या प्रसंस्करण की अनुमति मिलती है।
  • कम डेटा वॉल्यूम: केवल प्रासंगिक वस्तुओं को निकालने से, ऑब्जेक्ट क्रॉपिंग डेटा आकार को कम करने में मदद करता है, जिससे यह भंडारण, संचरण या बाद के कम्प्यूटेशनल कार्यों के लिए कुशल हो जाता है।
  • बढ़ी हुई परिशुद्धता: YOLOv8ऑब्जेक्ट डिटेक्शन सटीकता यह सुनिश्चित करती है कि क्रॉप की गई वस्तुएं अपने स्थानिक संबंधों को बनाए रखें, विस्तृत विश्लेषण के लिए दृश्य जानकारी की अखंडता को संरक्षित करें।

दृश्यों

हवाई अड्डे का सामान
हवाई अड्डे पर कन्वेयर बेल्ट सूटकेस का उपयोग करके क्रॉपिंग Ultralytics YOLOv8
सूटकेस हवाई अड्डे कन्वेयर बेल्ट का उपयोग कर फसल Ultralytics YOLOv8

ऑब्जेक्ट क्रॉपिंग का उपयोग करके YOLOv8 उदाहरण

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolov8n.pt")
names = model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

idx = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0, show=False)
    boxes = results[0].boxes.xyxy.cpu().tolist()
    clss = results[0].boxes.cls.cpu().tolist()
    annotator = Annotator(im0, line_width=2, example=names)

    if boxes is not None:
        for box, cls in zip(boxes, clss):
            idx += 1
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)

    cv2.imshow("ultralytics", im0)
    video_writer.write(im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
video_writer.release()
cv2.destroyAllWindows()

तर्क model.predict

युक्ति प्रकार चूक या क़िस्‍म
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 उन परतों को निर्दिष्ट करता है जिनसे फीचर वैक्टर या एम्बेडिंग निकालना है। क्लस्टरिंग या समानता खोज जैसे डाउनस्ट्रीम कार्यों के लिए उपयोगी।


Created 2024-01-09, Updated 2024-06-13
Authors: RizwanMunawar (2), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

टिप्पणियाँ