انتقل إلى المحتوى

عد الكائنات باستخدام 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,
                 line_thickness=2)

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 region points as a polygon with 5 points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 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=region_points,
                 classes_names=model.names,
                 draw_tracks=True,
                 line_thickness=2)

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,
                 line_thickness=2)

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,
                 line_thickness=2)

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 قاموس أسماء الفئات
count_reg_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_color RGB Color (255, 255, 255) لون المقدمة لنص عدد الكائنات
region_thickness int 5 سمك منطقة أو خط عداد الكائن
count_bg_color RGB Color (255, 255, 255) عد لون التمييز

الحجج model.track

اسم نوع افتراضي وصف
source im0 None الدليل المصدر للصور أو مقاطع الفيديو
persist bool False المسارات المستمرة بين الإطارات
tracker str botsort.yaml طريقة التتبع "bytetrack" أو "botsort"
conf float 0.3 عتبة الثقة
iou float 0.5 عتبة IOU
classes list None تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3]
verbose bool True عرض نتائج تعقب الكائن


تم إنشاء 2023-12-02, اخر تحديث 2024-04-18
المؤلفون: جلين جوشر (9) ، رضوان منور (1) ، أيوشكسل (1)

التعليقات