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

Bekijk onze blog

Voor meer inzicht in het schatten van de snelheid kun je onze blogpost: Ultralytics YOLOv8 for Speed Estimation in Computer Vision Projects lezen.

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

import cv2

from ultralytics import YOLO, solutions

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 = solutions.SpeedEstimator(
    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 snelheid op GPU .

Argumenten SpeedEstimator

Naam Type Standaard Beschrijving
names dict None Woordenboek met klassennamen.
reg_pts list [(20, 400), (1260, 400)] Lijst met regiopunten voor het schatten van de snelheid.
view_img bool False Of de afbeelding met annotaties moet worden weergegeven.
line_thickness int 2 Dikte van de lijnen voor het tekenen van dozen en sporen.
region_thickness int 5 Dikte van de regiolijnen.
spdl_dist_thresh int 10 Afstandsdrempel voor snelheidsberekening.

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

FAQ

Hoe schat ik de snelheid van een object met Ultralytics YOLOv8 ?

Het schatten van de snelheid van objecten met Ultralytics YOLOv8 bestaat uit het combineren van objectdetectie en volgtechnieken. Eerst moet je in elk frame objecten detecteren met behulp van het YOLOv8 model. Volg deze objecten vervolgens over frames heen om hun beweging in de tijd te berekenen. Tot slot gebruik je de afstand die het object heeft afgelegd tussen frames en de framerate om de snelheid te schatten.

Voorbeeld:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
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 = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        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()

Raadpleeg onze officiƫle blogpost voor meer informatie.

Wat zijn de voordelen van het gebruik van Ultralytics YOLOv8 voor snelheidsschatting in verkeersmanagement?

Het gebruik van Ultralytics YOLOv8 voor het schatten van de snelheid biedt aanzienlijke voordelen bij verkeersmanagement:

  • Verbeterde veiligheid: Maak een nauwkeurige schatting van voertuigsnelheden om snelheidsoverschrijdingen te detecteren en de verkeersveiligheid te verbeteren.
  • Real-Time Bewaking: Profiteer van YOLOv8 voor realtime objectdetectie om de verkeersstroom en verkeersopstoppingen effectief te bewaken.
  • Schaalbaarheid: Implementeer het model op verschillende hardware-opstellingen, van randapparaten tot servers, zodat flexibele en schaalbare oplossingen voor grootschalige implementaties gegarandeerd zijn.

Voor meer toepassingen, zie Voordelen van snelheidsschatting.

Kan YOLOv8 worden geĆÆntegreerd met andere AI-raamwerken zoals TensorFlow of PyTorch?

Ja, YOLOv8 kan worden geĆÆntegreerd met andere AI raamwerken zoals TensorFlow en PyTorch. Ultralytics biedt ondersteuning voor het exporteren van YOLOv8 modellen naar verschillende formaten zoals ONNX, TensorRT, en CoreML, wat zorgt voor een soepele interoperabiliteit met andere ML raamwerken.

Om een YOLOv8 model te exporteren naar het formaat ONNX :

yolo export --weights yolov8n.pt --include onnx

Lees meer over het exporteren van modellen in onze gids over exporteren.

Hoe nauwkeurig is de schatting van de snelheid met Ultralytics YOLOv8 ?

De nauwkeurigheid van het schatten van de snelheid met Ultralytics YOLOv8 hangt af van verschillende factoren, waaronder de kwaliteit van het volgen van objecten, de resolutie en framesnelheid van de video en omgevingsvariabelen. Hoewel de snelheidsschatter betrouwbare schattingen geeft, kan het zijn dat hij niet 100% nauwkeurig is door variaties in de snelheid van de frameverwerking en object occlusie.

Opmerking: Houd altijd rekening met de foutmarge en valideer de schattingen waar mogelijk met grondgegevens.

Kijk voor meer tips om de nauwkeurigheid te verbeteren op Argumenten SpeedEstimator sectie.

Waarom kiezen voor Ultralytics YOLOv8 in plaats van andere objectdetectiemodellen zoals TensorFlow Object Detection API?

Ultralytics YOLOv8 biedt verschillende voordelen ten opzichte van andere objectdetectiemodellen, zoals de TensorFlow Object Detection API:

  • Real-time prestaties: YOLOv8 is geoptimaliseerd voor real-time detectie en biedt een hoge snelheid en nauwkeurigheid.
  • Gebruiksgemak: YOLOv8 is ontworpen met een gebruiksvriendelijke interface en vereenvoudigt modeltraining en -implementatie.
  • Veelzijdigheid: Ondersteunt meerdere taken, waaronder objectdetectie, segmentatie en houding schatten.
  • Community en ondersteuning: YOLOv8 wordt ondersteund door een actieve community en uitgebreide documentatie, zodat ontwikkelaars de middelen hebben die ze nodig hebben.

Voor meer informatie over de voordelen van YOLOv8, bekijk onze gedetailleerde modelpagina.



Aangemaakt 2024-01-05, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (7), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

Reacties