Ultralytics YOLOv8 cho ước tính tốc độ trong các dự án thị giác máy tính
Khám phá cách mô hình Ultralytics YOLOv8 có thể được sử dụng để ước tính tốc độ trong các dự án thị giác máy tính của bạn. Hãy tự mình thử nghiệm với một ví dụ mã nguồn đơn giản.

Chắc hẳn ai trong chúng ta cũng từng 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ể đã từng nhận được thông báo vi phạm 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 ghi nhận các lỗi vi phạm tốc độ nhờ vào thị giác máy tính. Hình ảnh thời gian thực được ghi lại bởi camera tại các cột đèn giao thông và trên đường cao tốc được sử 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 ở việc đảm bảo an toàn trên đường cao tốc. Nó còn có thể được áp dụng trong thể thao, phương tiện tự lái và nhiều lĩnh vực khác. Trong bài viết này, chúng ta sẽ thảo luận cách bạn có thể sử dụng model Ultralytics YOLOv8 để ước tính tốc độ trong các dự án thị giác máy tính của mình. Chúng tôi cũng sẽ hướng dẫn từng bước qua một ví dụ về lập trình để bạn có thể tự mình trải nghiệm. Hãy bắt đầu thôi!
Link to this sectionƯớc tính tốc độ giúp việc quản lý giao thông trở nên 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 hàng năm do tai nạn giao thông vì chạy quá tốc độ. Ngoài ra, từ 20 đến 50 triệu người khác phải chịu những chấn thương không tử vong, trong đó nhiều trường hợp dẫn đến khuyết tật. Tầm quan trọng của an ninh giao thông là điều không thể phủ nhận, đặc biệt khi việc ướ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 phố của chúng ta 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 khung hình video để tính toán tốc độ di chuyển của chúng. Các thuật toán như YOLOv8 có thể nhận diện và theo dõi các đối tượng như xe cộ qua các khung hình liên tiếp. Hệ thống đo khoảng cách mà các đối tượng này di chuyển bằng cách sử dụng các camera đã được hiệu chỉnh hoặc các điểm tham chiếu để đánh giá khoảng cách thực tế. Bằng cách tính thời gian cần thiết để đối tượng di chuyển giữa hai điểm, hệ thống sẽ tính toán tốc độ của chúng dựa trên tỷ lệ quãng đường/thời gian.

