Tính toán khoảng cách bằ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 của Ultralytics YOLO11 , trọng tâm hộp giới hạn được sử dụng để tính toán khoảng cách cho các hộp giới hạn được người dùng đánh dấu.
Đồng hồ: Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLO11
Hình ảnh
Tính toán khoảng cách bằng cách sử dụng Ultralytics YOLO11 |
---|
![]() |
Ưu điểm của tính toán khoảng cách?
- Độ chính xác định vị: Nâng cao độ chính xác trong định vị 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 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ư xe tự hành 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 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 bất kỳ hai hộp giới hạn nào bằng cách nhấp chuột trái để tính toán khoảng cách
- Nhấp chuột phải sẽ xóa tất cả các điểm đã vẽ
- Có thể sử dụng chuột trái để vẽ đ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 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="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()
Lập luận
Đây là một bảng với DistanceCalculation
lập luận:
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
model |
str |
None |
Đường dẫn đến Ultralytics YOLO Tệp mẫu. |
Bạn cũng có thể sử dụng nhiều track
các lập luận trong DistanceCalculation
giải pháp.
Lý lẽ | Kiểu | Mặc định | Sự miêu 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 việ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 Giao điểm trên Liên hợp (IoU) để lọc các phát hiện chồng chéo. |
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 hình ảnh trực quan về các đối tượng được theo dõi. |
device |
str |
None |
Chỉ định thiết bị để 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 cụ thể GPU hoặc các thiết bị tính toán khác để thực hiện mô hình. |
Ngoài ra, các đối số trực quan sau đây cũng khả dụng:
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
show |
bool |
False |
Nếu như True , hiển thị 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 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 của đường đượ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õ nét hơn. |
Chi tiết triển khai
Các DistanceCalculation
lớp học hoạt động bằng cách theo dõi các đối tượng trên các khung video và tính toán khoảng cách Euclid giữa các 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:
- Trích xuất các tâm điểm (điểm trung tâm) của các hộp giới hạn đã chọn
- Tính toán khoảng cách Euclid giữa các tâm này theo pixel
- Hiển thị khoảng cách trên khung với đường kết nối giữa các đối tượng
Việc thực hiện sử dụng mouse_event_for_distance
phương pháp xử lý 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. process
phương pháp này xử lý 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 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ố trí cửa hàng
- An toàn công nghiệp: Theo dõi 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 tình trạng bám đuôi xe khác
- Phân tích thể thao: Tính toán khoảng cách giữa người chơi, quả bóng và các vị trí quan trọng trên sân
- Chăm sóc sức khỏe: Đảm bảo khoảng cách thích hợp ở khu vực chờ và theo dõi chuyển động 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 thế nào để tính toán khoảng cách giữa các đối tượng bằng cách sử dụ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 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
mô-đun và sử dụng đầu ra theo dõi của mô hình để tính toán khoảng cách.
Những lợi thế của việc sử dụng tính toán khoảng cách với Ultralytics YOLO11 ?
Sử dụng tính toán khoảng cách với Ultralytics YOLO11 cung cấp một số lợi thế:
- Độ 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 nâng cao hiểu biết về ngữ cảnh.
- Hiểu biết về bối cảnh: Nâng cao khả năng hiểu biết về bối cảnh 3D, hỗ trợ cải thiện khả năng ra quyết định 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 ngay lập tức, 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 YOLO11 các giải pháp như theo dõi đối tượng và ước tính tốc độ .
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 YOLO11 ?
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 YOLO11 . Quá trình này bao gồm việc chụp các khung hình video bằng cách sử dụng MởCV, đang chạy YOLO11 phát hiện đối tượngvà sử dụng DistanceCalculation
lớp để tính toán khoảng cách giữa các đối tượng trong các khung 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 được vẽ trong quá trình tính toán khoảng cách bằng cách sử dụng Ultralytics YOLO11 ?
Để xóa các điểm được vẽ trong quá trình tính toán khoảng cách bằng Ultralytics YOLO11 , 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ụ tính toán khoảng cách .
Những đối số chính để khởi tạo lớp DistanceCalculation trong Ultralytics YOLO11 ?
Các đối số chính để khởi tạo DistanceCalculation
lớp học trong Ultralytics YOLO11 bao gồm:
model
: Đường dẫn đến YOLO11 tập tin mô hình.tracker
: Thuật toán theo dõi cần sử dụng (mặc định là 'botsort.yaml').conf
: Ngưỡng tin cậy để phát hiện.show
: Cờ để hiển thị đầu ra.
Để biết danh sách đầy đủ và các giá trị mặc định, hãy xem các đối số của DistanceCalculation .