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

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

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

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

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

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

दृश्यों

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

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

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

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' छवियों या वीडियो के लिए स्रोत निर्देशिका
conf float 0.25 पता लगाने के लिए ऑब्जेक्ट कॉन्फिडेंस थ्रेशोल्ड
iou float 0.7 एनएमएस के लिए संघ (आईओयू) सीमा पर चौराहा
imgsz int or tuple 640 स्केलर या (एच, डब्ल्यू) सूची के रूप में छवि का आकार, यानी (640, 480)
half bool False आधी परिशुद्धता (FP16) का उपयोग करें
device None or str None चालू चलाने के लिए डिवाइस, यानी क्यूडा डिवाइस = 0/1/2/3 या डिवाइस = सीपीयू
max_det int 300 प्रति छवि पता लगाने की अधिकतम संख्या
vid_stride bool False वीडियो फ्रेम-दर स्ट्राइड
stream_buffer bool False सभी स्ट्रीमिंग फ़्रेम (सही) को बफ़र करें या नवीनतम फ़्रेम (गलत) लौटाएं
visualize bool False मॉडल सुविधाओं की कल्पना करें
augment bool False पूर्वानुमान स्रोतों पर छवि वृद्धि लागू करें
agnostic_nms bool False वर्ग-अज्ञेयवादी एनएमएस
classes list[int] None कक्षा द्वारा फ़िल्टर परिणाम, यानी कक्षाएं = 0, या कक्षाएं = [0,2,3]
retina_masks bool False उच्च-रिज़ॉल्यूशन सेगमेंटेशन मास्क का उपयोग करें
embed list[int] None दी गई परतों से सुविधा वैक्टर/एम्बेडिंग लौटाएं


2024-01-09 बनाया गया, अपडेट किया गया 2024-01-29
लेखक: chr043416@gmail.com (2), ग्लेन-जोचर (1), आयुषएक्सेल (1)

टिप्पणियाँ