Chuyển đến nội dung

Tính Toán Khoảng Cách sử dụng Ultralytics YOLO11

Tính toán khoảng cách là gì?

Đo khoảng cách giữa hai đối tượng được gọi là tính toán khoảng cách trong một không gian xác định. Trong trường hợp Ultralytics YOLO11, tâm của khung giới hạn được sử dụng để tính khoảng cách cho các khung giới hạn được người dùng đánh dấu.



Xem: Tính Toán Khoảng Cách sử dụng Ultralytics YOLO11

Hình ảnh trực quan

Tính Toán Khoảng Cách sử dụng Ultralytics YOLO11
Tính toán khoảng cách Ultralytics YOLO11

Ưu điểm của Tính toán Khoảng cách?

  • Độ Chính Xác Định Vị: Nâng cao khả năng định vị không gian chính xác trong các tác vụ thị giác máy tính.
  • Ước tính kích thước: Cho phép ước tính kích thước đối tượng để hiểu rõ hơn về ngữ cảnh.
  • Hiểu cảnh: Cải thiện khả năng hiểu cảnh 3D để đưa ra quyết định tốt hơn trong các ứng dụng như xe tự hành và hệ thống giám sát.
  • Tránh va chạm: Cho phép các hệ thống phát hiện va chạm tiềm ẩn bằng cách theo dõi khoảng cách giữa các vật thể chuyển động.
  • Phân tích không gian: Tạo điều kiện thuận lợi cho việc phân tích các mối quan hệ và tương tác của đối tượng trong môi trường được giám sát.
Tính toán khoảng cách
  • Nhấp vào hai hộp giới hạn bất kỳ bằng chuột trái để tính khoảng cách
  • Nhấp chuột phải sẽ xóa tất cả các điểm đã vẽ
  • Nhấp chuột trái có thể được sử dụng để vẽ các điểm
Khoảng Cách là Ước Tính
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.

Tính toán khoảng cách bằng Ultralytics YOLO

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo11n.pt",  # path to the YOLO11 model file.
    show=True,  # display the output
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() Các đối số

Đây là bảng với DistanceCalculation các đối số:

Đối số Loại Mặc định Mô tả
model str None Đường dẫn đến Tệp Mô hình Ultralytics YOLO.

Bạn cũng có thể sử dụng nhiều track các đối số trong DistanceCalculation giải pháp.

Đối số Loại Mặc định Mô tả
tracker str 'botsort.yaml' Chỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conf float 0.3 Đặt ngưỡng tin cậy cho các phát hiện; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các kết quả dương tính giả.
iou float 0.5 Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp.
classes list None Lọc kết quả theo chỉ số lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
verbose bool True Kiểm soát việc hiển thị kết quả theo dõi, cung cấp đầu ra trực quan về các đối tượng được theo dõi.
device str None Chỉ định thiết bị cho suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình.

Hơn nữa, các đối số trực quan hóa sau đây có sẵn để sử dụng:

Đối số Loại Mặc định Mô tả
show bool False Nếu True, hiển thị hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để có phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc thử nghiệm.
line_width None or int None Chỉ định độ rộng đường của hộp giới hạn. Nếu None, độ rộng đường kẻ được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp tùy chỉnh trực quan để rõ ràng hơn.
show_conf bool True Hiển thị điểm tin cậy cho mỗi lần phát hiện cùng với nhãn. Cung cấp cái nhìn sâu sắc về độ chắc chắn của mô hình cho mỗi lần phát hiện.
show_labels bool True Hiển thị nhãn cho mỗi lần phát hiện trong đầu ra trực quan. Cung cấp sự hiểu biết ngay lập tức về các đối tượng được phát hiện.

Chi tiết triển khai

Hàm DistanceCalculation class hoạt động bằng cách theo dõi các đối tượng trên các khung hình video và tính toán khoảng cách Euclidean giữa các trọng tâm của các hộp giới hạn đã chọn. Khi bạn nhấp vào hai đối tượng, giải pháp:

  1. Trích xuất các centroids (điểm trung tâm) của các bounding box được chọn
  2. Tính toán khoảng cách Euclid giữa các trọng tâm này theo pixel
  3. Hiển thị khoảng cách trên khung hình với một đường kết nối giữa các đối tượng

