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 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)