Ướ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
Ư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 độ bằng cách sử dụng YOLOv8 Ví dụ
from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2
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 = speed_estimation.SpeedEstimator()
speed_obj.set_args(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 tốc độ GPU.
Đối số tùy chọn set_args
Tên | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
reg_pts |
list |
[(20, 400), (1260, 400)] |
Các điểm xác định Khu vực |
names |
dict |
None |
Tên lớp |
view_img |
bool |
False |
Hiển thị khung có số lượng |
line_thickness |
int |
2 |
Tăng độ dày hộp giới hạn |
region_thickness |
int |
5 |
Độ dày cho vùng hoặc đường đối tượng |
spdl_dist_thresh |
int |
10 |
Euclidean Ngưỡng khoảng cách cho dòng kiểm tra 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 |
Đã tạo 2024-01-05, Cập nhật 2024-05-08
Tác giả: Burhan-Q (1), RizwanMunawar (2), glenn-jocher (2), AyushExel (1)