Bỏ qua 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ìn của VisionEye VisionEye View Với 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 YOLO11 VisionEye View Object Mapping với Object Tracking sử dụng Ultralytics YOLO11 VisionEye View với tính toán khoảng cách sử dụng Ultralytics YOLO11
VisionEye View Object Mapping sử dụng Ultralytics YOLO11 VisionEye View Object Mapping với Object Tracking sử dụng Ultralytics YOLO11 VisionEye View với tính toán khoảng cách sử dụng Ultralytics YOLO11

VisionEye Object Mapping 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ên Kiểu Mặc định Sự miêu tả
color tuple (235, 219, 11) Màu của đường thẳng và tâm đối tượng
pin_color tuple (255, 0, 255) VisionEye màu sắc chính xác

Ghi chú

Nếu có bất kỳ thắc mắc nào, bạn có thể thoải mái đăng câu hỏi của mình trong Phần vấn đề của Ultralytics hoặc phần thảo luận bên dưới.

CÂU HỎI THƯỜNG GẶP

Làm thế nào để tôi bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLO11 ?

Để bắt đầu sử dụng VisionEye Object Mapping với Ultralytics YOLO11 , đầu 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 ?

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 đối tượng 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 theo thời gian thực : Theo dõi các đối tượng khi chúng di chuyển.
  2. Nhận dạng đối tượng : Sử dụng YOLO11 Thuật toán phát hiện mạnh mẽ của.
  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 dấu hiệu trực quan cho các đối tượng được theo dõi.

Sau đây là đoạn mã ngắn minh họa cách theo dõi bằng 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 VisionEye Object Mapping với Object Tracking .

Làm thế nào tôi có thể tính toán khoảng cách bằng VisionEye? YOLO11 người mẫu?

Tính toán khoảng cách với VisionEye và Ultralytics YOLO11 bao gồm việc xác định khoảng cách của các vật thể đượ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.

Sau đâ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()

Để biết 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 tiên tiến : Mang lại độ chính xác cao trong việc phát hiện vật thể theo thời gian thực.
  2. Tính linh hoạt : Hỗ trợ nhiều 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 tích cực hỗ trợ 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 xem Hướng dẫn tích hợp Ultralytics của chúng tôi.

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

Bình luận