İçeriğe geç

Ultralytics YOLOv8 adresini kullanarak Nesne Sayma 🚀

Nesne Sayma Nedir?

Nesne sayma ile Ultralytics YOLOv8 videolarda ve kamera akışlarında belirli nesnelerin doğru bir şekilde tanımlanmasını ve sayılmasını içerir. YOLOv8 , son teknoloji algoritmaları ve derin öğrenme yetenekleri sayesinde kalabalık analizi ve gözetim gibi çeşitli senaryolar için verimli ve hassas nesne sayımı sağlayarak gerçek zamanlı uygulamalarda öne çıkar.



İzle: Nesne Sayma kullanarak Ultralytics YOLOv8

Nesne Saymanın Avantajları?

  • Kaynak Optimizasyonu: Nesne sayımı, doğru sayımlar sağlayarak ve envanter yönetimi gibi uygulamalarda kaynak tahsisini optimize ederek verimli kaynak yönetimini kolaylaştırır.
  • Gelişmiş Güvenlik: Nesne sayma, varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır ve proaktif tehdit tespitine yardımcı olur.
  • Bilgilendirilmiş Karar Alma: Nesne sayımı, perakende, trafik yönetimi ve diğer çeşitli alanlarda karar verme, süreçleri optimize etme için değerli bilgiler sunar.

Gerçek Dünya Uygulamaları

Lojistik Akuakültür
Konveyör Bant Paketleri Kullanarak Sayma Ultralytics YOLOv8 Denizde Balık Sayımı Ultralytics YOLOv8
Konveyör Bant Paketleri Kullanarak Sayma Ultralytics YOLOv8 Denizde Balık Sayımı Ultralytics YOLOv8

YOLOv8 kullanarak Nesne Sayma Örnek

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()
Bölge Hareketli

Kenarlarına tıklayarak bölgeyi çerçeve içinde herhangi bir yere taşıyabilirsiniz

İsteğe Bağlı Argümanlar set_args

İsim Tip Varsayılan Açıklama
view_img bool False Çerçeveleri sayımlarla görüntüleme
view_in_counts bool True Giriş sayımlarını yalnızca video karesinde görüntüleme
view_out_counts bool True Çıkış sayılarını yalnızca video karesinde görüntüleme
line_thickness int 2 Sınırlayıcı kutuları artırın ve metin kalınlığını sayın
reg_pts list [(20, 400), (1260, 400)] Bölge Alanını tanımlayan noktalar
classes_names dict model.model.names Sınıf Adları Sözlüğü
count_reg_color RGB Color (255, 0, 255) Nesne Sayma Bölgesinin veya Çizgisinin Rengi
track_thickness int 2 İzleme Çizgilerinin Kalınlığı
draw_tracks bool False Çizgileri izlemeyi etkinleştir
track_color RGB Color (0, 255, 0) Her ray hattı için renk
line_dist_thresh int 15 Hat sayacı için Öklid Mesafesi eşiği
count_txt_color RGB Color (255, 255, 255) Nesne sayıları metni için ön plan rengi
region_thickness int 5 Nesne karşı bölgesi veya çizgi için kalınlık
count_bg_color RGB Color (255, 255, 255) Fosforlu kalem rengini sayın

Argümanlar model.track

İsim Tip Varsayılan Açıklama
source im0 None resimler veya videolar için kaynak dizin
persist bool False kareler arasında kalıcı izler
tracker str botsort.yaml İzleme yöntemi 'bytetrack' veya 'botsort'
conf float 0.3 Güven Eşiği
iou float 0.5 IOU Eşiği
classes list None sonuçları sınıfa göre filtreleyin, yani classes=0 veya classes=[0,2,3]
verbose bool True Nesne izleme sonuçlarını görüntüleme


Oluşturma 2023-12-02, Güncelleme 2024-04-18
Yazarlar: glenn-jocher (9), RizwanMunawar (1), AyushExel (1)

Yorumlar