Bỏ để qua phần nội dung

Ước tính tốc độ bằng cách sử dụng Ultralytics YOLOv8 🚀

Ước tính tốc độ là gì?

Ước tính tốc độ là quá trình tính toán tốc độ di chuyển của một đối tượng trong một bối cảnh nhất định, thường được sử dụng trong các ứng dụng thị giác máy tính. Sử dụng Ultralytics YOLOv8 Giờ đây, bạn có thể tính toán tốc độ của đối tượng bằng cách sử dụng theo dõi đối tượng cùng với dữ liệu khoảng cách và thời gian, rất quan trọng đối với các nhiệm vụ như lưu lượng truy cập và giám sát. Độ chính xác của ước tính tốc độ ảnh hưởng trực tiếp đến hiệu quả và độ tin cậy của các ứng dụng khác nhau, làm cho nó trở thành một thành phần quan trọng trong sự tiến bộ của các hệ thống thông minh và quy trình ra quyết định theo thời gian thực.



Xem: Ước tính tốc độ bằng cách sử dụng Ultralytics YOLOv8

Kiểm tra blog của chúng tôi

Để biết thông tin chi tiết sâu hơn về ước tính tốc độ, hãy xem bài đăng trên blog của chúng tôi: Ultralytics YOLOv8 để ước tính tốc độ trong các dự án thị giác máy tính

Ưu điểm của ước tính tốc độ?

  • Kiểm soát giao thông hiệu quả: Ước tính tốc độ chính xác hỗ trợ quản lý lưu lượng giao thông, tăng cường an toàn và giảm tắc nghẽn trên đường.
  • Điều hướng tự động chính xác: Trong các hệ thống tự trị như xe tự lái, ước tính tốc độ đáng tin cậy đảm bảo điều hướng xe an toàn và chính xác.
  • Tăng cường an ninh giám sát: Ước tính tốc độ trong phân tích giám sát giúp xác định các hành vi bất thường hoặc các mối đe dọa tiềm ẩn, nâng cao hiệu quả của các biện pháp bảo mật.

Ứng dụng trong thế giới thực

Giao thông vận tải Giao thông vận tải
Ước tính tốc độ trên đường sử dụng Ultralytics YOLOv8 Ước tính tốc độ trên cầu bằng cách sử dụng Ultralytics YOLOv8
Ước tính tốc độ trên đường sử dụng Ultralytics YOLOv8 Ước tính tốc độ trên cầu bằng cách sử dụng Ultralytics YOLOv8

Ước tính tốc độ bằng cách sử dụng YOLOv8 Ví dụ

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
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
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
    reg_pts=line_pts,
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)

    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Tốc độ là ước tính

Tốc độ sẽ là ước tính và có thể không hoàn toàn chính xác. Ngoài ra, ước tính có thể thay đổi tùy thuộc vào GPU tốc độ.

Lập luận SpeedEstimator

Tên Kiểu Mặc định Sự miêu tả
names dict None Từ điển tên lớp.
reg_pts list [(20, 400), (1260, 400)] Danh sách các điểm khu vực để ước tính tốc độ.
view_img bool False Có hiển thị hình ảnh với chú thích hay không.
line_thickness int 2 Độ dày của các đường để vẽ hộp và bản nhạc.
region_thickness int 5 Độ dày của các đường vùng.
spdl_dist_thresh int 10 Ngưỡng khoảng cách để tính toán tốc độ.

Lập luận model.track

Tên Kiểu Mặc định Sự miêu tả
source im0 None Thư mục nguồn cho hình ảnh hoặc video
persist bool False Các rãnh liên tục giữa các khung hình
tracker str botsort.yaml Phương pháp theo dõi 'bytetrack' hoặc 'botsort'
conf float 0.3 Ngưỡng tin cậy
iou float 0.5 Ngưỡng IOU
classes list None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
verbose bool True Hiển thị kết quả theo dõi đối tượng

FAQ

Làm cách nào để ước tính tốc độ đối tượng bằng cách sử dụng Ultralytics YOLOv8?

Ước tính tốc độ đối tượng với Ultralytics YOLOv8 liên quan đến việc kết hợp các kỹ thuật phát hiện và theo dõi đối tượng. Trước tiên, bạn cần phát hiện các đối tượng trong mỗi khung hình bằng cách sử dụng YOLOv8 mẫu. Sau đó, theo dõi các đối tượng này trên các khung hình để tính toán chuyển động của chúng theo thời gian. Cuối cùng, sử dụng khoảng cách di chuyển của đối tượng giữa các khung hình và tốc độ khung hình để ước tính tốc độ của nó.

