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.
Speed estimation không chỉ giới hạn ở an toàn giao thông đường bộ. Nó có thể được sử dụng trong thể thao, xe tự lái và nhiều ứng dụng khác. Trong bài viết này, chúng ta sẽ thảo luận về cách bạn có thể sử dụng Ultralytics YOLOv8 model để ước tính tốc độ trong các dự án computer vision của mình. Chúng ta cũng sẽ đi qua từng bước một ví dụ về mã nguồn để bạn có thể tự mình thử nghiệm. Hãy bắt đầu ngay!
Ướ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 million người thiệt mạng hàng năm do tai nạn giao thông đường bộ là hậu quả của việc chạy quá tốc độ. Ngoài ra, từ 20 đến 50 triệu người khác phải chịu các thương tích không gây tử vong, trong đó nhiều trường hợp dẫn đến khuyết tật. Tầm quan trọng của an toàn giao thông là 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 mạng sống và giữ cho các con đường của chúng ta an toàn và 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ư Ultralytics YOLOv8 có thể nhận diện và theo dõi các đối tượng như phương tiện giao thông qua các khung hình liên tiếp. Hệ thống đo lường khoảng cách mà các đối tượng này di chuyển bằng cách sử dụng camera đã được hiệu chuẩn 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 đối tượng di chuyển giữa hai điểm, hệ thống tính toán tốc độ của chúng dựa trên tỷ lệ khoảng cách trên thời gian.

Fig 1. Ước tính tốc độ sử dụng mô hình Ultralytics YOLOv8 model.
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.
Cá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 tính tốc độ vượt ra ngoài phạm vi giám sát đường xá. Nó cũng có ích trong việc theo dõi hiệu suất của vận động viên, giúp autonomous vehicles hiểu được tốc độ của các vật thể di chuyển xung quanh chúng, phát hiện hành vi đáng ngờ, v.v. Bất cứ nơi nào có thể sử dụng camera để đo tốc độ của một đối tượng, việc ước tính tốc độ bằng computer vision đều có thể được áp dụng.
Dưới đây là một số ví dụ về nơi mà ước tính tốc độ đang được sử dụng:
- Tesla's autonomous cars sử dụng tính năng ước tính tốc độ dựa trên thị giác để tránh va chạm.
- Computer vision và ước tính tốc độ sẽ được sử dụng tại 2024 Olympic Games để 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.

Fig 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 độ 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.
Hãy tự trải nghiệm: Ước tính tốc độ sử dụng Ultralytics YOLOv8#
Bây giờ chúng ta đã hiểu rõ về việc ướ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 tính năng ướ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 mã nguồn. 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 cách sử dụng model Ultralytics YOLOv8.
Ví dụ này sử dụng một đoạn video quay cảnh xe ô tô trên đường được tải xuống từ internet. Bạn có thể sử dụng chính video đó hoặc bất kỳ video liên quan nào. Model Ultralytics YOLOv8 xác định tâm của từng phương tiện và tính toán tốc độ của xe dựa trên thời gian tâm đó vượt 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 Ultralytics Installation guide của chúng tôi để có hướng dẫn từng bước và các phương pháp hay nhất về quá trình cài đặt. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình cài đặt các gói cần thiết cho YOLOv8, Common Issues guide 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ể tải model Ultralytics YOLOv8 và lấy tên các lớp mà model có thể phát hiện.
model = YOLO("yolov8n.pt")
names = model.model.namesHãy xem tất cả các models we support để hiểu mô 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.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 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 computational power. Để ướ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 có độ 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.
Tiến tới tương lai#
Việc sử dụng Ultralytics YOLOv8 model để ước tính tốc độ cung cấp 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ù có những thách thức, chẳng hạn 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 lợi ích mang lại rất nhiều. Ước tính tốc độ hỗ trợ bởi computer vision tiết kiệm chi phí hơn, 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 khác nhau như giao thông 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ày, nó 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.
Quan tâm đến AI? Hãy kết nối với community 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 đang sử dụng AI để tạo ra các giải pháp đổi mới trong các ngành công nghiệp khác nhau như healthcare và agriculture. Cùng nhau cộng tác, đổi mới và học hỏi! 🚀






