Meet YOLO26: next-gen vision AI.

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à quá 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 Ultralytics YOLO26, tọa độ trung 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 minh họa#

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

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

  • Độ chính xác Precision trong định vị: Nâng cao khả năng xác định vị trí 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 hiện trường: Cải thiện khả năng nhận diện cảnh 3D để 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 các hệ thống phát hiện nguy cơ va chạm tiềm ẩn bằng cách giám sát khoảng cách giữa các đối tượng đang di chuyển.
  • Phân tích không gian: Hỗ trợ phân tích 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 khoảng cách.
  • Sử dụng 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 là một ướ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, vốn 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

Link to this sectionCác tham số của DistanceCalculation()#

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

Tham sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp model Ultralytics YOLO.

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

Tham 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.1Thiết lập 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ả.
ioufloat0.7Thiết lập ngưỡng Intersection over Union (IoU) để lọc các phát hiện bị chồng chéo.
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 hiển thị kết quả theo dõi, cung cấp đầu ra trực quan của các đối tượng đang được theo dõi.
devicestrNoneChỉ định thiết bị để 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:

Tham sốLoạiMặc địnhMô tả
showboolFalseNếu là True, hiển thị các hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để nhận phản hồi hình ảnh tức thì trong quá trình phát triển hoặc kiểm thử.
line_widthint or NoneNoneChỉ định độ dày đường viền của bounding box. Nếu là None, độ dày sẽ tự động được đ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_confboolTrueHiển thị điểm tin cậy cho mỗi phát hiện bên cạnh nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model cho mỗi phát hiện.
show_labelsboolTrueHiển thị nhãn cho mỗi phát hiện trong đầu ra trực quan. Cung cấp khả năng hiểu ngay lập tức về 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 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ọa độ trung tâm (điểm giữa) của các bounding box đã chọn
  2. Tính toán khoảng cách Euclidean giữa các tọa độ trung tâm này theo đơn vị pixel
  3. 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 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.

Link to this sectionCác ứng dụng#

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

  • Phân tích bán lẻ: Đo lường sự 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: 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í then chốt 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à 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

Link to this sectionCâu hỏi thường gặp#

Link to this sectionLàm thế nào để tính toán khoảng cách giữa các đối tượng sử dụng Ultralytics YOLO26?#

Để tính toán khoảng cách giữa các đối tượng sử dụng Ultralytics YOLO26, bạn cần xác định các tâm của bounding box của các đối tượng đã phát hiện. Quá 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 trong định vị: Cung cấp đị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 hiện trường: Tăng cường khả năng nhận diện 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 tính toán ngay lập tức, 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 khác của YOLO26 như object trackingspeed estimation.

Link to this sectionTô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 các luồng video thời gian thực với Ultralytics YOLO26. Quá trình bao gồm việc chụp khung hình video bằng OpenCV, chạy object detection với YOLO26, và sử dụng lớp DistanceCalculation để tính khoảng cách giữa các đối tượng trong các khung hình liên tiếp. Để có cách triển khai chi tiết, hãy xem ví dụ về luồng video.

Link to this sectionLàm thế nào để xóa các điểm đã vẽ trong khi tính toán khoảng cách sử dụ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ể 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ú 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 sẽ 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 tham số của DistanceCalculation.

Bình luận