Instructions to use bhundredss/vehicle_detection with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use bhundredss/vehicle_detection with ultralytics:
from ultralytics import YOLOvv8 model = YOLOvv8.from_pretrained("bhundredss/vehicle_detection") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
vehicle_detection
Tóm tắt mô hình
vehicle_detection.onnx là mô hình phát hiện đối tượng định dạng ONNX, được huấn luyện bằng kiến trúc Ultralytics YOLOv8 để phát hiện các phương tiện giao thông trong ảnh hoặc khung hình video.
Mô hình hỗ trợ 5 lớp phương tiện:
names:
0: bicycle
1: bus
2: car
3: motorcycle
4: truck
Các lớp tương ứng:
bicycle: xe đạpbus: xe buýtcar: ô tômotorcycle: xe máytruck: xe tải
Mô hình có thể được sử dụng như một thành phần phát hiện phương tiện trong các hệ thống phân tích giao thông, giám sát video, đếm xe, theo dõi luồng phương tiện hoặc làm tiền xử lý cho các pipeline downstream khác.
Mục đích sử dụng
Mô hình này được thiết kế để:
- Phát hiện bounding box của phương tiện trong ảnh hoặc video.
- Nhận diện 5 loại phương tiện: xe đạp, xe buýt, ô tô, xe máy và xe tải.
- Hỗ trợ các bài toán phân tích giao thông như đếm xe, thống kê mật độ phương tiện, phân loại phương tiện theo khung hình.
- Làm bước tiền xử lý cho các hệ thống downstream như tracking, line crossing, vehicle re-identification, phân tích hành vi giao thông hoặc hệ thống cảnh báo.
- Phục vụ nghiên cứu, thử nghiệm, đánh giá và triển khai các workflow thị giác máy tính liên quan đến giao thông.
Mô hình này không được thiết kế để:
- Xác định danh tính chủ phương tiện hoặc cá nhân.
- Đưa ra quyết định pháp lý, xử phạt, bảo hiểm, tín dụng hoặc các quyết định có ảnh hưởng trực tiếp đến quyền lợi con người nếu không có hệ thống được kiểm định đầy đủ và có sự giám sát của con người.
- Thay thế hoàn toàn quy trình kiểm tra thủ công trong các bối cảnh yêu cầu độ chính xác cao hoặc có ràng buộc pháp lý.
- Triển khai trong các khu vực hoặc tình huống mà việc thu thập, xử lý hoặc giám sát hình ảnh phương tiện bị hạn chế hoặc cần được cấp phép riêng.
File mô hình
vehicle_detection.onnx: mô hình phát hiện phương tiện định dạng ONNX.
Đầu vào và đầu ra
Cần kiểm tra trực tiếp ONNX graph để xác nhận chính xác tên tensor, kích thước đầu vào, chuẩn hóa ảnh và định dạng đầu ra trước khi tích hợp vào hệ thống triển khai.
Với mô hình YOLOv8 export sang ONNX, quá trình suy luận thường bao gồm:
- Resize ảnh đầu vào về kích thước mà mô hình yêu cầu, ví dụ
640x640, hoặc kích thước được dùng khi export. - Letterbox ảnh để giữ nguyên tỉ lệ khung hình nếu pipeline huấn luyện/suy luận ban đầu sử dụng letterbox.
- Chuyển ảnh từ định dạng
BGRsangRGBnếu đọc bằng OpenCV. - Chuyển tensor về layout phù hợp, thường là
NCHW. - Chuẩn hóa giá trị pixel, thường từ
[0, 255]về[0, 1]. - Chạy suy luận bằng ONNX Runtime hoặc runtime tương thích.
- Giải mã đầu ra YOLOv8.
- Áp dụng confidence threshold và Non-Maximum Suppression nếu các bước này chưa được nhúng sẵn trong ONNX graph.
Nên dùng công cụ kiểm tra ONNX hoặc ONNX Runtime để xác nhận contract đầu vào/đầu ra của mô hình trong môi trường triển khai cụ thể.
Ví dụ suy luận
import cv2
import numpy as np
import onnxruntime as ort
session = ort.InferenceSession(
"vehicle_detection.onnx",
providers=["CPUExecutionProvider"]
)
input_name = session.get_inputs()[0].name
input_shape = session.get_inputs()[0].shape
image = cv2.imread("traffic.jpg")
# Cần điều chỉnh preprocessing theo input shape và cấu hình export thực tế.
height, width = input_shape[2], input_shape[3]
resized = cv2.resize(image, (width, height))
# BGR -> RGB, normalize [0, 255] -> [0, 1]
tensor = resized[:, :, ::-1].astype(np.float32) / 255.0
# HWC -> CHW -> NCHW
tensor = np.transpose(tensor, (2, 0, 1))[None]
outputs = session.run(None, {input_name: tensor})
print(outputs)
Kết quả trả về cần được giải mã theo định dạng output của YOLOv8 ONNX. Hãy sử dụng cùng logic hậu xử lý đã dùng trong quá trình validation hoặc export, bao gồm confidence threshold, class mapping và Non-Maximum Suppression nếu cần.
Hiệu năng
Repository này chưa bao gồm benchmark chuẩn hóa. Trước khi dùng trong môi trường production, cần đánh giá mô hình trên dữ liệu đại diện cho bối cảnh triển khai thực tế, bao gồm góc camera, độ cao lắp đặt, mật độ giao thông, điều kiện ánh sáng, thời tiết, độ phân giải video và phân bố loại phương tiện.
Các chỉ số đánh giá được khuyến nghị:
- Precision, recall và F1 score tại confidence threshold được chọn.
- mAP ở các ngưỡng IoU phù hợp, ví dụ
mAP@0.5vàmAP@0.5:0.95. - Độ chính xác theo từng class: bicycle, bus, car, motorcycle, truck.
- Tỷ lệ false positive trên các cảnh không có phương tiện hoặc có vật thể dễ nhầm lẫn.
- Tỷ lệ false negative với phương tiện nhỏ, xa, bị che khuất hoặc di chuyển nhanh.
- Latency và throughput trên phần cứng triển khai thực tế, ví dụ CPU, GPU hoặc edge accelerator.
Hạn chế
Hiệu quả phát hiện phương tiện có thể bị ảnh hưởng bởi:
- Phương tiện ở xa, kích thước nhỏ hoặc chỉ xuất hiện một phần trong khung hình.
- Phương tiện bị che khuất bởi phương tiện khác, cây cối, biển báo, người đi đường hoặc vật thể trong môi trường.
- Cảnh ban đêm, ánh sáng yếu, ngược sáng, lóa đèn, mưa, sương mù hoặc motion blur.
- Camera có độ phân giải thấp, bitrate thấp, nén mạnh hoặc rung lắc.
- Góc nhìn camera khác biệt lớn so với dữ liệu huấn luyện.
- Các loại phương tiện không nằm trong 5 class được hỗ trợ.
- Sự khác biệt giữa phương tiện trong dữ liệu huấn luyện và phương tiện ở khu vực triển khai thực tế.
Mô hình chỉ phát hiện và phân loại bounding box phương tiện. Mô hình không thực hiện tracking, không nhận dạng biển số, không xác định danh tính chủ phương tiện, không suy luận hành vi vi phạm và không đưa ra kết luận pháp lý.
Công bằng, an toàn và quyền riêng tư
Hiệu năng mô hình có thể thay đổi theo khu vực địa lý, kiểu phương tiện, chất lượng camera, môi trường đường phố và điều kiện thời tiết. Trước khi triển khai thực tế, cần đánh giá cục bộ trên dữ liệu đại diện và theo dõi chất lượng mô hình sau khi đưa vào vận hành.
Video giao thông có thể chứa thông tin nhạy cảm như biển số xe, khuôn mặt người đi đường, vị trí và thời gian di chuyển. Người dùng có trách nhiệm đảm bảo việc thu thập, lưu trữ, xử lý, chia sẻ và xóa dữ liệu tuân thủ các quy định pháp luật hiện hành về quyền riêng tư, bảo vệ dữ liệu, giám sát hình ảnh và an toàn giao thông.
Trong các hệ thống có ảnh hưởng đến con người, nên có cơ chế kiểm tra thủ công, giám sát lỗi, logging phù hợp và quy trình xử lý khi mô hình dự đoán sai.
Ghi chú triển khai
- Kiểm tra ONNX graph để xác nhận input name, output name, input size và định dạng output.
- Sử dụng đúng preprocessing và post-processing tương ứng với pipeline Ultralytics YOLOv8 đã dùng khi huấn luyện/export.
- Đảm bảo class mapping đúng thứ tự:
0: bicycle
1: bus
2: car
3: motorcycle
4: truck
- Hiệu chỉnh confidence threshold và NMS threshold trên tập validation đại diện.
- Kiểm tra riêng hiệu năng theo từng class, đặc biệt với các class dễ nhầm như
car,busvàtruck. - Theo dõi false positive và false negative sau khi triển khai.
- Với video, nên kết hợp thêm tracking nếu cần đếm phương tiện, tránh đếm trùng cùng một xe qua nhiều frame.
- Bảo vệ dữ liệu ảnh, video, bounding box, metadata và log bằng cơ chế phân quyền truy cập phù hợp.
- Thiết lập chính sách lưu trữ và xóa dữ liệu theo yêu cầu của hệ thống và quy định pháp lý liên quan.
Giấy phép
Repository mô hình này được phát hành theo giấy phép MIT, trừ khi chủ sở hữu repository có quy định khác.