Overslaan naar inhoud

Snelheidsschatting met Ultralytics YOLOv8 🚀

Wat is snelheidsschatting?

Snelheidsschatting is het proces van het berekenen van de bewegingssnelheid van een object binnen een bepaalde context, vaak gebruikt in computer vision toepassingen. Met Ultralytics YOLOv8 kun je nu de snelheid van een object berekenen door naast afstands- en tijdgegevens ook objecttracking te gebruiken, wat cruciaal is voor taken als verkeer en bewaking. De nauwkeurigheid van het schatten van de snelheid heeft een directe invloed op de efficiëntie en betrouwbaarheid van diverse toepassingen, waardoor het een belangrijk onderdeel is in de vooruitgang van intelligente systemen en real-time besluitvormingsprocessen.



Kijken: Snelheidsschatting met Ultralytics YOLOv8

Voordelen van snelheidsschatting?

  • Efficiënte verkeersregeling: Nauwkeurige snelheidsschattingen helpen bij het beheren van de verkeersstroom, het verbeteren van de veiligheid en het verminderen van opstoppingen op wegen.
  • Nauwkeurige autonome navigatie: In autonome systemen zoals zelfrijdende auto's zorgt een betrouwbare snelheidsschatting voor een veilige en nauwkeurige voertuignavigatie.
  • Verbeterde bewakingsbeveiliging: Snelheidsschatting in surveillanceanalyse helpt bij het identificeren van ongewoon gedrag of potentiële bedreigingen, waardoor de effectiviteit van beveiligingsmaatregelen wordt verbeterd.

Toepassingen in de echte wereld

Vervoer Vervoer
Snelheidsschatting op de weg met behulp van Ultralytics YOLOv8 Snelheidsschatting op brug met behulp van Ultralytics YOLOv8
Snelheidsschatting op de weg met behulp van Ultralytics YOLOv8 Snelheidsschatting op brug met behulp van Ultralytics YOLOv8

Snelheidsschatting met YOLOv8 Voorbeeld

from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2

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

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

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = speed_estimation.SpeedEstimator()
speed_obj.set_args(reg_pts=line_pts,
                   names=names,
                   view_img=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 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Snelheid is schatting

De snelheid is een schatting en is mogelijk niet helemaal nauwkeurig. Bovendien kan de schatting variëren afhankelijk van de GPU-snelheid.

Optionele argumenten set_args

Naam Type Standaard Beschrijving
reg_pts list [(20, 400), (1260, 400)] Punten die het gebied van de regio definiëren
names dict None Namen van klassen
view_img bool False Frames met tellingen weergeven
line_thickness int 2 Vergroot de dikte van bounding boxes
region_thickness int 5 Dikte voor object tegengebied of lijn
spdl_dist_thresh int 10 Euclidische afstandsdrempel voor snelheidscontrolelijn

Argumenten model.track

Naam Type Standaard Beschrijving
source im0 None bronmap voor afbeeldingen of video's
persist bool False Blijvende sporen tussen frames
tracker str botsort.yaml Volgmethode 'bytetrack' of 'botsort'
conf float 0.3 Vertrouwensdrempel
iou float 0.5 Drempel IOU
classes list None filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3]
verbose bool True De resultaten van het volgen van objecten weergeven


Gemaakt op 2024-01-05, Bijgewerkt op 2024-05-08
Auteurs: Burhan-Q (1), RizwanMunawar (2), glenn-jocher (2), AyushExel (1)

Reacties