Skip to content

VisionEye View Mapping d'objets à l'aide de Ultralytics YOLOv8 🚀

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

Ultralytics YOLOv8 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 View VisionEye View avec suivi des objets VisionEye Vue avec calcul de la distance
VisionEye View Object Mapping (cartographie d'objets) Ă  l'aide de Ultralytics YOLOv8 VisionEye View Object Mapping with Object Tracking using Ultralytics YOLOv8 VisionEye View avec calcul de la distance Ă  l'aide de Ultralytics YOLOv8
VisionEye View Object Mapping (cartographie d'objets) Ă  l'aide de Ultralytics YOLOv8 VisionEye View Object Mapping with Object Tracking using Ultralytics YOLOv8 VisionEye View avec calcul de la distance Ă  l'aide de Ultralytics YOLOv8

VisionEye Object Mapping (cartographie d'objets) Ă  l'aide de YOLOv8

import cv2

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

model = YOLO("yolov8n.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("yolov8n.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("yolov8s.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

Nom Type DĂ©faut Description
color tuple (235, 219, 11) Couleur du centroĂŻde de la ligne et de l'objet
pin_color tuple (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 YOLOv8 ?

Pour commencer à utiliser VisionEye Object Mapping avec Ultralytics YOLOv8 , 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("yolov8n.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 fonction de suivi d'objets de VisionEye à l'aide de Ultralytics YOLOv8 ?

Le suivi d'objets de VisionEye avec Ultralytics YOLOv8 permet aux utilisateurs de suivre le mouvement des 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 YOLOv8.
  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("yolov8n.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 puis-je calculer les distances avec le modèle YOLOv8 de VisionEye ?

Le calcul de la distance avec VisionEye et Ultralytics YOLOv8 consiste à déterminer la distance des objets détectés par rapport à un point précis de l'image. 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("yolov8s.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 YOLOv8 pour la cartographie et le suivi d'objets ?

Ultralytics YOLOv8 est réputé pour sa rapidité, 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 documentationUltralytics YOLOv8 .

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

Ultralytics YOLOv8 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 YOLOv8 avec ClearML pour commencer.

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



Créé le 2023-12-18, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (13), IvorZhu331 (1), RizwanMunawar (1)

Commentaires