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
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 Ă l'aide de YOLOv8 Exemple
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()
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 facultatifs set_args
Nom | Type | DĂ©faut | Description |
---|---|---|---|
reg_pts |
list |
[(20, 400), (1260, 400)] |
Points définissant la zone de la région |
names |
dict |
None |
Noms des classes |
view_img |
bool |
False |
Afficher les cadres avec les décomptes |
line_thickness |
int |
2 |
Augmente l'épaisseur des boîtes de délimitation |
region_thickness |
int |
5 |
Épaisseur de la contre-région ou de la ligne de l'objet |
spdl_dist_thresh |
int |
10 |
Seuil de distance euclidienne pour la ligne de contrĂ´le de 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-08
Auteurs : Burhan-Q (1), RizwanMunawar (2), glenn-jocher (2), AyushExel (1)