Skip to content

Estimation de la vitesse à l'aide de Ultralytics YOLOv8 🚀

Qu'est-ce que l'estimation de la vitesse ?

L'estimation de la vitesse est le processus de calcul de la vitesse de déplacement d'un objet dans un contexte donné, souvent utilisé dans les applications de vision par ordinateur. En utilisant Ultralytics YOLOv8 tu peux maintenant calculer la vitesse d'un objet en utilisant le suivi d'objet en même temps que les données de distance et de temps, ce qui est crucial pour des tâches telles que la circulation et la surveillance. La précision de l'estimation de la vitesse influence directement l'efficacité et la fiabilité de diverses applications, ce qui en fait un élément clé dans l'avancement des systèmes intelligents et des processus de prise de décision en temps réel.



Regarde : Estimation de la vitesse Ă  l'aide de Ultralytics YOLOv8

Jette un coup d'Ĺ“il Ă  notre blog

Pour en savoir plus sur l'estimation de la vitesse, consulte notre article de blog : Ultralytics YOLOv8 pour l'estimation de la vitesse dans les projets de vision par ordinateur.

Avantages de l'estimation de la vitesse ?

  • ContrĂ´le efficace du trafic : Une estimation prĂ©cise de la vitesse permet de gĂ©rer le flux de circulation, d'amĂ©liorer la sĂ©curitĂ© et de rĂ©duire les embouteillages sur les routes.
  • Navigation autonome prĂ©cise : Dans les systèmes autonomes comme les voitures auto-conduites, une estimation fiable de la vitesse garantit une navigation sĂ»re et prĂ©cise du vĂ©hicule.
  • AmĂ©lioration de la sĂ©curitĂ© de la surveillance : L'estimation de la vitesse dans l'analyse de la surveillance permet d'identifier les comportements inhabituels ou les menaces potentielles, ce qui amĂ©liore l'efficacitĂ© des mesures de sĂ©curitĂ©.

Applications dans le monde réel

Transport Transport
Estimation de la vitesse sur route Ă  l'aide de Ultralytics YOLOv8 Estimation de la vitesse sur un pont Ă  l'aide de Ultralytics YOLOv8
Estimation de la vitesse sur route Ă  l'aide de Ultralytics YOLOv8 Estimation de la vitesse sur un pont Ă  l'aide de Ultralytics YOLOv8

Estimation de la vitesse Ă  l'aide de YOLOv8 Exemple

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()
La vitesse est une estimation

La vitesse sera une estimation et peut ne pas être complètement exacte. De plus, l'estimation peut varier en fonction de la vitesse du GPU.

Arguments SpeedEstimator

Nom Type DĂ©faut Description
names dict None Dictionnaire des noms de classes.
reg_pts list [(20, 400), (1260, 400)] Liste des points de la région pour l'estimation de la vitesse.
view_img bool False Permet d'afficher ou non l'image avec des annotations.
line_thickness int 2 Épaisseur des lignes pour dessiner les boîtes et les pistes.
region_thickness int 5 Épaisseur des lignes de la région.
spdl_dist_thresh int 10 Seuil de distance pour le calcul de la vitesse.

Arguments model.track

Nom Type DĂ©faut Description
source im0 None répertoire source pour les images ou les vidéos
persist bool False persistance des pistes entre les images
tracker str botsort.yaml MĂ©thode de suivi 'bytetrack' ou 'botsort'
conf float 0.3 Seuil de confiance
iou float 0.5 Seuil de reconnaissance de dette
classes list None filtre les résultats par classe, c'est-à-dire classes=0, ou classes=[0,2,3]
verbose bool True Affiche les résultats du suivi des objets


Créé le 2024-01-05, Mis à jour le 2024-05-25
Auteurs : RizwanMunawar (2), glenn-jocher (4), Burhan-Q (1), AyushExel (1)

Commentaires