Calcul de distance à l'aide d'Ultralytics YOLO11
Qu'est-ce que le calcul de distance ?
La mesure de l'écart entre deux objets est appelée calcul de distance dans un espace spécifié. Dans le cas d'Ultralytics YOLO11, le centroïde de la boîte englobante est utilisé pour calculer la distance pour les boîtes englobantes mises en évidence par l'utilisateur.
Regarder : Calcul de distance à l'aide d'Ultralytics YOLO11
Visuels
Calcul de distance à l'aide d'Ultralytics YOLO11 |
---|
![]() |
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 de l'objet pour une meilleure compréhension contextuelle.
- Compréhension de la scène : Améliore la compréhension de la scène 3D pour une meilleure prise de décision dans des applications telles que les véhicules autonomes et les systèmes de surveillance.
- Évitement de collision : 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 des objets dans l'environnement surveillé.
Calcul de la distance
- Cliquez sur deux boîtes englobantes avec le bouton gauche de la souris pour calculer la distance
- Un clic droit de la souris supprimera tous les points dessinés
- Un clic gauche de la souris peut être utilisé pour dessiner des points
La distance est estimée
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.
Calcul de distance à 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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo11n.pt", # path to the YOLO11 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 windows
DistanceCalculation()
Arguments
Voici un tableau avec les DistanceCalculation
arguments :
Argument | Type | Par défaut | Description |
---|---|---|---|
model |
str |
None |
Chemin d'accès au fichier de modèle Ultralytics YOLO. |
Vous pouvez également utiliser divers track
arguments dans le DistanceCalculation
solution.
Argument | Type | Par 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 basses permettent de suivre plus d'objets, mais peuvent inclure de faux positifs. |
iou |
float |
0.5 |
Définit le seuil Intersection sur Union (IoU) pour filtrer les détections qui se chevauchent. |
classes |
list |
None |
Filtre les résultats par index de classe. Par exemple, classes=[0, 2, 3] suit uniquement les classes spécifiées. |
verbose |
bool |
True |
Contrôle l'affichage des résultats de suivi, fournissant une sortie visuelle des objets suivis. |
device |
str |
None |
Spécifie le périphérique pour l'inférence (par exemple, cpu , cuda:0 ou 0 ). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
De plus, les arguments de visualisation suivants sont disponibles :
Argument | Type | Par défaut | Description |
---|---|---|---|
show |
bool |
False |
Si True , affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour 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 englobantes. Si None , la largeur de ligne est automatiquement ajustée en fonction de la taille de l'image. Fournit une personnalisation visuelle pour plus de clarté. |
show_conf |
bool |
True |
Affiche le score de confiance pour chaque détection à côté de l'étiquette. Donne un aperçu de la certitude du modèle pour chaque détection. |
show_labels |
bool |
True |
Affiche les étiquettes pour chaque détection dans la sortie visuelle. Fournit une compréhension immédiate des objets détectés. |
Détails de l'implémentation
L'argument DistanceCalculation
class fonctionne en suivant les objets à travers les images vidéo et en calculant la distance euclidienne entre les centroïdes des boîtes englobantes sélectionnées. Lorsque vous cliquez 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 l'image avec une ligne de connexion entre les objets.
L'implémentation utilise le mouse_event_for_distance
méthode pour gérer les interactions de la souris, permettant aux utilisateurs de sélectionner des objets et d'effacer les sélections si nécessaire. La process
la méthode gère le traitement image par image, le suivi des objets et le calcul des distances.
Applications
Le calcul de distance avec YOLO11 a de nombreuses applications pratiques :
- Analyse de vente au détail : Mesurer la proximité des clients avec les produits et analyser l’efficacité de la disposition du magasin
- Sécurité industrielle : Surveiller les distances de sécurité entre les travailleurs et les machines
- Gestion du trafic : Analysez l’espacement des véhicules et détectez le talonnage
- Analyse sportive : Calculez les distances entre les joueurs, le ballon et les positions clés sur le terrain
- Santé : Assurer une distanciation appropriée dans les salles d’attente et surveiller les mouvements des patients
- Robotique : Permettre aux robots de maintenir des distances appropriées par rapport aux obstacles et aux personnes
FAQ
Comment calculer les distances entre les objets à l'aide d'Ultralytics YOLO11 ?
Pour calculer les distances entre les objets à l'aide de Ultralytics YOLO11, vous devez identifier les centroïdes des boîtes englobantes des objets détectés. Ce processus implique l'initialisation de la classe DistanceCalculation
du module Ultralytics' solutions
module et en utilisant les sorties de suivi du modèle pour calculer les distances.
Quels sont les avantages de l'utilisation du calcul de distance avec Ultralytics YOLO11 ?
L’utilisation du calcul de distance avec Ultralytics YOLO11 offre plusieurs avantages :
- Précision de localisation : Fournit un positionnement spatial précis des objets.
- Estimation de la taille : Aide à estimer les tailles physiques, contribuant à une meilleure compréhension contextuelle.
- Compréhension de la scène : Améliore la compréhension des scènes 3D, ce qui contribue à améliorer la prise de décision dans des applications telles que la conduite autonome et la surveillance.
- Traitement en temps réel : Effectue des calculs à la volée, ce qui le rend approprié pour l'analyse vidéo en direct.
- Capacités d'intégration : Fonctionne de manière transparente avec d'autres solutions YOLO11 telles que le suivi d'objets et l'estimation de la vitesse.
Puis-je effectuer un calcul de distance dans des flux vidéo en temps réel avec Ultralytics YOLO11 ?
Oui, vous pouvez effectuer un calcul de distance dans les flux vidéo en temps réel avec Ultralytics YOLO11. Le processus implique la capture d'images vidéo à l'aide de module DNN d'OpenCV, l'exécution de YOLO11 détection d'objets, et l'utilisation de la DistanceCalculation
classe pour calculer les distances entre les objets dans les images successives. Pour une implémentation détaillée, consultez l' exemple de flux vidéo.
Comment supprimer les points dessinés lors du calcul de distance à l'aide d'Ultralytics YOLO11 ?
Pour supprimer les points dessinés lors du calcul de distance avec Ultralytics YOLO11, vous pouvez utiliser un clic droit de la souris. Cette action effacera tous les points que vous avez dessinés. Pour plus de détails, consultez la section des notes sous l'exemple de calcul de distance.
Quels sont les principaux arguments pour initialiser la classe DistanceCalculation dans Ultralytics YOLO11 ?
Les principaux arguments pour initialiser la DistanceCalculation
classe dans Ultralytics YOLO11 sont les suivants :
model
: Chemin d'accès au fichier de modèle YOLO11.tracker
: Algorithme de suivi à utiliser (la valeur par défaut est 'botsort.yaml').conf
: Seuil de confiance pour les détections.show
: Indicateur pour afficher la sortie.
Pour une liste exhaustive et les valeurs par défaut, consultez les arguments de DistanceCalculation.