Ultralytics YOLOv8 để ước tính tốc độ trong các dự án thị giác máy tính
Khám phá 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. Tự mình thử nghiệm với một ví dụ mã đơn giản.
Abirami Vina10 phút đọc
Có lẽ ai trong chúng ta cũng từng thấy biển báo giới hạn tốc độ. 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 thư hoặc email. 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 vi phạm tốc độ nhờ thị giác máy tính. Video thời gian thực được camera tại đèn đường và trên đường cao tốc ghi lại được dùng để ước tính tốc độ và tăng cường an toàn giao thông.
Ước tính tốc độ không chỉ giới hạn ở an toàn đường cao tốc. Phương pháp này 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ẽ hướng dẫn từng bước một ví dụ lập trình để bạn có thể tự thử.
Ướ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,16 triệu người tử vong mỗi năm do tai nạn giao thông đường bộ, trong đó chạy quá tốc độ là một nguyên nhân chính. Ngoài ra, có thêm 20 đến 50 triệu người bị thương nhưng không tử vong, 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 con người và giữ cho đường sá an toàn, hiệu quả.
Ướ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ác model như Ultralytics YOLOv8 có thể nhận diện và theo dõi những đối tượng như phương tiện qua các khung hình liên tiếp. Hệ thống đo quãng đường các đối tượng di chuyển bằng camera đã hiệu chỉnh hoặc các điểm tham chiếu để xác định khoảng cách trong thực tế. Bằng cách tính thời gian đối tượng di chuyển giữa hai điểm, hệ thống xác định tốc độ dựa trên tỷ lệ quãng đường-thời gian.

Hình 1. Ước tính tốc độ bằng model Ultralytics YOLOv8.
Ngoài việc phát hiện người 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 lượng đèn tín hiệu và phân bổ nguồn lực. Thông tin về quy luật giao thông và nguyên nhân ùn tắc có thể được dùng để quy hoạch đường mới nhằm giảm ùn tắc.
Ứng dụng ướ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á. Kỹ thuật này còn hữu ích để theo dõi thành tích vận động viên, giúp xe tự hành xác định tốc độ của các vật thể xung quanh, phát hiện hành vi đáng ngờ, v.v. Bất cứ nơi nào có thể dùng camera để đo tốc độ vật thể, đều có thể áp dụng ước tính tốc độ bằng thị giác máy tính.
Dưới đây là một số ví dụ về ứng dụng ước tính tốc độ:
- Ô tô 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.
- 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ị. Các hệ thống này có thể cảnh báo tài xế 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 giám sát hành vi động vật 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 hình ảnh đang thay thế những phương pháp truyền thống dùng cảm biến nhờ độ chính xác cao hơn, hiệu quả về chi phí và tính linh hoạt. Không giống các hệ thống dựa vào cảm biến đắt tiền như LiDAR, thị giác máy tính sử dụng camera thông thường để 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 để ước tính tốc độ có thể tích hợp với hạ tầng giao thông hiện có. Ngoài ra, có thể xây dựng các hệ thống này để thực hiện nhiều tác vụ phức tạp như nhận diện 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 và an toàn giao thông nói chung.
Tự thử: Ướ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 kỹ thuật này, hãy cùng tìm hiểu 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 mã. Chúng ta sẽ phát hiện phương tiện đang di chuyển và ước tính tốc độ bằng model Ultralytics YOLOv8.
Ví dụ này sử dụng video quay cảnh ô tô trên đường được tải xuống từ internet. Bạn có thể dùng chính video đó hoặc bất kỳ video phù hợp nào khác. Model Ultralytics YOLOv8 phát hiện và theo dõi từng phương tiện, còn bộ ước tính tốc độ chuyển đổi quãng đường mỗi phương tiện được theo dõi di chuyển qua nhiều khung hình thành tốc độ, dựa trên tốc độ khung hình của video và tỷ lệ mét trên pixel.
Trước khi bắt đầu, cần lưu ý rằng trong trường hợp này, khoảng cách được tính gần đúng dựa trên khoảng cách pixel Euclid nhân với giá trị mét trên pixel ước tính. Phép hiệu chỉnh camera không được tính đến, do đó kết quả ước tính tốc độ có thể chưa hoàn toàn chính xác.
Bước 1: Trước tiên, chúng ta sẽ cài đặt gói Ultralytics. Mở cửa sổ dòng lệnh hoặc terminal và chạy lệnh bên dưới.
pip install ultralyticsXem 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 tốt nhất trong quá trình cài đặt. Nếu gặp sự cố khi cài đặt các gói cần thiết cho YOLOv8, hướng dẫn Các sự cố thường gặp của chúng tôi 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ẽ hỗ trợ xử lý video.
import cv2
from ultralytics import solutionsBước 3: Ở bước này, chúng ta sẽ mở tệp video đầu vào bằng module VideoCapture của OpenCV. Chúng ta cũng sẽ lấy 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 4: Ở đây, chúng ta sẽ khởi tạo bộ ghi video để lưu kết quả ước tính tốc độ cuối cùng. Tệp 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 5: Bây giờ, chúng ta có thể khởi tạo đối tượng ước tính tốc độ bằng model Ultralytics YOLOv8 và tốc độ khung hình của video. Giá trị meter_per_pixel thiết lập tỷ lệ thực tế của khung cảnh, vì vậy bạn có thể điều chỉnh giá trị này cho phù hợp với cấu hình camera.
speed_obj = solutions.SpeedEstimator(
model="yolov8n.pt",
fps=fps,
meter_per_pixel=0.05,
show=True,
)Xem tất cả model được hỗ trợ để xác định model phù hợp nhất với dự án của bạn.
Bước 6: 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, bộ ước tính tốc độ phát hiện và theo dõi đối tượng, ước tính tốc độ rồi trả về khung hình đã được chú thích để 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
results = speed_obj(im0)
video_writer.write(results.plot_im)Bước 7: Cuối cùng, chúng ta giải phóng các đối tượng ghi và thu video, đồng thời đóng mọi cửa sổ OpenCV.
cap.release()
video_writer.release()
cv2.destroyAllWindows()Bước 8: Lưu script. Nếu làm việc trong terminal hoặc dấu nhắc lệnh, 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#
Bạn cũng cần hiểu những thách thức khi triển khai ước tính tốc độ bằng thị giác máy tính. Đ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 giảm tầm nhìn trên đường. Tương tự, hiện tượng che khuất do phương tiện hoặc vật thể khác 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. Ánh sáng yếu, bóng đổ hoặc ánh nắng chói cũng có thể khiến việc ước tính tốc độ 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ể cần 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, không bị chậm trễ.
Ngoài ra còn có vấn đề về 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 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 thậ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 đến giải pháp linh hoạt và hiệu quả cho nhiều ứng dụng. Dù tồn tại những thách thức như độ chính xác trong điều kiện khó khăn và việc giải quyết các vấn đề quyền riêng tư, lợi ích của phương pháp này rất đáng kể. Ước tính tốc độ bằng thị giác máy tính tiết kiệm chi phí, dễ thích ứng và chính xác hơn các phương pháp cũ. Phương pháp 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 những lợi ích và ứng dụng đó, phương pháp này có thể trở thành một phần quan trọng của các hệ thống thông minh trong tương lai.
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 ứng dụng AI 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 cộng tác, đổi mới và học hỏi!
Được viết bởi
Bình luận
Đặt câu hỏi, chia sẻ kết quả hoặc giúp đỡ người khác.










