Tính khoảng cách bằng Ultralytics YOLO26#
Tính khoảng cách là gì?#
Tính khoảng cách là quá trình đo khoảng cách giữa hai đối tượng được phát hiện trong một hình ảnh hoặc khung hình video. Với Ultralytics YOLO26, tâm của bounding box được sử dụng để tính khoảng cách giữa các bounding box được người dùng đánh dấu.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Hình ảnh minh họa#
| Tính khoảng cách bằng Ultralytics YOLO26 |
|---|
![]() |
Ưu điểm của việc tính khoảng cách#
- Độ chính xác định vị: Nâng cao độ chính xác của việc xác định vị trí không gian 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ư phương tiện 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 nguy cơ va chạm bằng cách giám sát khoảng cách giữa các đối tượng đang chuyển động.
- Phân tích không gian: Hỗ trợ 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 khoảng cách
- Nhấp chuột trái vào hai bounding box bất kỳ để tính khoảng cách.
- Sử dụng nút chuột phải để xóa tất cả các điểm đã vẽ.
Khoảng cách chỉ là giá trị ước tính
Khoảng cách là một ướ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, vốn thiếu thông tin chiều sâu.
Tính khoảng cách bằng YOLO26#
Giải pháp DistanceCalculation theo dõi các đối tượng qua các khung hình và đo khoảng cách Euclid, tính bằng pixel, giữa tâm của hai bounding box bất kỳ mà bạn chọn bằng chuột. Chạy ví dụ bên dưới, sau đó nhấp chuột trái vào hai đối tượng để vẽ đường nối và xem khoảng cách; nhấp chuột phải để xóa lựa chọn.
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 windowsCác argument của DistanceCalculation()#
Dưới đây là bảng các tham số của DistanceCalculation:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến file model Ultralytics YOLO. |
line_width | int | 2 | Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ. |
verbose | bool | True | Bật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng. |
Bạn cũng có thể sử dụng nhiều đối số khác nhau của track trong giải pháp DistanceCalculation.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Thiết lập ngưỡng độ tin cậy cho các detection; 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 false positive. |
iou | float | 0.7 | Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn. |
classes | list | None | Lọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định. |
device | str | None | Chỉ định thiết bị dùng cho inference (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 model. |
imgsz | int or tuple | 640 | Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model. |
max_det | int | 300 | Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc. |
quantize | int or str | None | Độ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ. |
Ngoài ra, các đối số trực quan hóa sau đây cũng khả dụng:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị image hoặc video đã được annotate trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình development hoặc testing. |
show_conf | bool | True | Hiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection. |
show_labels | bool | True | Hiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện. |
Chi tiết triển khai#
Class 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 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ẽ:
- Trích xuất tâm (các điểm trung tâm) của những bounding box được chọn
- Tính khoảng cách Euclid giữa các tâm này theo đơn vị pixel
- Hiển thị khoảng cách trên khung hình cùng với một đường nối giữa các đối tượng
Phần triển khai sử dụng method mouse_event_for_distance để xử lý 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. Method process xử lý việc phân tích từng khung hình, theo dõi đối tượng và tính khoảng cách.
Ứng dụng#
Tính khoảng cách bằng YOLO26 có nhiều ứng dụng thực tế:
- Phân tích bán lẻ: Đo khoảng cách của khách hàng đến sản phẩm và phân tích mức độ hiệu quả của 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 người lao động 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 khoảng cách giữa các cầu thủ, quả bóng và những vị trí quan trọng trên sân
- Chăm sóc sức khỏe: Đảm bảo khoảng cách phù hợp trong khu vực chờ và giám sát chuyển động của bệnh nhân
- Robotics: Cho phép robot duy trì khoảng cách phù hợp với chướng ngại vật và con người
FAQ#
Để tính 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 class
DistanceCalculationtừ modulesolutionscủa Ultralytics và sử dụng kết quả tracking của model để tính khoảng cách.Tính khoảng cách bằng 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: Hỗ trợ ước tính kích thước vật lý, góp phần cải thiện khả năng hiểu ngữ cảnh.
- Hiểu cảnh: Nâng cao khả năng hiểu cảnh 3D, hỗ trợ đưa ra quyết định tốt hơn trong các ứng dụng như lái xe tự hành và giám sát.
- Xử lý theo thời gian thực: Thực hiện các phép tính ngay trong lúc chạy, phù hợp để 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ư tracking đối tượng và ước tính tốc độ.
Có, bạn có thể tính khoảng cách trong các luồng video theo thời gian thực bằng Ultralytics YOLO26. Quy trình này bao gồm việc ghi lại các khung hình video bằng OpenCV, thực hiện phát hiện đối tượng bằng YOLO26 và sử dụng class
DistanceCalculationđể tính khoảng cách giữa các đối tượng trong những khung hình liên tiếp. Để xem triển khai chi tiết, hãy tham khảo ví dụ về luồng video.Để xóa các điểm đã vẽ trong quá trình tính khoảng cách bằng 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ú bên dưới ví dụ về tính khoảng cách.
Các đối số chính để khởi tạo class
DistanceCalculationtrong Ultralytics YOLO26 bao gồm:model: Đường dẫn đến file model YOLO26.tracker: Thuật toán tracking cần sử dụng (các Solutions mặc định dùngbotsort.yaml).conf: Ngưỡng độ tin cậy cho các detection.show: Flag hiển thị output.
Để xem danh sách đầy đủ và các giá trị mặc định, hãy tham khảo các đối số của DistanceCalculation.
