Ultralytics YOLOv8 để ước tính tốc độ trong các dự án computer vision
Khám phá cách sử dụng model Ultralytics YOLOv8 để ước tính tốc độ trong các dự án computer vision của bạn. Tự mình thử nghiệm với một ví dụ code đơn giản.

Có lẽ tất cả chúng ta đều đã nhìn thấy các biển báo giới hạn tốc độ trên đường. Một số người thậm chí có thể đã nhận được thông báo vi phạm giới hạn tốc độ tự động qua đường bưu điện hoặc email. Các hệ thống quản lý giao thông bằng trí tuệ nhân tạo (AI) có thể tự động phát hiện hành vi chạy quá tốc độ nhờ thị giác máy tính. Video thời gian thực được camera tại các cột đèn đường và trên đường cao tốc ghi lại được sử dụng để ước tính tốc độ và tăng cường an toàn đường bộ.
Ước tính tốc độ không chỉ giới hạn trong việc đảm bảo an toàn trên đường cao tốc. Công nghệ này còn có thể được sử dụng trong thể thao, xe tự hành và nhiều ứng dụng khác. Trong bài viết này, chúng ta sẽ thảo luận cách sử dụng model Ultralytics YOLOv8 để ước tính tốc độ trong các dự án thị giác máy tính. Chúng ta cũng sẽ thực hiện từng bước một ví dụ lập trình để bạn có thể tự mình thử nghiệm. Hãy bắt đầu!
Ước tính tốc độ giúp quản lý giao thông dễ dàng hơn#
Theo Tổ chức Y tế Thế giới (WHO), khoảng 1,19 triệu người tử vong mỗi năm do tai nạn giao thông đường bộ vì chạy quá tốc độ. Ngoài ra, 20 đến 50 triệu người khác bị thương không tử vong, trong đó nhiều trường hợp dẫn đến khuyết tật. Không thể xem nhẹ tầm quan trọng của an toàn giao thông, đặc biệt khi ước tính tốc độ giúp ngăn ngừa tai nạn, cứu sống nhiều người và duy trì sự an toàn, hiệu quả cho đường sá.
Ước tính tốc độ bằng thị giác máy tính bao gồm việc phát hiện và theo dõi các đối tượng trong từng khung hình video để tính tốc độ di chuyển của chúng. Các thuật toán như Ultralytics YOLOv8 có thể xác định và theo dõi các đối tượng như phương tiện qua những khung hình liên tiếp. Hệ thống đo khoảng cách mà các đối tượng di chuyển bằng camera đã hiệu chuẩn hoặc các điểm tham chiếu để ước lượng khoảng cách trong thế giới thực. Bằng cách đo thời gian đối tượng di chuyển giữa hai điểm, hệ thống tính tốc độ dựa trên tỷ số giữa quãng đường và thời gian.

Hình 1. Ước tính tốc độ bằng model Ultralytics YOLOv8.
Ngoài việc phát hiện các phương tiện chạy quá tốc độ, các hệ thống ước tính tốc độ tích hợp AI có thể thu thập dữ liệu để đưa ra dự đoán về giao thông. Những dự đoán này có thể hỗ trợ các tác vụ quản lý giao thông như tối ưu hóa thời gian đèn tín hiệu và phân bổ tài nguyên. Thông tin chi tiết về các mô hình giao thông và nguyên nhân gây ùn tắc có thể được sử dụng để quy hoạch các tuyến đường mới nhằm giảm ùn tắc.
Ứng dụng của ước tính tốc độ trong các ngành khác#
Ứng dụng ước tính tốc độ không chỉ giới hạn ở việc giám sát đường sá. Công nghệ này cũng hữu ích trong việc theo dõi hiệu suất vận động viên, giúp xe tự hành hiểu tốc độ của các đối tượng chuyển động xung quanh, phát hiện hành vi đáng ngờ, v.v. Bất cứ nơi nào camera có thể được sử dụng để đo tốc độ của một đối tượng, ước tính tốc độ bằng thị giác máy tính đều có thể được áp dụng.
Dưới đây là một số ví dụ về nơi ước tính tốc độ đang được sử dụng:
- Xe tự hành của Tesla sử dụng ước tính tốc độ dựa trên thị giác để tránh va chạm.
- Thị giác máy tính và ước tính tốc độ sẽ được sử dụng tại Thế vận hội Olympic 2024 để cải thiện phân tích hiệu suất trong các nội dung điền kinh.
- Các thành phố thông minh đang nghiên cứu phân tích dáng đi của người đi bộ để theo dõi tốc độ đi bộ và tăng cường khả năng di chuyển cũng như an toàn trong đô thị. Những hệ thống này có thể cảnh báo người lái xe về sự hiện diện của người đi bộ và ngăn ngừa tai nạn.
- Các hệ thống theo dõi hành vi động vật sử dụng ước tính tốc độ để theo dõi chuyển động của động vật và phát hiện dấu hiệu căng thẳng hoặc bệnh tật.

