Bỏ để qua phần nội dung

VisionEye View Object Mapping sử dụng Ultralytics YOLOv8 🚀

VisionEye Object Mapping là gì?

Ultralytics YOLOv8 VisionEye cung cấp khả năng cho máy tính xác định và xác định chính xác các đối tượng, mô phỏng độ chính xác quan sát của mắt người. Chức năng này cho phép máy tính phân biệt và tập trung vào các đối tượng cụ thể, giống như cách mắt người quan sát chi tiết từ một quan điểm cụ thể.

Mẫu

Tầm nhìnChế độ xem mắt VisionEye View với tính năng theo dõi đối tượng VisionEye View với tính toán khoảng cách
VisionEye View Object Mapping sử dụng Ultralytics YOLOv8 VisionEye View Object Mapping với Object Tracking bằng cách sử dụng Ultralytics YOLOv8 VisionEye View với Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8
VisionEye View Object Mapping sử dụng Ultralytics YOLOv8 VisionEye View Object Mapping với Object Tracking bằng cách sử dụng Ultralytics YOLOv8 VisionEye View với Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLOv8

VisionEye Object Mapping sử dụng 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 Lập luận

Tên Kiểu Mặc định Sự miêu tả
color tuple (235, 219, 11) Màu trung tâm đường và đối tượng
pin_color tuple (255, 0, 255) VisionEye xác định màu sắc

Ghi

Đối với bất kỳ câu hỏi nào, vui lòng gửi câu hỏi của bạn trong Ultralytics Phần vấn đề hoặc phần thảo luận được đề cập bên dưới.

FAQ

Làm cách nào để bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLOv8?

Để bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLOv8, trước tiên, bạn sẽ cần cài đặt Ultralytics YOLO Gói qua pip. Sau đó, bạn có thể sử dụng mã mẫu được cung cấp trong tài liệu để thiết lập phát hiện đối tượng với VisionEye. Dưới đây là một ví dụ đơn giản để giúp bạn bắt đầu:

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

Các tính năng chính của khả năng theo dõi đối tượng của VisionEye bằng cách sử dụng là gì Ultralytics YOLOv8?

Theo dõi đối tượng của VisionEye với Ultralytics YOLOv8 Cho phép người dùng theo dõi chuyển động của các đối tượng trong khung hình. Các tính năng chính bao gồm:

  1. Theo dõi đối tượng thời gian thực: Theo kịp các đối tượng khi chúng di chuyển.
  2. Nhận dạng đối tượng: Sử dụng YOLOv8của các thuật toán phát hiện mạnh mẽ.
  3. Tính toán khoảng cách: Tính toán khoảng cách giữa các đối tượng và các điểm được chỉ định.
  4. Chú thích và Trực quan hóa: Cung cấp các điểm đánh dấu trực quan cho các đối tượng được theo dõi.

Dưới đây là một đoạn mã ngắn gọn thể hiện theo dõi với 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()

Để có hướng dẫn toàn diện, hãy truy cập Bản đồ đối tượng VisionEye với Theo dõi đối tượng.

Làm thế nào tôi có thể tính toán khoảng cách với VisionEye YOLOv8 mẫu?

Tính toán khoảng cách với VisionEye và Ultralytics YOLOv8 liên quan đến việc xác định khoảng cách của các đối tượng được phát hiện từ một điểm cụ thể trong khung. Nó tăng cường khả năng phân tích không gian, hữu ích trong các ứng dụng như lái xe tự động và giám sát.

Dưới đây là một ví dụ đơn giản:

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

Để được hướng dẫn chi tiết, hãy tham khảo VisionEye với Tính toán Khoảng cách.

Tại sao tôi nên sử dụng Ultralytics YOLOv8 Để lập bản đồ và theo dõi đối tượng?

Ultralytics YOLOv8 nổi tiếng với tốc độ, độ chính xác và dễ tích hợp, khiến nó trở thành lựa chọn hàng đầu để lập bản đồ và theo dõi đối tượng. Những ưu điểm chính bao gồm:

  1. Hiệu suất hiện đại: Mang lại độ chính xác cao trong việc phát hiện đối tượng theo thời gian thực.
  2. Tính linh hoạt: Hỗ trợ các tác vụ khác nhau như phát hiện, theo dõi và tính toán khoảng cách.
  3. Cộng đồng và Hỗ trợ: Tài liệu mở rộng và cộng đồng GitHub đang hoạt động để khắc phục sự cố và cải tiến.
  4. Dễ sử dụng: API trực quan đơn giản hóa các tác vụ phức tạp, cho phép triển khai và lặp lại nhanh chóng.

Để biết thêm thông tin về các ứng dụng và lợi ích, hãy xem Ultralytics YOLOv8 tài liệu.

Làm cách nào để tích hợp VisionEye với các công cụ học máy khác như Comet hoặc ClearML?

Ultralytics YOLOv8 có thể tích hợp liền mạch với các công cụ học máy khác nhau như Comet và ClearML, tăng cường theo dõi thử nghiệm, cộng tác và khả năng tái tạo. Làm theo hướng dẫn chi tiết về Cách sử dụng YOLOv5 với CometTích hợp YOLOv8 với ClearML để bắt đầu.

Để biết thêm các ví dụ về khám phá và tích hợp, hãy kiểm tra Ultralytics Hướng dẫn tích hợp.



Đã tạo 2023-12-18, Cập nhật 2024-07-05
Tác giả: glenn-jocher (13), IvorZhu331 (1), RizwanMunawar (1)

Ý kiến