Estimation de la vitesse à l'aide de Ultralytics YOLO11 🚀
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 YOLO11 vous pouvez désormais calculer la vitesse des objets en utilisant le suivi des objets ainsi que les données de distance et de temps, ce qui est crucial pour des tâches telles que le contrôle et la surveillance du trafic. La précision de l'estimation de la vitesse influe directement sur l'efficacité et la fiabilité de diverses applications, ce qui en fait un élément clé de l'avancement des systèmes intelligents et des processus de prise de décision en temps réel.
Regarder : Estimation de la vitesse à l'aide de Ultralytics YOLO11
Consultez notre blog
Pour en savoir plus sur l'estimation de la vitesse, consultez notre article de blog : Ultralytics YOLO11 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 du trafic, d'améliorer la sécurité et de réduire la congestion sur les routes.
- Navigation autonome précise : Dans les systèmes autonomes tels que 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, améliorant ainsi 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 YOLO11 | Estimation de la vitesse sur un pont à l'aide de Ultralytics YOLO11 |
La vitesse est une estimation
La vitesse est une estimation et peut ne pas être tout à fait exacte. En outre, l'estimation peut varier en fonction de la vitesse du GPU et de facteurs environnementaux.
Estimation de la vitesse à l'aide d'Ultralytics YOLO
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# speed region points
speed_region = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
region=speed_region, # pass region points
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
SpeedEstimator
Arguments
Voici un tableau avec les SpeedEstimator
arguments :
Argument | Type | Défaut | Description |
---|---|---|---|
model |
str |
None |
Chemin d'accès au fichier modèleYOLO d'Ultralytics . |
region |
list |
[(20, 400), (1260, 400)] |
Liste des points définissant la région de comptage. |
Le SpeedEstimator
permet l'utilisation de track
paramètres :
Argument | Type | Défaut | Description |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Spécifie l'algorithme de suivi à utiliser, par exemple, bytetrack.yaml ou botsort.yaml . |
conf |
float |
0.3 |
Définit le seuil de confiance pour les détections ; des valeurs plus faibles permettent de suivre plus d'objets mais peuvent inclure des faux positifs. |
iou |
float |
0.5 |
Définit le seuil d'intersection sur l'union (IoU) pour le filtrage des détections qui se chevauchent. |
classes |
list |
None |
Filtre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées. |
verbose |
bool |
True |
Contrôle l'affichage des résultats du suivi, fournissant une sortie visuelle des objets suivis. |
device |
str |
None |
Spécifie le dispositif d'inférence (par ex, cpu , cuda:0 ou 0 ). Permet aux utilisateurs de choisir entre CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle. |
En outre, les options de visualisation suivantes sont prises en charge :
Argument | Type | Défaut | Description |
---|---|---|---|
show |
bool |
False |
Si True affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour d'information visuel immédiat pendant le développement ou les tests. |
line_width |
None or int |
None |
Spécifie la largeur de ligne des boîtes de délimitation. Si les None La largeur de la ligne est automatiquement ajustée en fonction de la taille de l'image. Permet une personnalisation visuelle pour plus de clarté. |
FAQ
Comment estimer la vitesse d'un objet à l'aide de Ultralytics YOLO11 ?
L'estimation de la vitesse des objets avec Ultralytics YOLO11 implique de combiner les techniques de détection et de suivi des objets. Tout d'abord, vous devez détecter les objets dans chaque image à l'aide du modèle YOLO11 . Ensuite, suivez ces objets d'une image à l'autre pour calculer leur mouvement dans le temps. Enfin, utilisez la distance parcourue par l'objet entre les images et la fréquence des images pour estimer sa vitesse.
Exemple:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.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
speedestimator = solutions.SpeedEstimator(
region=[(0, 360), (1280, 360)],
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
Pour plus de détails, consultez notre article de blog officiel.
Quels sont les avantages de l'utilisation de Ultralytics YOLO11 pour l'estimation de la vitesse dans la gestion du trafic ?
L'utilisation de Ultralytics YOLO11 pour l'estimation de la vitesse offre des avantages significatifs dans la gestion du trafic :
- Sécurité accrue: Estimation précise de la vitesse des véhicules pour détecter les excès de vitesse et améliorer la sécurité routière.
- Surveillance en temps réel: Bénéficiez de la capacité de détection d'objets en temps réel de YOLO11 pour surveiller efficacement le flux de trafic et les embouteillages.
- Évolutivité: Déployer le modèle sur différentes configurations matérielles, des appareils périphériques aux serveurs, afin de garantir des solutions flexibles et évolutives pour les mises en œuvre à grande échelle.
Pour plus d'applications, voir les avantages de l'estimation de la vitesse.
YOLO11 peut-il être intégré à d'autres frameworks d'IA tels que TensorFlow ou PyTorch?
Oui, YOLO11 peut être intégré avec d'autres frameworks d'IA comme TensorFlow et PyTorch. Ultralytics fournit un support pour l'exportation des modèles YOLO11 vers différents formats tels que ONNX, TensorRTet CoreMLgarantissant une interopérabilité harmonieuse avec d'autres frameworks de ML.
Pour exporter un modèle YOLO11 au format ONNX :
Pour en savoir plus sur l'exportation de modèles, consultez notre guide sur l'exportation.
Quelle est la précision de l'estimation de la vitesse à l'aide de Ultralytics YOLO11 ?
La précision de l'estimation de la vitesse à l'aide de Ultralytics YOLO11 dépend de plusieurs facteurs, notamment de la qualité du suivi des objets, de la résolution et de la fréquence d'images de la vidéo, ainsi que des variables environnementales. Bien que l'estimateur de vitesse fournisse des estimations fiables, il peut ne pas être précis à 100 % en raison des variations de la vitesse de traitement des images et de l'occlusion des objets.
Remarque: il faut toujours tenir compte de la marge d'erreur et valider les estimations à l'aide de données de terrain lorsque cela est possible.
Pour plus de conseils sur l'amélioration de la précision, consultez le site Arguments SpeedEstimator
section.