İçeriğe geç

VisionEye View Object Mapping kullanarak Ultralytics YOLOv8 🚀

VisionEye Nesne Eşleme nedir?

Ultralytics YOLOv8 VisionEye, insan gözünün gözlemsel hassasiyetini taklit ederek bilgisayarların nesneleri tanımlama ve nokta atışı yapma kabiliyetini sunar. Bu işlevsellik, insan gözünün belirli bir bakış açısından ayrıntıları gözlemlemesine benzer şekilde, bilgisayarların belirli nesneleri ayırt etmesini ve bunlara odaklanmasını sağlar.

Örnekler

VisionEye Görünümü Nesne Takibi ile VisionEye Görünümü Mesafe Hesaplamalı VisionEye Görünümü
VisionEye View Nesne Haritalama kullanarak Ultralytics YOLOv8 VisionEye kullanarak Nesne Takibi ile Nesne Haritalamayı Görüntüle Ultralytics YOLOv8 VisionEye View ile Mesafe Hesaplama kullanarak Ultralytics YOLOv8
VisionEye View Nesne Haritalama kullanarak Ultralytics YOLOv8 VisionEye kullanarak Nesne Takibi ile Nesne Haritalamayı Görüntüle Ultralytics YOLOv8 VisionEye View ile Mesafe Hesaplama kullanarak Ultralytics YOLOv8

VisionEye Nesne Haritalama kullanarak 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 Argümanlar

İsim Tip Varsayılan Açıklama
color tuple (235, 219, 11) Çizgi ve nesne centroid rengi
pin_color tuple (255, 0, 255) VisionEye nokta atışı renk

Not

Sorularınız için Ultralytics Sorun Bölümüne veya aşağıda belirtilen tartışma bölümüne sorularınızı göndermekten çekinmeyin.

SSS

VisionEye Object Mapping'i Ultralytics YOLOv8 ile kullanmaya nasıl başlayabilirim?

VisionEye Object Mapping'i Ultralytics YOLOv8 ile kullanmaya başlamak için öncelikle Ultralytics YOLO paketini pip aracılığıyla yüklemeniz gerekir. Ardından, VisionEye ile nesne algılamayı ayarlamak için belgelerde sağlanan örnek kodu kullanabilirsiniz. İşte başlamanız için basit bir örnek:

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

VisionEye'ın Ultralytics YOLOv8 adresini kullanarak nesne izleme özelliğinin temel özellikleri nelerdir?

VisionEye'ın Ultralytics YOLOv8 ile nesne takibi, kullanıcıların bir video karesi içindeki nesnelerin hareketini takip etmelerini sağlar. Temel özellikler şunlardır:

  1. Gerçek Zamanlı Nesne Takibi: Nesneler hareket ederken onlara ayak uydurur.
  2. Nesne Tanımlama: YOLOv8 'un güçlü algılama algoritmalarını kullanır.
  3. Mesafe Hesaplama: Nesneler ve belirtilen noktalar arasındaki mesafeleri hesaplar.
  4. Ek Açıklama ve Görselleştirme: İzlenen nesneler için görsel işaretler sağlar.

VisionEye ile izlemeyi gösteren kısa bir kod parçacığı:

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

Kapsamlı bir kılavuz için VisionEye Object Mapping with Object Tracking'i ziyaret edin.

VisionEye'ın YOLOv8 modeli ile mesafeleri nasıl hesaplayabilirim?

VisionEye ve Ultralytics YOLOv8 ile mesafe hesaplaması, tespit edilen nesnelerin çerçevedeki belirli bir noktadan uzaklığının belirlenmesini içerir. Otonom sürüş ve gözetim gibi uygulamalarda yararlı olan uzamsal analiz yeteneklerini geliştirir.

İşte basitleştirilmiş bir örnek:

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

Ayrıntılı talimatlar için Mesafe Hesaplamalı VisionEye'a bakın.

Nesne eşleme ve izleme için neden Ultralytics YOLOv8 adresini kullanmalıyım?

Ultralytics YOLOv8 hızı, doğruluğu ve entegrasyon kolaylığı ile ünlüdür, bu da onu nesne haritalama ve izleme için en iyi seçenek haline getirir. Temel avantajları şunlardır:

  1. Son Teknoloji Performans: Gerçek zamanlı nesne algılamada yüksek doğruluk sağlar.
  2. Esneklik: Algılama, izleme ve mesafe hesaplama gibi çeşitli görevleri destekler.
  3. Topluluk ve Destek: Sorun giderme ve geliştirmeler için kapsamlı belgeler ve aktif GitHub topluluğu.
  4. Kullanım Kolaylığı: Sezgisel API, karmaşık görevleri basitleştirerek hızlı dağıtım ve yinelemeye olanak tanır.

Başvurular ve avantajlar hakkında daha fazla bilgi için Ultralytics YOLOv8 belgelerine göz atın.

VisionEye'ı Comet veya ClearML gibi diğer makine öğrenimi araçlarıyla nasıl entegre edebilirim?

Ultralytics YOLOv8 Comet ve gibi çeşitli makine öğrenimi araçlarıyla sorunsuz bir şekilde entegre olabilir ve deney takibini, işbirliğini ve yeniden üretilebilirliği geliştirebilir. Başlamak için adresinin ClearML YOLOv5 Comet ile nasıl kullanılacağına ve adresinin ile YOLOv8 ClearML nasıl entegre edileceğine ilişkin ayrıntılı kılavuzları izleyin.

Daha fazla keşif ve entegrasyon örnekleri için Ultralytics Entegrasyonlar Kılavuzumuza göz atın.



Oluşturma 2023-12-18, Güncelleme 2024-07-05
Yazarlar: glenn-jocher (13), IvorZhu331 (1), RizwanMunawar (1)

Yorumlar