Hình 1. Ước tính tốc độ sử dụng model Ultralytics YOLOv8.
Ngoài việc bắt lỗi người chạy quá tốc độ, các hệ thống ước tính tốc độ tích hợp AI còn có thể thu thập dữ liệu để đưa ra các dự đoán về tình hình 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ổ nguồn lực. 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 con đường mới nhằm giảm ùn tắc giao thông.
Link to this sectionCác ứng dụng của ước tính tốc độ trong các ngành công nghiệp khác#
Các ứng dụng của ước tính tốc độ vượt xa phạm vi giám sát đường bộ. Nó cũng có thể hữu ích để theo dõi hiệu suất của vận động viên, giúp các phương tiện tự lái hiểu được 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ó camera được sử dụng để đo tốc độ của một vật thể, ước tính tốc độ bằng thị giác máy tính đều có thể áp dụng được.
Dưới đây là một số ví dụ về nơi mà ước tính tốc độ đang được sử dụng:
- Xe tự lái 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 môn đ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 đô 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 sự di chuyển của động vật và phát hiện các 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.
Link to this sectionLợi ích của việc ước tính tốc độ sử dụ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 dựa trên cảm biến truyền thống nhờ độ chính xác được nâng cao, tính tiết kiệm chi phí và tính linh hoạt. Không giống như các hệ thống phụ thuộc vào các cảm biến đắt tiền như LiDAR, thị giác máy tính sử dụng các 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 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 giao thông tổng thể và độ an toàn.
Link to this sectionTự thực hiện: Ước tính tốc độ sử dụng YOLOv8#
Bây giờ chúng ta đã 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 bạn có thể tích hợp ước tính tốc độ vào các dự án thị giác máy tính của mì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 YOLOv8.
Ví dụ này sử dụng một video về các phương tiện 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 liên quan nào. Model YOLOv8 xác định tâm của mỗi phương tiện và tính toán tốc độ của nó dựa trên việc tâm này đi qua một đường kẻ ngang trong khung hình video nhanh như thế nào.
Trước khi đi sâu vào, cần lưu ý rằng trong trường hợp này, việc tính toán khoảng cách chỉ là ước tính và dựa trên Khoảng cách Euclid. Việc hiệu chỉnh camera không được tính đến, do đó ướ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 độ của GPU của bạn.
Bước 1: Chúng ta sẽ bắt đầu bằng việc cài đặt gói Ultralytics. Mở command prompt hoặc terminal của bạn và chạy lệnh được hiển thị bên dưới.
pip install ultralyticsHãy xem hướng dẫn Cài đặt Ultralytics của chúng tôi để biết các chỉ dẫn từng bước và các phương pháp tối ưu trong quy trình cài đặt. Nếu bạn gặp bất kỳ vấn đề nào trong khi cài đặt các gói 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 chúng ta xử lý video.
import cv2
from ultralytics import YOLO, solutionsBước 3: Sau đó, chúng ta có thể load model YOLOv8 và truy xuất tên của các lớp mà model có thể phát hiện.
model = YOLO("yolov8n.pt")
names = model.model.namesHãy kiểm tra tất cả các model 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ở tệp 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 trên 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 trình ghi video (video writer) để lưu kết quả cuối cùng của việc ước tính tốc độ. 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 6: Tiếp theo, chúng ta có thể định nghĩa các điểm đường kẻ cho việc ước tính tốc độ. Đối với video đầu vào của chúng ta, đường kẻ này sẽ được đặt theo chiều ngang ở giữa khung hình. Hãy thoải mái thay đổi các giá trị để đặt đường kẻ vào vị trí phù hợp nhất, tùy thuộc vào video đầu vào của bạn.
line_pts = [(0, 360), (1280, 360)]Bước 7: Bây giờ, chúng ta có thể khởi tạo đối tượng ước tính tốc độ bằng cách sử dụng các điểm đường kẻ và tên lớp đã định nghĩa.
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 là xử lý video từng khung hình một. Chúng ta đọc từng khung hình, 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 capture và writer của video và đó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 bạn đ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.pyLink to this sectionNhữ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 liên quan đến việc triển khai ước tính tốc độ bằng thị giác máy tính cũng rất quan trọng. Đ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 trở ngại cho hệ thống vì chúng có thể che khuất tầm nhìn của đường đi. Tương tự, sự che khuất gây ra bởi các phương tiện hoặc đối tượng khác có thể khiến các hệ thống này khó theo dõi và ước tính tốc độ của xe mục tiêu một cách chính xác. Điều kiện ánh sáng kém tạo ra bóng đổ hoặc ánh nắng chói cũng có thể làm phức tạp thêm nhiệm vụ ước tính tốc độ.
Một thách thức khác liên quan đến sức mạnh tính toán. Để ước tính tốc độ trong thời gian thực, chúng ta phải xử lý rất nhiều 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ý tất cả những điều này và đảm bảo mọi thứ hoạt động nhanh chóng mà không bị chậm trễ.
Ngoài ra còn có vấn đề về quyền riêng tư. Dữ liệu thu thập bởi các hệ thống này có thể bao gồm thông tin chi tiết về phương tiện của cá nhân như hãng xe, model và biển số xe, vốn đượ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 của người ngồi trong xe. Việc thu thập dữ liệu như vậy có thể gây ra các vấn đề đạo đức và pháp lý nghiêm trọng cần phải được xử lý hết sức cẩn thận.
Link to this sectionTiến 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òn những thách thức như độ chính xác trong các điều kiện khắc nghiệt và giải quyết các vấn đề về quyền riêng tư, nhưng những lợi ích mang lại là rất lớn. Ước tính tốc độ hỗ trợ bởi thị giác máy tính tiết kiệm chi phí, thích ứng tốt hơn và chính xác hơn so với các phương pháp cũ. Nó hữu ích trong nhiều lĩnh vực như vận tải, thể thao, giám sát và xe tự lái. Với tất cả những lợi ích và ứng dụng đó, nó chắc chắn sẽ là 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á GitHub repository của chúng tôi để tìm hiểu thêm về cách chúng tôi sử dụng AI để tạo ra các giải pháp sáng tạo trong nhiều ngành công nghiệp như chăm sóc sức khỏe và nông nghiệp. Hãy cùng hợp tác, đổi mới và học hỏi với chúng tôi! 🚀