Ví dụ:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    tracks = model.track(im0, persist=True, show=False)
    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Để biết thêm chi tiết, hãy tham khảo bài đăng trên blog chính thức của chúng tôi.

Lợi ích của việc sử dụng là gì Ultralytics YOLOv8 để ước tính tốc độ trong quản lý giao thông?

Sử dụng Ultralytics YOLOv8 Đối với ước tính tốc độ cung cấp lợi thế đáng kể trong quản lý giao thông:

  • Tăng cường an toàn: Ước tính chính xác tốc độ xe để phát hiện quá tốc độ và cải thiện an toàn đường bộ.
  • Giám sát thời gian thực: Hưởng lợi từ YOLOv8Khả năng phát hiện đối tượng theo thời gian thực để giám sát lưu lượng giao thông và tắc nghẽn một cách hiệu quả.
  • Khả năng mở rộng: Triển khai mô hình trên các thiết lập phần cứng khác nhau, từ thiết bị biên đến máy chủ, đảm bảo các giải pháp linh hoạt và có thể mở rộng để triển khai quy mô lớn.

Để biết thêm các ứng dụng, hãy xem ưu điểm của ước tính tốc độ.

Có thể YOLOv8 được tích hợp với các khung AI khác như TensorFlow hoặc PyTorch?

Có YOLOv8 có thể được tích hợp với các khung AI khác như TensorFlow và PyTorch. Ultralytics cung cấp hỗ trợ xuất khẩu YOLOv8 mô hình với nhiều định dạng khác nhau như ONNX, TensorRTvà CoreML, đảm bảo khả năng tương tác mượt mà với các khung ML khác.

Để xuất một YOLOv8 Mô hình để ONNX định dạng:

yolo export --weights yolov8n.pt --include onnx

Tìm hiểu thêm về các mô hình xuất trong hướng dẫn của chúng tôi về xuất khẩu.

Ước tính tốc độ sử dụng chính xác như thế nào Ultralytics YOLOv8?

Độ chính xác của ước tính tốc độ bằng cách sử dụng Ultralytics YOLOv8 Phụ thuộc vào một số yếu tố, bao gồm chất lượng theo dõi đối tượng, độ phân giải và tốc độ khung hình của video và các biến môi trường. Mặc dù công cụ ước tính tốc độ cung cấp các ước tính đáng tin cậy, nhưng nó có thể không chính xác 100% do sự khác biệt về tốc độ xử lý khung hình và tắc nghẽn đối tượng.

Lưu ý: Luôn xem xét biên độ sai số và xác thực các ước tính bằng dữ liệu sự thật cơ bản khi có thể.

Để biết thêm các mẹo cải thiện độ chính xác, hãy kiểm tra Lập luận SpeedEstimator phần.

Tại sao chọn Ultralytics YOLOv8 so với các mô hình phát hiện đối tượng khác như TensorFlow API phát hiện đối tượng?

Ultralytics YOLOv8 Cung cấp một số lợi thế so với các mô hình phát hiện đối tượng khác, chẳng hạn như TensorFlow API phát hiện đối tượng:

  • Hiệu suất thời gian thực: YOLOv8 được tối ưu hóa để phát hiện theo thời gian thực, mang lại tốc độ và độ chính xác cao.
  • Dễ sử dụng: Được thiết kế với giao diện thân thiện với người dùng, YOLOv8 Đơn giản hóa việc đào tạo và triển khai mô hình.
  • Tính linh hoạt: Hỗ trợ nhiều tác vụ, bao gồm phát hiện đối tượng, phân đoạn và ước tính tư thế.
  • Cộng đồng và Hỗ trợ: YOLOv8 được hỗ trợ bởi một cộng đồng tích cực và tài liệu phong phú, đảm bảo các nhà phát triển có các tài nguyên họ cần.

Để biết thêm thông tin về lợi ích của YOLOv8, khám phá trang mô hình chi tiết của chúng tôi.



Đã tạo 2024-01-05, Cập nhật 2024-07-05
Tác giả: glenn-jocher (7), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

Ý kiến