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

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

VisionEye Object Mapping là gì?

Ultralytics YOLO11 VisionEye cung cấp khả năng cho máy tính xác định và định vị 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 các chi tiết từ một góc nhìn cụ thể.

Mẫu

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

Lập bản đồ đối tượng VisionEye sử dụng 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 Lập luận

TênKiểuMặc địnhSự miêu tả
colortuple(235, 219, 11)Màu trung tâm đường và đối tượng
pin_colortuple(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 thế nào để tôi bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLO11 là gì?

Để bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLO11, trước tiên, bạn sẽ cần phải 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. Sau đây là một ví dụ đơn giản để bạn bắt đầu:

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

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

Theo dõi đối tượng của VisionEye với Ultralytics YOLO11 cho phép người dùng theo dõi chuyển động của các vật thể trong một khung hình video. 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 thuật toán phát hiện mạnh mẽ của YOLO11.
  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("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()

Để 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 bằng mô hình YOLO11 của VisionEye?

Tính toán khoảng cách với VisionEye và Ultralytics YOLO11 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("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()

Để đượ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 YOLO11 để lập bản đồ và theo dõi đối tượng?

Ultralytics YOLO11 nổi tiếng về tốc độ, độ chính xác và khả năng tích hợp dễ dàng, 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 lợi thế 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 tài liệu Ultralytics YOLO11 .

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

Ultralytics YOLO11 có thể tích hợp liền mạch với nhiều 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. Thực hiện theo hướng dẫn chi tiết về cách sử dụng YOLOv5 với Comettích hợp YOLO11 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.

📅 Được tạo cách đây 11 tháng ✏️ Đã cập nhật cách đây 1 tháng

Ý kiến