Ultralytics YOLO27 :
Get Started

Calcul de distance avec Ultralytics YOLO26#

Qu’est-ce que le calcul de distance ?#

Le calcul de distance consiste à mesurer l’espace entre deux objets détectés dans une image ou une image vidéo. Avec Ultralytics YOLO26, le centroïde de la boîte englobante sert à calculer la distance des boîtes englobantes sélectionnées par l’utilisateur.



Regarder : Comment estimer en pixels la distance entre des objets détectés avec Ultralytics YOLO 🚀

Visuels#

Calcul de distance avec Ultralytics YOLO26
Calcul de distance avec Ultralytics YOLO26

Avantages du calcul de distance#

  • Précision de la 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 mieux comprendre le contexte.
  • Compréhension de la scène : améliore la compréhension des scènes 3D pour prendre de meilleures décisions dans des applications comme les véhicules autonomes et les systèmes de surveillance.
  • Évitement des collisions : permet aux systèmes de détecter les risques de collision 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 avec le bouton gauche de la souris sur deux boîtes englobantes pour calculer la distance.
  • Utilise le bouton droit de la souris pour supprimer tous les points dessinés.
La distance est une estimation

La distance est une estimation et peut manquer de précision, car elle est calculée à partir de données 2D, qui ne contiennent pas d’informations de profondeur.

Calculer les distances avec YOLO26#

La solution DistanceCalculation suit les objets d’une image à l’autre et mesure, en pixels, la distance euclidienne entre les centroïdes de deux boîtes englobantes 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.

Calcul de distance avec Ultralytics YOLO
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Écriture de la vidéo
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))

# Initialiser l’objet de calcul de distance
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # Chemin vers le fichier du modèle YOLO26.
    show=True,  # afficher le résultat
)

# Traiter la vidéo
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)  # Accéder à la sortie

    video_writer.write(results.plot_im)  # Écrire l’image traitée.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # fermer toutes les fenêtres ouvertes

Arguments de DistanceCalculation()#

Voici un tableau des arguments de DistanceCalculation :

ArgumentTypeValeur par défautDescription
modelstrNoneChemin vers un fichier de modèle Ultralytics YOLO.
line_widthint2Épaisseur des lignes des boîtes, des points clés et des compteurs dessinés par la solution.
verboseboolTrueActive le journal de la solution pour chaque image, qui indique la forme de l'entrée, le nombre d'éléments par classe et la vitesse de traitement. L'appel de suivi reste toujours silencieux.

Tu peux également utiliser différents arguments track dans la solution DistanceCalculation.

ArgumentTypeValeur par défautDescription
trackerstr'tracktrack.yaml'Indique l'algorithme de suivi à utiliser. Options intégrées : botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Définit le seuil de confiance des détections ; des valeurs plus faibles permettent de suivre davantage d'objets, mais peuvent inclure des faux positifs.
ioufloat0.7Définit le seuil d'intersection sur l'union (IoU) utilisé pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats selon l'indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
devicestrNoneIndique 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.
imgszint or tuple640Taille cible de l'image pour l'inférence : un entier pour une image carrée ou une paire (height, width). Les dimensions sont ajustées au stride du modèle.
max_detint300Nombre maximal de détections conservées par image avant le suivi, ce qui limite le nombre d'objets qu'une solution traite dans les scènes denses.
quantizeint or strNonePrécision d’inférence : 16 (FP16) ou 32/unset (FP32) pour les modèles PyTorch et TorchScript hors CPU ; les autres formats utilisent la précision définie par leur artefact et leur environnement d’exécution. Remplace l’argument half obsolète.

De plus, les arguments de visualisation suivants sont disponibles :

ArgumentTypeValeur par défautDescription
showboolFalseSi 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_confboolTrueAffiche le score de confiance de chaque détection à côté de son étiquette. Donne une indication du degré de certitude du modèle pour chaque détection.
show_labelsboolTrueAffiche les étiquettes de chaque détection dans le résultat visuel. Permet d'identifier immédiatement les objets détectés.

Détails de l’implémentation#

La classe DistanceCalculation suit les objets d’une image vidéo à l’autre et calcule la distance euclidienne entre les centroïdes des boîtes englobantes sélectionnées. Lorsque tu cliques sur deux objets, la solution :

  1. Extrait les centroïdes (points centraux) des boîtes englobantes sélectionnées
  2. Calcule la distance euclidienne en pixels entre ces centroïdes
  3. Affiche la distance sur l’image et trace une ligne entre 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 leur sélection au besoin. La méthode process gère le traitement image par image, le suivi des objets et le calcul des distances.

Applications#

Le calcul de distance avec YOLO26 a de nombreuses applications pratiques :

  • Analyse du commerce de détail : mesurer la proximité des clients avec les produits et analyser l’efficacité de l’agencement des magasins
  • Sécurité industrielle : surveiller les distances de sécurité entre les travailleurs et les machines
  • Gestion du trafic : analyser l’espacement entre les véhicules et détecter les distances de sécurité insuffisantes
  • Analyse sportive : calculer les distances entre les joueurs, le ballon et les positions clés sur le terrain
  • Santé : garantir une distance suffisante dans les salles d’attente et surveiller les déplacements des patients
  • Robotique : permettre aux robots de garder une distance appropriée avec les obstacles et les personnes

FAQ#

  • Pour calculer les distances entre des objets avec Ultralytics YOLO26, tu dois identifier les centroïdes des boîtes englobantes des objets détectés. Pour cela, initialise la classe DistanceCalculation du module solutions d’Ultralytics et utilise les sorties de suivi du modèle pour calculer les distances.

  • Le calcul de distance avec Ultralytics YOLO26 présente plusieurs avantages :

    • Précision de la localisation : fournit un positionnement spatial précis des objets.
    • Estimation de la taille : aide à estimer les dimensions physiques, pour mieux comprendre le contexte.
    • Compréhension de la scène : améliore la compréhension des scènes 3D et facilite la prise de décision dans des applications comme la conduite autonome et la surveillance.
    • Traitement en temps réel : effectue les calculs à la volée, ce qui convient à l’analyse vidéo en direct.
    • Capacités d’intégration : fonctionne parfaitement avec d’autres solutions YOLO26, comme le suivi d’objets et l’estimation de vitesse.
  • Oui, tu peux calculer les distances en temps réel dans des flux vidéo avec Ultralytics YOLO26. Le processus consiste à capturer des images vidéo avec OpenCV, à exécuter la détection d’objets YOLO26 et à utiliser la classe DistanceCalculation pour calculer les distances entre les objets dans des images successives. Pour une implémentation détaillée, consulte l’exemple de flux vidéo.

  • Pour supprimer les points dessinés lors du 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 dessinés. Pour en savoir plus, consulte la section de remarques de l’exemple de calcul de distance.

  • Les principaux arguments pour initialiser la classe DistanceCalculation dans Ultralytics YOLO26 sont les suivants :

    • model : chemin vers le fichier du modèle YOLO26.
    • tracker : algorithme de suivi à utiliser (les solutions utilisent par défaut tracktrack.yaml).
    • conf : seuil de confiance pour les détections.
    • show : indicateur d’affichage de la sortie.

    Pour consulter la liste complète et les valeurs par défaut, voir les arguments de DistanceCalculation.

Commentaires