Link to this sectionTính toán khoảng cách sử dụng Ultralytics YOLO26#
Link to this sectionTính toán khoảng cách là gì?#
Tính toán khoảng cách là quy trình đo lường không gian giữa hai đối tượng được phát hiện trong một khung hình ảnh hoặc video. Trong trường hợp của Ultralytics YOLO26, trọng 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 🚀
Link to this sectionHình ảnh trực quan#
| Tính toán khoảng cách sử dụng Ultralytics YOLO26 |
|---|
![]() |
Link to this sectionƯu điểm của tính toán khoảng cách#
- Precision định vị: Tăng cường khả năng định vị không gian chính xác 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 ngữ cảnh tốt hơn.
- Hiểu bối cảnh: Cải thiện khả năng hiểu bối 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 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 chuột trái vào bất kỳ hai bounding box nào để 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ỳ vị trí nào trong khung hình để thêm các điểm mới.
Khoảng cách chỉ là giá trị ước tính
Khoảng cách là giá trị ướ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 về độ sâu.
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 windowsLink to this sectionCác tham số của DistanceCalculation()#
Dưới đây là bảng các tham số của DistanceCalculation:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
Bạn cũng có thể sử dụng các tham số track khác nhau trong giải pháp DistanceCalculation.
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Chỉ định thuật toán tracking 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.1 | Thiết lập ngưỡng tin cậy cho các phát hiện; các giá trị thấp hơn cho phép nhiều đối tượng được theo dõi hơn nhưng có thể bao gồm các kết quả dương tính giả. |
iou | float | 0.7 | Thiết lập ngưỡng Intersection over Union (IoU) để lọc các phát hiện chồ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 đã 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 của các đối tượng được theo dõi. |
device | str | None | Chỉ đị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 để thực thi model. |
Hơn nữa, các tham số trực quan hóa sau đây cũng có sẵn:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị các hình ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích cho phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử. |
line_width | int or None | None | Chỉ định độ dày đường của bounding box. Nếu None, độ dày đường được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp khả năng tùy chỉnh trực quan để rõ ràng hơn. |
show_conf | bool | True | Hiển thị điểm số tin cậy (confidence score) cho mỗi phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model đối với từng phát hiện. |
show_labels | bool | True | Hiển thị nhãn cho mỗi phát hiện trong đầu ra hình ảnh. Cung cấp khả năng nhận biết tức thì các đối tượng được phát hiện. |
Link to this sectionChi 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 Euclidean giữa các trọng tâm của các bounding box đã chọn. Khi bạn nhấp vào hai đối tượng, giải pháp sẽ:
- Trích xuất các trọng tâm (điểm trung tâm) của các bounding box đã chọn
- Tính toán khoảng cách Euclidean giữa các trọng tâm này theo đơn vị pixel
- Hiển thị khoảng cách trên khung hình với 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 các lựa chọn khi cần. Phương thức process xử lý việc xử lý theo từng khung hình, theo dõi đối tượng và tính toán khoảng cách.
Link to this sectionỨ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 tới 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
- 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 sự di chuyển của bệnh nhân
- Robot: Cho phép robot duy trì khoảng cách phù hợp với các chướng ngại vật và con người
Link to this sectionCâu hỏi thường gặp#
Link to this sectionLàm thế nào để tôi 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 các trọng tâm 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 các đầu ra theo dõi của model để tính toán khoảng cách.
Link to this sectionƯ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 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ý, 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 bối 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ự động và giám sát.
- Xử lý thời gian thực: Thực hiện các phép tính tức thời, làm cho nó 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ư object tracking và speed estimation.
Link to this sectionTô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 với Ultralytics YOLO26 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 YOLO26. Quy trình bao gồm việc thu nhận các khung hình video bằng OpenCV, chạy YOLO26 object detection, 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 chi tiết triển khai, hãy xem ví dụ về luồng video.
Link to this sectionLàm thế nào để tôi xóa các điểm đã vẽ trong khi tính toán khoảng cách bằng Ultralytics YOLO26?#
Để xóa các điểm đã vẽ trong khi tính toán khoảng cách với Ultralytics YOLO26, bạn có thể sử dụng nhấp chuột phải. Hành động 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 toán khoảng cách.
Link to this sectionCá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 tệp 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 (confidence threshold) 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 tham số của DistanceCalculation.
