Tính toán khoảng cách sử dụng Ultralytics YOLO26

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

Đo lường 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 của Ultralytics YOLO26, tâm của bounding box được sử dụng để tính toán khoảng cách cho các bounding box được người dùng chọn.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Hình ảnh minh họa

Tính toán khoảng cách sử dụng Ultralytics YOLO26
Tính toán khoảng cách bằng Ultralytics YOLO26

Ưu điểm của tính toán khoảng cách

  • Độ chính xác Precision của định vị: Tăng cường độ chính xác khi xác định vị trí không gian trong các tác vụ computer vision.
  • Ướ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 bối 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ư autonomous vehicles và hệ thống giám sát.
  • Tránh va chạm: Cho phép hệ thống phát hiện các va chạm tiềm ẩn bằng cách theo dõi khoảng cách giữa các đối tượng đang di chuyển.
  • Phân tích không gian: Tạo điều kiện phân tích mối quan hệ và tương tác giữa các đố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 bất kỳ hai bounding box nào bằng nút chuột trái để tính toán khoảng cách.
  • Sử dụng nút chuột phải để xóa tất cả các điểm đã vẽ.
  • Nhấp chuột trái vào bất kỳ đâu trong khung hình để thêm các điểm mới.
Khoảng cách chỉ mang tính ước tính

Khoảng cách chỉ là ước tính và có thể không hoàn toàn chính xác vì nó được tính toán bằng dữ liệu 2D, thiếu thông tin về chiều sâu.

Tính toán khoảng cách sử dụ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="yolo26n.pt",  # path to the YOLO26 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

Các tham số của DistanceCalculation()

Dưới đây là bảng các tham số của DistanceCalculation:

Đối sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến một file model Ultralytics YOLO.

Bạn cũng có thể tận dụng nhiều tham số track khác nhau trong giải pháp DistanceCalculation.

Đối sốLoạiMặc địnhMô tả
trackerstr'botsort.yaml'Chỉ định thuật toán theo dõi cần sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conffloat0.1Đặt ngưỡng tin cậy cho các phát hiện; các 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ác kết quả dương tính giả.
ioufloat0.7Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện chồng lấp.
classeslistNoneLọ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.
verboseboolTrueKiểm soát việc hiển thị các kết quả theo dõi, cung cấp đầu ra trực quan của các đối tượng được theo dõi.
devicestrNoneChỉ định thiết bị thực hiện suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để chạy model.

Hơn nữa, các tham số trực quan hóa sau đây cũng khả dụng:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu True, hiển thị các ảnh hoặc video đã được 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_widthint or NoneNoneChỉ định độ dày đường kẻ của khung bao. Nếu là None, độ dày đường kẻ sẽ tự động được điều chỉnh dựa trên kích thước ảnh. Cung cấp khả năng tùy chỉnh trực quan để đảm bảo độ rõ nét.
show_confboolTrueHiển thị điểm tin cậy cho mỗi kết quả phát hiện bên cạnh nhãn. Cung cấp cái nhìn sâu sắc về độ chắc chắn của model cho mỗi kết quả phát hiện.
show_labelsboolTrueHiển thị nhãn cho mỗi kết quả phát hiện trong đầu ra trực quan. Cung cấp 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

Lớp DistanceCalculation hoạt động bằng cách theo dõi các đối tượng qua các khung hình video và tính toán khoảng cách Euclid giữa tâm của các bounding box được chọn. Khi bạn nhấp vào hai đối tượng, giải pháp sẽ:

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

Việc triển khai sử dụng phương thức mouse_event_for_distance để 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 lựa chọn khi cần. Phương thức process xử lý việc tính toán theo từng khung hình, theo dõi đối tượng và tính toán khoảng cách.

Ứng dụng

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

  • Phân tích bán lẻ: Đo lường khoảng cách của khách hàng đến sản phẩm và phân tích hiệu quả bố trí 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 phương tiện và phát hiện hành vi bám đuôi
  • Phân tích thể thao: Tính toán khoảng cách giữa các cầu thủ, quả bóng và các vị trí chính trên sân
  • Y tế: Đảm bảo giãn cách phù hợp trong các khu vực chờ và theo dõi chuyển động của bệnh nhân
  • Robotics: Cho phép robot duy trì khoảng cách thích hợp với các chướng ngại vật và con người

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

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

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

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

Sử dụng tính toán khoảng cách với Ultralytics YOLO26 mang lại một số ưu điểm:

  • Độ chính xác định vị: Cung cấp vị trí 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ý, góp phần hiểu rõ hơn về ngữ cảnh.
  • Hiểu bối cảnh: Tăng cường khả năng hiểu cảnh 3D, hỗ trợ ra quyết định tốt hơn 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 YOLO26 khác như object trackingspeed estimation.

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

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

Làm thế nào để xóa các điểm đã vẽ trong quá trình tính toán khoảng cách bằng Ultralytics YOLO26?

Để xóa các điểm đã vẽ trong quá trình tính toán khoảng cách với Ultralytics YOLO26, bạn có thể nhấp 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ụ về tính toán khoảng cách.

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

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

  • model: Đường dẫn đến file model YOLO26.
  • tracker: Thuật toán theo dõi được 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ị kết quả đầu ra.

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

Bình luận