Hình 2. Ước tính tốc độ có thể đo tốc độ đi bộ của một người.
Lợi ích của việc ước tính tốc độ bằng thị giác máy tính#
Các hệ thống ước tính tốc độ dựa trên thị giác đang thay thế các phương pháp truyền thống dựa trên cảm biến nhờ độ chính xác, hiệu quả chi phí và tính linh hoạt cao hơn. Không giống các hệ thống phụ thuộc vào những cảm biến đắt tiền như LiDAR, thị giác máy tính sử dụng camera tiêu chuẩn để giám sát và phân tích tốc độ theo thời gian thực. Các giải pháp thị giác máy tính cho việc ước tính tốc độ có thể được tích hợp liền mạch với cơ sở hạ tầng giao thông hiện có. Ngoài ra, các hệ thống này có thể được xây dựng để thực hiện nhiều tác vụ phức tạp như nhận dạng loại phương tiện và phân tích mô hình giao thông nhằm cải thiện lưu lượng cũng như an toàn giao thông tổng thể.
Tự mình thử nghiệm: Ước tính tốc độ bằng Ultralytics YOLOv8#
Giờ đây, khi đã hiểu rõ về ước tính tốc độ và các ứng dụng của nó, hãy cùng xem xét kỹ hơn cách tích hợp ước tính tốc độ vào các dự án thị giác máy tính thông qua code. Chúng ta sẽ phát hiện các phương tiện đang di chuyển và ước tính tốc độ của chúng bằng model Ultralytics YOLOv8.
Ví dụ này sử dụng video về các xe ô tô trên đường được tải xuống từ Internet. Bạn có thể sử dụng cùng video đó hoặc bất kỳ video phù hợp nào khác. Model Ultralytics YOLOv8 xác định tâm của từng phương tiện và tính tốc độ dựa trên mức độ nhanh mà tâm này đi qua một đường ngang trong khung hình video.
Trước khi bắt đầu, cần lưu ý rằng trong trường hợp này, phép tính khoảng cách chỉ mang tính xấp xỉ và dựa trên Khoảng cách Euclid. Việc hiệu chuẩn camera không được tính đến, vì vậy kết quả ước tính tốc độ có thể không hoàn toàn chính xác. Ngoài ra, tốc độ ước tính có thể thay đổi tùy thuộc vào tốc độ GPU của bạn.
Bước 1: Trước tiên, chúng ta sẽ cài đặt package Ultralytics. Mở command prompt hoặc terminal và chạy lệnh bên dưới.
pip install ultralyticsHãy xem hướng dẫn Cài đặt Ultralytics để biết hướng dẫn từng bước và các phương pháp hay nhất trong quá trình cài đặt. Nếu gặp vấn đề khi cài đặt các package cần thiết cho YOLOv8, hướng dẫn Các vấn đề thường gặp của chúng tôi có các giải pháp và mẹo hữu ích.
Bước 2: Tiếp theo, chúng ta sẽ import các thư viện cần thiết. Thư viện OpenCV sẽ giúp xử lý video.
import cv2
from ultralytics import YOLO, solutionsBước 3: Sau đó, chúng ta có thể load model Ultralytics YOLOv8 và lấy tên các class mà model có thể phát hiện.
model = YOLO("yolov8n.pt")
names = model.model.namesXem tất cả model được chúng tôi hỗ trợ để hiểu model nào phù hợp nhất với dự án của bạn.
Bước 4: Trong bước này, chúng ta sẽ mở file video đầu vào bằng module VideoCapture của OpenCV. Chúng ta cũng sẽ trích xuất chiều rộng, chiều cao và số khung hình mỗi giây (fps) của video.
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))Bước 5: Tại đây, chúng ta sẽ khởi tạo video writer để lưu kết quả ước tính tốc độ cuối cùng. File video đầu ra sẽ được lưu dưới tên “speed_estimation.avi”.
video_writer = cv2.VideoWriter("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))Bước 6: Tiếp theo, chúng ta có thể xác định các điểm của đường dùng để ước tính tốc độ. Với video đầu vào, đường này sẽ được đặt theo chiều ngang ở giữa khung hình. Bạn có thể tùy chỉnh các giá trị để đặt đường ở vị trí phù hợp nhất, tùy thuộc vào video đầu vào.
line_pts = [(0, 360), (1280, 360)]Bước 7: Giờ đây, chúng ta có thể khởi tạo đối tượng ước tính tốc độ bằng các điểm đường và tên class đã xác định.
speed_obj = solutions.SpeedEstimator(
reg_pts=line_pts,
names=names,
view_img=True,
)Bước 8: Phần cốt lõi của script xử lý video theo từng khung hình. Chúng ta đọc từng khung hình, đồng thời phát hiện và theo dõi các đối tượng. Tốc độ của các đối tượng được theo dõi sẽ được ước tính, và khung hình đã chú thích sẽ được ghi vào video đầu ra.
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)Bước 9: Cuối cùng, chúng ta giải phóng các đối tượng video capture và writer, đồng thời đóng mọi cửa sổ OpenCV.
cap.release()
video_writer.release()
cv2.destroyAllWindows()Bước 10: Lưu script của bạn. Nếu đang làm việc từ terminal hoặc command prompt, hãy chạy script bằng lệnh sau:
python your_script_name.pyNhững thách thức của việc ước tính tốc độ dựa trên thị giác#
Việc hiểu rõ những thách thức khi triển khai ước tính tốc độ bằng thị giác máy tính cũng rất quan trọng. Các điều kiện thời tiết bất lợi như mưa, sương mù hoặc tuyết có thể gây vấn đề cho hệ thống vì làm cản trở tầm nhìn trên đường. Tương tự, hiện tượng che khuất do các phương tiện hoặc vật thể khác gây ra có thể khiến các hệ thống này khó theo dõi và ước tính chính xác tốc độ của phương tiện mục tiêu. Điều kiện ánh sáng kém gây ra bóng hoặc hiện tượng chói do ánh nắng mặt trời cũng có thể làm nhiệm vụ ước tính tốc độ trở nên phức tạp hơn.
Một thách thức khác liên quan đến năng lực tính toán. Để ước tính tốc độ theo thời gian thực, chúng ta phải xử lý lượng lớn dữ liệu hình ảnh từ các camera giao thông chất lượng cao. Giải pháp của bạn có thể yêu cầu phần cứng đắt tiền để xử lý toàn bộ dữ liệu này và đảm bảo mọi thứ hoạt động nhanh chóng mà không bị trễ.
Tiếp đó là vấn đề quyền riêng tư. Dữ liệu do các hệ thống này thu thập có thể bao gồm thông tin về phương tiện của một cá nhân như hãng xe, model và biển số, được thu thập mà không có sự đồng ý của họ. Một số camera HD hiện đại thậm chí có thể ghi lại hình ảnh những người ngồi bên trong xe. Việc thu thập dữ liệu như vậy có thể làm phát sinh các vấn đề nghiêm trọng về đạo đức và pháp lý, cần được xử lý hết sức cẩn trọng.
Tăng tốc hướng tới tương lai#
Sử dụng model Ultralytics YOLOv8 để ước tính tốc độ mang lại một giải pháp linh hoạt và hiệu quả cho nhiều mục đích sử dụng. Mặc dù vẫn có những thách thức như độ chính xác trong điều kiện khắc nghiệt và việc giải quyết các vấn đề về quyền riêng tư, những lợi ích mà công nghệ này mang lại là rất đa dạng. Ước tính tốc độ hỗ trợ bởi thị giác máy tính có hiệu quả chi phí, khả năng thích ứng và độ chính xác cao hơn so với các phương pháp cũ. Công nghệ này hữu ích trong nhiều lĩnh vực như giao thông vận tải, thể thao, giám sát và xe tự lái. Với tất cả lợi ích và ứng dụng đó, công nghệ này chắc chắn sẽ trở thành một phần quan trọng của các hệ thống thông minh trong tương lai.
Bạn quan tâm đến AI? Hãy kết nối với cộng đồng của chúng tôi! Khám phá repository GitHub để tìm hiểu thêm về cách chúng tôi sử dụng AI nhằm tạo ra các giải pháp đổi mới trong nhiều ngành như chăm sóc sức khỏe và nông nghiệp. Hãy cùng chúng tôi hợp tác, đổi mới và học hỏi! 🚀