Việc triển khai sử dụng mouse_event_for_distance method để xử lý các tương tác chuột, cho phép người dùng chọn đối tượng và xóa các lựa chọn khi cần. Các process method xử lý việc xử lý từng khung hình, theo dõi các đối tượng và tính toán khoảng cách.

Các ứng dụng

Tính toán khoảng cách với YOLO11 có nhiều ứng dụng thực tế:

  • Phân tích bán lẻ: Đo lường mức độ gần gũi của khách hàng với sản phẩm và phân tích hiệu quả bố cục cửa hàng.
  • An toàn công nghiệp: Giám sát khoảng cách an toàn giữa công nhân và máy móc
  • Quản lý giao thông: Phân tích khoảng cách giữa các xe và phát hiện việc bám đuôi xe phía trước
  • Phân tích thể thao: Tính toán khoảng cách giữa các cầu thủ, bóng và các vị trí quan trọng trên sân
  • Y tế: Đảm bảo khoảng cách thích hợp trong khu vực chờ và theo dõi sự di chuyển của bệnh nhân
  • Robot: Cho phép robot duy trì khoảng cách thích hợp với chướng ngại vật và con người

Câu hỏi thường gặp

Làm cách nào để tính khoảng cách giữa các đối tượng bằng Ultralytics YOLO11?

Để tính khoảng cách giữa các đối tượng bằng cách sử dụng Ultralytics YOLO11, bạn cần xác định trọng tâm hộp giới hạn của các đối tượng được phát hiện. Quá trình này bao gồm việc khởi tạo DistanceCalculation lớp từ Ultralytics' solutions module và sử dụng đầu ra theo dõi của mô hình để tính toán khoảng cách.

Những ưu điểm của việc sử dụng tính toán khoảng cách với Ultralytics YOLO11 là gì?

Sử dụng tính toán khoảng cách với Ultralytics YOLO11 mang lại một số lợi thế:

  • Độ Chính Xác Định Vị: Cung cấp khả năng định vị không gian chính xác cho các đối tượng.
  • Ước tính kích thước: Giúp ước tính kích thước vật lý, đóng góp vào việc hiểu rõ hơn về ngữ cảnh.
  • Hiểu cảnh: Nâng cao khả năng hiểu cảnh 3D, hỗ trợ cải thiện việc ra quyết định trong các ứng dụng như lái xe tự động và giám sát.
  • Xử lý theo thời gian thực: Thực hiện các phép tính tức thì, phù hợp cho phân tích video trực tiếp.
  • Khả năng tích hợp: Hoạt động liền mạch với các giải pháp YOLO11 khác như theo dõi đối tượngước tính tốc độ.

Tôi có thể thực hiện tính toán khoảng cách trong các luồng video thời gian thực bằng Ultralytics YOLO11 không?

Có, bạn có thể thực hiện tính toán khoảng cách trong các luồng video thời gian thực với Ultralytics YOLO11. Quá trình này bao gồm chụp các khung hình video bằng OpenCV, đang chạy YOLO11 phát hiện đối tượng, và sử dụng DistanceCalculation lớp để tính khoảng cách giữa các đối tượng trong các khung hình liên tiếp. Để triển khai chi tiết, hãy xem Ví dụ về luồng video.

Làm cách nào để xóa các điểm được vẽ trong quá trình tính khoảng cách bằng Ultralytics YOLO11?

Để xóa các điểm được vẽ trong khi tính khoảng cách với Ultralytics YOLO11, bạn có thể sử dụng chuột phải. Thao tác này sẽ xóa tất cả các điểm bạn đã vẽ. Để biết thêm chi tiết, hãy tham khảo phần ghi chú trong ví dụ tính khoảng cách.

Các đối số chính để khởi tạo lớp DistanceCalculation trong Ultralytics YOLO11 là gì?

Các đối số chính để khởi tạo DistanceCalculation lớp trong Ultralytics YOLO11 bao gồm:

  • model: Đường dẫn đến tệp mô hình YOLO11.
  • tracker: Thuật toán theo dõi để sử dụng (mặc định là 'botsort.yaml').
  • conf: Ngưỡng tin cậy cho các phát hiện.
  • show: Cờ để hiển thị đầu ra.

Để có danh sách đầy đủ và các giá trị mặc định, hãy xem các đối số của DistanceCalculation.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 4 tháng trước

Bình luận