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

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

ऑब्जेक्ट काउंटिंग क्या है?

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



सतर्कता: ऑब्जेक्ट काउंटिंग का उपयोग कर Ultralytics YOLOv8

वस्तु गणना के लाभ?

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

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

लॉजिस्टिकस एक्वाकल्चर
कन्वेयर बेल्ट पैकेट का उपयोग कर गिनती Ultralytics YOLOv8 समुद्र में मछली की गिनती का उपयोग कर Ultralytics YOLOv8
कन्वेयर बेल्ट पैकेट का उपयोग कर गिनती Ultralytics YOLOv8 समुद्र में मछली की गिनती का उपयोग कर Ultralytics YOLOv8

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

from ultralytics import YOLO
from ultralytics.solutions import object_counter
import cv2

model = YOLO("yolov8n.pt")
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))

# Define region points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

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

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=region_points,
                 classes_names=model.names,
                 draw_tracks=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import object_counter
import cv2

model = YOLO("yolov8n.pt")
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))

# Define line points
line_points = [(20, 400), (1080, 400)]

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

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=line_points,
                 classes_names=model.names,
                 draw_tracks=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import object_counter
import cv2

model = YOLO("yolov8n.pt")
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))

line_points = [(20, 400), (1080, 400)]  # line or region points
classes_to_count = [0, 2]  # person and car classes for count

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

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=line_points,
                 classes_names=model.names,
                 draw_tracks=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    tracks = model.track(im0, persist=True, show=False,
                         classes=classes_to_count)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
क्षेत्र जंगम है

आप इसके किनारों पर क्लिक करके क्षेत्र को फ्रेम में कहीं भी स्थानांतरित कर सकते हैं

वैकल्पिक तर्क set_args

नाम प्रकार चूक विवरण: __________
view_img bool False गिनती के साथ फ़्रेम प्रदर्शित करें
view_in_counts bool True केवल वीडियो फ़्रेम पर इन-काउंट प्रदर्शित करें
view_out_counts bool True केवल वीडियो फ़्रेम पर आउट-काउंट प्रदर्शित करें
line_thickness int 2 बाउंडिंग बॉक्स की मोटाई बढ़ाएं
reg_pts list [(20, 400), (1260, 400)] क्षेत्र क्षेत्र को परिभाषित करने वाले बिंदु
classes_names dict model.model.names वर्ग नामों का शब्दकोश
region_color RGB Color (255, 0, 255) वस्तु की गिनती क्षेत्र या रेखा का रंग
track_thickness int 2 ट्रैकिंग लाइनों की मोटाई
draw_tracks bool False आरेखण सक्षम करें ट्रैक रेखाएँ
track_color RGB Color (0, 255, 0) प्रत्येक ट्रैक लाइन के लिए रंग
line_dist_thresh int 15 लाइन काउंटर के लिए यूक्लिडियन दूरी सीमा
count_txt_thickness int 2 ऑब्जेक्ट की मोटाई पाठ की गणना करती है
count_txt_color RGB Color (0, 0, 0) ऑब्जेक्ट काउंट पाठ के लिए अग्रभूमि रंग
count_color RGB Color (255, 255, 255) ऑब्जेक्ट काउंट पाठ के लिए पृष्ठभूमि रंग
region_thickness int 5 ऑब्जेक्ट काउंटर क्षेत्र या रेखा के लिए मोटाई

तर्क model.track

नाम प्रकार चूक विवरण: __________
source im0 None छवियों या वीडियो के लिए स्रोत निर्देशिका
persist bool False फ़्रेम के बीच लगातार ट्रैक
tracker str botsort.yaml ट्रैकिंग विधि 'बाइटट्रैक' या 'बॉटसॉर्ट'
conf float 0.3 कॉन्फिडेंस थ्रेशोल्ड
iou float 0.5 IOU थ्रेसहोल्ड
classes list None कक्षा द्वारा फ़िल्टर परिणाम, यानी कक्षाएं = 0, या कक्षाएं = [0,2,3]
verbose bool True ऑब्जेक्ट ट्रैकिंग परिणाम प्रदर्शित करें


2023-12-02 बनाया गया, अपडेट किया गया 2024-03-03
लेखक: ग्लेन-जोचर (8), आयुषएक्सेल (1), chr043416@gmail.com (3), रिजवानमुनव्वर (1)

टिप्पणियाँ