Overslaan naar inhoud

VisionEye View Object Mapping met Ultralytics YOLOv8 πŸš€

Wat is VisionEye Object Mapping?

Ultralytics YOLOv8 VisionEye biedt computers de mogelijkheid om objecten te identificeren en aan te wijzen, waarbij de waarnemingsprecisie van het menselijk oog wordt gesimuleerd. Deze functionaliteit stelt computers in staat om specifieke objecten te onderscheiden en erop te focussen, net zoals het menselijk oog details waarneemt vanuit een bepaald gezichtspunt.

Monsters

VisionEye Weergave VisionEye-weergave met objecttracering VisionEye Weergave met afstandsberekening
VisionEye View Object Mapping met Ultralytics YOLOv8 VisionEye View Object Mapping met Object Tracking met behulp van Ultralytics YOLOv8 VisionEye-weergave met afstandsberekening met Ultralytics YOLOv8
VisionEye View Object Mapping met Ultralytics YOLOv8 VisionEye View Object Mapping met Object Tracking met behulp van Ultralytics YOLOv8 VisionEye-weergave met afstandsberekening met Ultralytics YOLOv8

VisionEye Object Mapping met 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 Argumenten

Naam Type Standaard Beschrijving
color tuple (235, 219, 11) De kleur van het middelpunt van lijnen en objecten
pin_color tuple (255, 0, 255) VisionEye pinpoint kleur

Opmerking

Als je vragen hebt, voel je dan vrij om deze te stellen in de Ultralytics Issue Section of in de discussiesectie hieronder.

FAQ

Hoe gebruik ik VisionEye Object Mapping met Ultralytics YOLOv8 ?

Om VisionEye Object Mapping te gaan gebruiken met Ultralytics YOLOv8 , moet je eerst het Ultralytics YOLO pakket installeren via pip. Daarna kun je de voorbeeldcode in de documentatie gebruiken om objectdetectie met VisionEye in te stellen. Hier is een eenvoudig voorbeeld om je op weg te helpen:

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()

Wat zijn de belangrijkste functies van VisionEye's objectvolgfunctie met Ultralytics YOLOv8 ?

VisionEye's object volgen met Ultralytics YOLOv8 stelt gebruikers in staat om de beweging van objecten binnen een videoframe te volgen. De belangrijkste functies zijn:

  1. Objecten in realtime volgen: Houdt objecten bij terwijl ze bewegen.
  2. Objectidentificatie: Maakt gebruik van YOLOv8's krachtige detectiealgoritmen.
  3. Berekening van afstanden: Berekent afstanden tussen objecten en opgegeven punten.
  4. Annotatie en visualisatie: Biedt visuele markeringen voor gevolgde objecten.

Hier is een kort stukje code dat het volgen met VisionEye demonstreert:

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()

Ga voor een uitgebreide handleiding naar VisionEye Object Mapping with Object Tracking.

Hoe kan ik afstanden berekenen met het YOLOv8 model van VisionEye?

Afstandsberekening met VisionEye en Ultralytics YOLOv8 omvat het bepalen van de afstand van gedetecteerde objecten tot een gespecificeerd punt in het frame. Het verbetert de ruimtelijke analysemogelijkheden, wat nuttig is in toepassingen zoals autonoom rijden en bewaking.

Hier is een vereenvoudigd voorbeeld:

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()

Raadpleeg voor gedetailleerde instructies de VisionEye met afstandsberekening.

Waarom zou ik Ultralytics YOLOv8 gebruiken voor het in kaart brengen en volgen van objecten?

Ultralytics YOLOv8 staat bekend om zijn snelheid, nauwkeurigheid en integratiegemak, waardoor het een topkeuze is voor het in kaart brengen en volgen van objecten. De belangrijkste voordelen zijn:

  1. Geavanceerde prestaties: Levert hoge nauwkeurigheid in realtime objectdetectie.
  2. Flexibiliteit: Ondersteunt verschillende taken zoals detectie, tracking en afstandsberekening.
  3. Community en ondersteuning: Uitgebreide documentatie en actieve GitHub-community voor probleemoplossing en verbeteringen.
  4. Gebruiksgemak: IntuΓ―tieve API vereenvoudigt complexe taken, waardoor snelle implementatie en iteratie mogelijk is.

Kijk voor meer informatie over toepassingen en voordelen op Ultralytics YOLOv8 documentatie.

Hoe kan ik VisionEye integreren met andere tools voor machinaal leren, zoals Comet of ClearML?

Ultralytics YOLOv8 kan naadloos integreren met verschillende machine learning tools zoals Comet en ClearML, waardoor het bijhouden van experimenten, samenwerking en reproduceerbaarheid wordt verbeterd. Volg de gedetailleerde gidsen over hoe YOLOv5 te gebruiken met Comet en YOLOv8 te integreren met ClearML om aan de slag te gaan.

Bekijk voor meer informatie en integratievoorbeelden onze Ultralytics Integratiegids.



Aangemaakt 2023-12-18, Bijgewerkt 2024-07-05
Auteurs: glenn-jocher (13), IvorZhu331 (1), RizwanMunawar (1)

Reacties