Calcul de distance avec Ultralytics YOLO26#
Qu'est-ce que le calcul de distance ?#
Le calcul de distance est le processus qui consiste à mesurer l'espace entre deux objets détectés dans une image ou une trame vidéo. Dans le cas de Ultralytics YOLO26, le centroïde de la boîte englobante est utilisé pour calculer la distance entre les boîtes englobantes mises en évidence par l'utilisateur.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Visuels#
| Calcul de distance avec Ultralytics YOLO26 |
|---|
![]() |
Avantages du calcul de distance#
- Précision de localisation : améliore le positionnement spatial précis dans les tâches de vision par ordinateur.
- Estimation de la taille : permet d'estimer la taille des objets pour une meilleure compréhension du contexte.
- Compréhension de la scène : améliore la compréhension des scènes 3D afin de favoriser une meilleure prise de décision dans des applications telles que les véhicules autonomes et les systèmes de surveillance.
- Évitement des collisions : permet aux systèmes de détecter les collisions potentielles en surveillant les distances entre les objets en mouvement.
- Analyse spatiale : facilite l'analyse des relations et des interactions entre les objets dans l'environnement surveillé.
Calcul de distance
- Clique sur deux boîtes englobantes avec le bouton gauche de la souris pour calculer la distance.
- Utilise le bouton droit de la souris pour supprimer tous les points tracés.
La distance est une estimation
La distance est une estimation et peut ne pas être totalement exacte car elle est calculée à l'aide de données 2D, qui manquent d'informations sur la profondeur.
Calculer les distances avec YOLO26#
La solution DistanceCalculation suit les objets d'une trame à l'autre et mesure, en pixels, la distance euclidienne entre les centroïdes de deux boîtes englobantes quelconques que tu sélectionnes avec la souris. Exécute l'exemple ci-dessous, puis clique avec le bouton gauche sur deux objets pour tracer la ligne qui les relie et afficher la distance ; clique avec le bouton droit pour effacer ta sélection.
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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # path to the YOLO26 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(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 windowsArguments de DistanceCalculation()#
Voici un tableau présentant les arguments de DistanceCalculation :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
model | str | None | Chemin vers un fichier de modèle Ultralytics YOLO. |
line_width | int | 2 | Épaisseur des lignes des boîtes, des points clés et des comptages dessinés par la solution. |
verbose | bool | True | Active le journal par image de la solution, qui indique la forme d'entrée, les comptages par classe et la vitesse de traitement. L'appel de suivi lui-même est toujours silencieux. |
Tu peux également utiliser différents arguments de track dans la solution DistanceCalculation.
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Indique l'algorithme de suivi à utiliser. Options intégrées : botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Définit le seuil de confiance des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs. |
iou | float | 0.7 | Définit le seuil d'intersection sur union (IoU) pour filtrer les 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. |
device | str | None | Indique le périphérique utilisé pour l'inférence (par exemple, cpu, cuda:0 ou 0). Permet de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
imgsz | int or tuple | 640 | Taille de l'image d'inférence cible : un entier pour un carré ou une paire (height, width). Les formes sont ajustées au pas du modèle. |
max_det | int | 300 | Nombre maximal de détections conservées par image avant le suivi, ce qui limite les objets traités par une solution dans les scènes denses. |
quantize | int or str | None | Précision de l'inférence : 16 (FP16) ou 32/non définie (FP32) pour les modèles PyTorch et TorchScript ; les autres formats s'exécutent à la précision sélectionnée par leur artefact et leur environnement d'exécution. Remplace l'indicateur déprécié half. |
De plus, les arguments de visualisation suivants sont disponibles :
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
show | bool | False | Si True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour obtenir un retour visuel immédiat pendant le développement ou les tests. |
show_conf | bool | True | Affiche le score de confiance de chaque détection à côté de son étiquette. Donne un aperçu du degré de certitude du modèle pour chaque détection. |
show_labels | bool | True | Affiche les étiquettes de chaque détection dans la sortie visuelle. Permet d’identifier immédiatement les objets détectés. |
Détails de l'implémentation#
La classe DistanceCalculation fonctionne en suivant les objets d'une trame vidéo à l'autre et en calculant la distance euclidienne entre les centroïdes des boîtes englobantes sélectionnées. Lorsque tu cliques sur deux objets, la solution :
- extrait les centroïdes (points centraux) des boîtes englobantes sélectionnées ;
- calcule la distance euclidienne entre ces centroïdes en pixels ;
- affiche la distance sur la trame avec une ligne reliant les objets ;
L'implémentation utilise la méthode mouse_event_for_distance pour gérer les interactions avec la souris, ce qui permet aux utilisateurs de sélectionner des objets et d'effacer les sélections selon leurs besoins. La méthode process gère le traitement trame par trame, le suivi des objets et le calcul des distances.
Applications#
Le calcul de distance avec YOLO26 possède de nombreuses applications pratiques :
- Analyse commerciale : mesure la proximité des clients par rapport aux produits et analyse l'efficacité de l'agencement du magasin
- Sécurité industrielle : surveille les distances de sécurité entre les travailleurs et les machines
- Gestion du trafic : analyse l'espacement entre les véhicules et détecte le non-respect des distances de sécurité
- Analyse sportive : calcule les distances entre les joueurs, le ballon et les positions clés du terrain
- Santé : garantit une distance appropriée dans les salles d'attente et surveille les déplacements des patients
- Robotique : permet aux robots de maintenir des distances appropriées par rapport aux obstacles et aux personnes
FAQ#
Le calcul de distance avec Ultralytics YOLO26 offre plusieurs avantages :
- Précision de localisation : fournit un positionnement spatial précis des objets.
- Estimation de la taille : aide à estimer les dimensions physiques, ce qui contribue à une meilleure compréhension du contexte.
- Compréhension de la scène : améliore la compréhension des scènes 3D et favorise une meilleure prise de décision dans des applications telles que la conduite autonome et la surveillance.
- Traitement en temps réel : effectue les calculs à la volée, ce qui le rend adapté à l'analyse vidéo en direct.
- Capacités d'intégration : fonctionne de manière fluide avec d'autres solutions YOLO26 telles que le suivi des objets et l'estimation de la vitesse.
Oui, tu peux effectuer un calcul de distance sur des flux vidéo en temps réel avec Ultralytics YOLO26. Le processus consiste à capturer des trames vidéo avec OpenCV, à exécuter la détection d'objets YOLO26 et à utiliser la classe
DistanceCalculationpour calculer les distances entre les objets dans des trames successives. Pour une implémentation détaillée, consulte l'exemple de flux vidéo.Pour supprimer les points tracés pendant le calcul de distance avec Ultralytics YOLO26, tu peux cliquer avec le bouton droit de la souris. Cette action effacera tous les points que tu as tracés. Pour plus de détails, consulte la section de note sous l'exemple de calcul de distance.
Les principaux arguments pour initialiser la classe
DistanceCalculationdans Ultralytics YOLO26 sont les suivants :model: chemin vers le fichier du modèle YOLO26.tracker: algorithme de suivi à utiliser (les solutions utilisent par défautbotsort.yaml).conf: seuil de confiance pour les détections.show: indicateur permettant d'afficher la sortie.
Pour obtenir la liste exhaustive et les valeurs par défaut, consulte les arguments de DistanceCalculation.

Pour calculer les distances entre les objets avec Ultralytics YOLO26, tu dois identifier les centroïdes des boîtes englobantes des objets détectés. Ce processus consiste à initialiser la classe
DistanceCalculationdu modulesolutionsd'Ultralytics et à utiliser les sorties de suivi du modèle pour calculer les distances.