Skip to content

VisionEye View Object Mapping using Ultralytics YOLO11 🚀

Qu'est-ce que la cartographie d'objets VisionEye ?

Ultralytics YOLO11 VisionEye permet aux ordinateurs d'identifier et de pointer des objets, en simulant la précision d' observation de l'œil humain. Cette fonctionnalité permet aux ordinateurs de discerner et de se concentrer sur des objets spécifiques, tout comme l'œil humain observe les détails d'un point de vue particulier.

Échantillons

VisionEye ViewVisionEye View avec suivi des objetsVisionEye Vue avec calcul de la distance
VisionEye View Object Mapping (cartographie d'objets) à l'aide de Ultralytics YOLO11VisionEye View Object Mapping with Object Tracking using Ultralytics YOLO11VisionEye View avec calcul de la distance à l'aide de Ultralytics YOLO11
VisionEye View Object Mapping (cartographie d'objets) à l'aide de Ultralytics YOLO11VisionEye View Object Mapping with Object Tracking using Ultralytics YOLO11VisionEye View avec calcul de la distance à l'aide de Ultralytics YOLO11

Cartographie d'objets VisionEye avec YOLO11

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.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))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0)
    boxes = results[0].boxes.xyxy.cpu()
    clss = results[0].boxes.cls.cpu().tolist()

    annotator = Annotator(im0, line_width=2)

    for box, cls in zip(boxes, clss):
        annotator.box_label(box, label=names[int(cls)], color=colors(int(cls)))
        annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.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))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=colors(int(track_id)))
            annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import math

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("Path/to/video/file.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))

out = cv2.VideoWriter("visioneye-distance-calculation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (0, h)
pixel_per_meter = 10

txt_color, txt_background, bbox_clr = ((0, 0, 0), (255, 255, 255), (255, 0, 255))

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=bbox_clr)
            annotator.visioneye(box, center_point)

            x1, y1 = int((box[0] + box[2]) // 2), int((box[1] + box[3]) // 2)  # Bounding box centroid

            distance = (math.sqrt((x1 - center_point[0]) ** 2 + (y1 - center_point[1]) ** 2)) / pixel_per_meter

            text_size, _ = cv2.getTextSize(f"Distance: {distance:.2f} m", cv2.FONT_HERSHEY_SIMPLEX, 1.2, 3)
            cv2.rectangle(im0, (x1, y1 - text_size[1] - 10), (x1 + text_size[0] + 10, y1), txt_background, -1)
            cv2.putText(im0, f"Distance: {distance:.2f} m", (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 1.2, txt_color, 3)

    out.write(im0)
    cv2.imshow("visioneye-distance-calculation", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()

visioneye Arguments

NomTypeDéfautDescription
colortuple(235, 219, 11)Couleur du centroïde de la ligne et de l'objet
pin_colortuple(255, 0, 255)VisionEye pinpoint color

Note

Pour toute demande de renseignements, n'hésite pas à poster tes questions dans la section des problèmes deUltralytics ou dans la section de discussion mentionnée ci-dessous.

FAQ

Comment commencer à utiliser VisionEye Object Mapping avec Ultralytics YOLO11 ?

Pour commencer à utiliser VisionEye Object Mapping avec Ultralytics YOLO11, tu dois d'abord installer le paquet Ultralytics YOLO via pip. Ensuite, tu peux utiliser l'exemple de code fourni dans la documentation pour mettre en place la détection d'objets avec VisionEye. Voici un exemple simple pour commencer :

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.predict(frame)
    for result in results:
        # Perform custom logic with result
        pass

    cv2.imshow("visioneye", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Quelles sont les principales caractéristiques de la capacité de suivi d'objets de VisionEye à l'aide de Ultralytics YOLO11 ?

Le suivi d'objets de VisionEye avec Ultralytics YOLO11 permet aux utilisateurs de suivre le mouvement d'objets dans une image vidéo. Les principales caractéristiques sont les suivantes :

  1. Suivi des objets en temps réel: Suit l'évolution des objets au fur et à mesure qu'ils se déplacent.
  2. Identification des objets: Utilise les puissants algorithmes de détection de YOLO11.
  3. Calcul de la distance: Calcule les distances entre les objets et les points spécifiés.
  4. Annotation et visualisation: Fournit des marqueurs visuels pour les objets suivis.

Voici un bref extrait de code démontrant le suivi avec VisionEye :

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Annotate and visualize tracking
        pass

    cv2.imshow("visioneye-tracking", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Pour un guide complet, visite le site VisionEye Object Mapping with Object Tracking.

Comment calculer les distances avec le modèle YOLO11 de VisionEye ?

Le calcul de la distance avec VisionEye et Ultralytics YOLO11 consiste à déterminer la distance des objets détectés par rapport à un point précis du cadre. Il améliore les capacités d'analyse spatiale, utiles dans des applications telles que la conduite autonome et la surveillance.

Voici un exemple simplifié :

import math

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
center_point = (0, 480)  # Example center point
pixel_per_meter = 10

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Calculate distance logic
        distances = [
            (math.sqrt((box[0] - center_point[0]) ** 2 + (box[1] - center_point[1]) ** 2)) / pixel_per_meter
            for box in results
        ]

    cv2.imshow("visioneye-distance", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

Pour obtenir des instructions détaillées, reporte-toi au VisionEye avec calcul de la distance.

Pourquoi devrais-je utiliser Ultralytics YOLO11 pour la cartographie et le suivi d'objets ?

Ultralytics YOLO11 est réputé pour sa vitesse, sa précision et sa facilité d'intégration, ce qui en fait un choix de premier ordre pour la cartographie et le suivi d'objets. Ses principaux avantages sont les suivants :

  1. Des performances de pointe: Offre une grande précision dans la détection des objets en temps réel.
  2. Flexibilité: Prend en charge diverses tâches telles que la détection, le suivi et le calcul de la distance.
  3. Communauté et assistance: Documentation exhaustive et communauté GitHub active pour le dépannage et les améliorations.
  4. Facilité d'utilisation: l'API intuitive simplifie les tâches complexes, ce qui permet un déploiement et une itération rapides.

Pour plus d'informations sur les applications et les avantages, consulte la documentation deUltralytics YOLO11.

Comment puis-je intégrer VisionEye à d'autres outils d'apprentissage automatique comme Comet ou ClearML?

Ultralytics YOLO11 peut s'intégrer de façon transparente à divers outils d'apprentissage automatique comme Comet et ClearML, améliorant ainsi le suivi des expériences, la collaboration et la reproductibilité. Suis les guides détaillés sur l 'utilisation de YOLOv5 avec Comet et l'intégration de YOLO11 avec ClearML pour commencer.

Pour une exploration plus approfondie et des exemples d'intégration, consulte notre guide des intégrationsUltralytics .

📅 C réé il y a 11 mois ✏️ Mis à jour il y a 1 mois

Commentaires