计算机视觉深度学习YOLOV8模型训练车辆种类检测数据集 车辆类别检测数据集的训练及应用 推理识别检测大巴车 卡车 汽车巴士等进行检测识别
·
计算机视觉深度学习YOLOV8模型训练车辆种类检测数据集 车辆类别检测数据集的训练及应用 推理识别检测大巴车 卡车 汽车巴士等进行检测识别
文章目录
以下文字及代码仅供参考学习使用。

车辆种类检测数据集信息表
数据集概述
| 项目 | 内容 |
|---|---|
| 数据集名称 | 车辆种类检测数据集 |
| 总图像数量 | 4,058 张 |
| 应用场景 | 智能交通系统(ITS)、自动驾驶、交通管理、路径规划、避让决策 |
| 目标类别 | 12 类车辆类型,具体如下表 |
| 标注格式 | .txt(YOLO 格式,归一化坐标) |
| 适用模型 | YOLO 系列(直接用于训练) |
类别标签对照表
| 类别编号 | 英文名称 | 中文名称 | 描述 |
|---|---|---|---|
| 0 | big bus | 大巴 | 大型公共汽车 |
| 1 | big truck | 大卡车 | 大型货运车辆 |
| 2 | bus-l- | 大客车-L | 长款大型公共汽车 |
| 3 | bus-s- | 巴士-S- | 短款大型公共汽车 |
| 4 | car | 汽车 | 小型乘用车 |
| 5 | mid truck | 中型卡车 | 中型货运车辆 |
| 6 | small bus | 小巴士 | 小型公共汽车 |
| 7 | small truck | 小卡车 | 小型货运车辆 |
| 8 | truck-l- | 卡车-L- | 长款卡车 |
| 9 | truck-m- | 卡车-M- | 中长款卡车 |
| 10 | truck-s- | 卡车-S- | 短款卡车 |
| 11 | truck-xl- | 卡车-XL- | 特大型卡车 |
数据集划分及标注统计
| 数据集类型 | 图像数量 | 占比 | 用途 |
|---|---|---|---|
| 训练集 | 3,246 张 | 80% | 用于模型训练 |
| 验证集 | 405 张 | 10% | 用于评估模型性能,调参 |
| 测试集 | 407 张 | 10% | 用于最终模型评估,确保泛化能力 |
| 总计 | 4,058 张 | 100% | —— |
数据集
- ✅ 大规模数据集:包含 4,058 张高清图片,覆盖多种类型的车辆。
- ✅ 详细分类:细分为 12 类车辆,涵盖从小型汽车到特大型卡车的不同类型。
- ✅ 标准格式:提供
.txt标注文件,兼容 YOLO 系列模型,可以直接用于训练。 - ✅ 科学划分:按照 8:1:1 的比例进行训练集、验证集和测试集的划分,确保模型的有效性和泛化能力。
研究意义
车辆种类检测数据集的研究背景主要关注于以下几个方面:
-
智能交通系统(ITS):
- 准确识别不同类型的车辆帮助交通管理部门实时监控车流情况,优化交通信号控制,减少拥堵。
-
自动驾驶技术:
- 自动驾驶车辆需要能够准确识别周围的车辆类型,以便做出合理的路径规划和避让决策,提高行驶安全性和效率。
-
交通管理和安全:
- 基于计算机视觉的车辆检测技术可以快速、准确地分类各类车辆,有助于提升交通管理效率,减少交通事故的发生。
-
智慧城市建设:
- 通过高效、准确的车辆检测技术,助力智慧城市的建设和发展,改善城市交通状况,提升居民生活质量。
data.yaml 示例内容
train: ./vehicle-detection-dataset/images/train
val: ./vehicle-detection-dataset/images/val
test: ./vehicle-detection-dataset/images/test
nc: 12 # 类别数量
names: ['big bus', 'big truck', 'bus-l-', 'bus-s-', 'car', 'mid truck', 'small bus', 'small truck', 'truck-l-', 'truck-m-', 'truck-s-', 'truck-xl-']

1
1
你提供的 车辆种类检测数据集(12类,共4058张图像,YOLO格式)非常适合用于智能交通系统(ITS)和自动驾驶场景中的精细化车辆分类任务。以下是完整的 环境搭建 → 数据准备 → YOLOv8 训练 → 推理 → 评估 → 部署建议 的全流程技术指导。
✅ 一、环境配置
1. 安装 CUDA 驱动(GPU 加速)
确保你的 NVIDIA 显卡驱动已安装:
nvidia-smi
输出应显示 GPU 信息。推荐使用 CUDA 11.8 或 12.1。
2. 安装 Anaconda
下载并安装 Anaconda(Python 3.9+ 推荐)。
3. 创建 Python 虚拟环境
conda create -n vehicle_yolo python=3.9
conda activate vehicle_yolo
4. 安装必要依赖
# 安装 PyTorch(以 CUDA 11.8 为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装 YOLOv8 官方库
pip install ultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas
# 可选:TensorBoard 可视化
pip install tensorboard
# 图像查看工具
pip install pillow
验证 GPU 是否可用:
python -c "import torch; print(torch.cuda.is_available())"
# 应输出 True
✅ 二、数据集结构与 data.yaml 配置
数据目录结构
vehicle_dataset/
├── images/
│ ├── train/ # 3246 张
│ ├── val/ # 405 张
│ └── test/ # 407 张
├── labels/
│ ├── train/ # 对应的 .txt 文件 (YOLO 格式)
│ ├── val/
│ └── test/
└── data.yaml # 数据配置文件
创建 data.yaml
在项目根目录创建 data.yaml 文件:
# data.yaml
train: ./vehicle_dataset/images/train
val: ./vehicle_dataset/images/val
test: ./vehicle_dataset/images/test # 支持独立测试集评估
# 类别数量
nc: 12
# 英文类别名称(与标签顺序一致)
names:
- big bus
- big truck
- bus-l-
- bus-s-
- car
- mid truck
- small bus
- small truck
- truck-l-
- truck-m-
- truck-s-
- truck-xl-
# 中文映射(用于可视化)
names_zh:
- 大巴
- 大卡车
- 大客车-L
- 巴士-S-
- 汽车
- 中型卡车
- 小巴士
- 小卡车
- 卡车-L-
- 卡车-M-
- 卡车-S-
- 卡车-XL-
⚠️ 注意:YOLOv8 要求
names列表中的顺序与.txt标注中的类别 ID 完全对应(从 0 开始)。
✅ 三、调用 YOLOv8 官方预训练模型进行训练
由于类别较多(12类),建议使用 YOLOv8m 或 YOLOv8l 以提升分类精度。
from ultralytics import YOLO
# 加载官方预训练模型(推荐使用 yolov8m.pt)
model = YOLO('yolov8m.pt') # 自动下载预训练权重
# 开始训练
results = model.train(
data='data.yaml', # 数据配置文件
epochs=150, # 训练轮数
batch=32, # 根据显存调整(RTX 3090 可用 64)
imgsz=640, # 输入尺寸(可尝试 800 提升小车检测)
optimizer='AdamW', # 更稳定优化器
lr0=0.001, # 初始学习率
weight_decay=0.0005,
momentum=0.937,
# 数据增强(提升泛化能力)
augment=True,
hsv_h=0.015, # 色调扰动
hsv_s=0.7,
hsv_v=0.4,
degrees=10.0, # 随机旋转
translate=0.1,
scale=0.5,
shear=0.0,
flipud=0.0,
fliplr=0.5, # 左右翻转
mosaic=1.0, # Mosaic 增强
mixup=0.1, # MixUp
copy_paste=0.1, # Copy-Paste(对小车有效)
# 正则化
dropout=0.2,
label_smoothing=0.1, # 标签平滑,防止过拟合
# 学习率调度
cos_lr=True, # 余弦退火学习率
# 保存与日志
project='runs/train',
name='vehicle_yolov8m',
save=True,
save_period=10,
exist_ok=False,
# 缓存(内存充足时开启)
cache=False
)
💡 建议:
- 若显存不足,改用
yolov8s.pt或降低batch=16- 可尝试
imgsz=800提升远处小车检测能力- 使用
copy_paste增强稀有类别(如truck-xl-)
✅ 四、推理代码(单图 / 批量 / 视频)
1. 单张图像推理
from ultralytics import YOLO
from PIL import Image
# 加载最佳模型
model = YOLO('runs/train/vehicle_yolov8m/weights/best.pt')
# 推理
results = model('test_car.jpg', conf=0.4) # 设置置信度阈值
# 显示结果
for r in results:
im_array = r.plot() # 绘制边界框和标签
im = Image.fromarray(im_array[..., ::-1]) # BGR to RGB
im.show()
2. 批量图像推理
results = model.predict(
source='vehicle_dataset/images/test',
save=True,
project='runs/detect',
name='vehicle_test_results',
conf=0.4,
imgsz=640
)
print("批量推理完成")
3. 视频检测(如交通监控视频)
results = model.predict(
source='traffic_video.mp4',
save=True,
project='runs/detect/video',
name='traffic_result',
show=False,
conf=0.4
)
print("视频检测完成")
4. 实时摄像头检测(OpenCV)
import cv2
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame, conf=0.4)
annotated_frame = results[0].plot()
cv2.imshow('Vehicle Detection', annotated_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
✅ 五、模型评估(验证集 + 测试集)
1. 在验证集上评估
metrics = model.val(
data='data.yaml',
split='val',
batch=32,
imgsz=640,
save_json=False,
project='runs/val',
name='vehicle_eval'
)
print(f"mAP@0.5: {metrics.box.map50:.4f}")
print(f"mAP@0.5:0.95: {metrics.box.map:.4f}")
print(f"Precision: {metrics.box.p:.4f}")
print(f"Recall: {metrics.box.r:.4f}")
# 每类 AP
for i, name in enumerate(model.names):
print(f"{name} (AP@0.5): {metrics.box.ap[i]:.4f}")
2. 在测试集上独立评估(推荐)
# 使用 test split 进行最终性能评估
test_metrics = model.val(
data='data.yaml',
split='test',
save_json=True,
name='test_final'
)
print(f"Test mAP@0.5: {test_metrics.box.map50:.4f}")
✅ 六、可视化与分析
1. 使用中文标签显示
# 修改模型类名显示为中文
model.names = ['大巴', '大卡车', '大客车-L', '巴士-S-', '汽车', '中型卡车',
'小巴士', '小卡车', '卡车-L-', '卡车-M-', '卡车-S-', '卡车-XL-']
results = model('test.jpg')
results[0].plot() # 显示中文标签
2. 查看训练曲线
tensorboard --logdir runs/train/vehicle_yolov8m
✅ 七、模型导出(ONNX / TensorRT / TFLite)
# 导出为 ONNX(通用部署)
model.export(format='onnx', dynamic=True, opset=13, imgsz=640)
# 导出为 TensorRT(NVIDIA GPU 加速)
model.export(format='engine', half=True, dynamic=True)
# 导出为 TFLite(移动端)
model.export(format='tflite', int8=True)
# 导出为 CoreML(iOS)
model.export(format='coreml')
✅ 八、优化建议(多类别车辆检测)
| 问题 | 建议 |
|---|---|
| 类别相似(如 bus-l- vs small bus) | 使用更高分辨率(imgsz=800),增加训练 epoch |
| 小目标(远处车辆) | 启用 mosaic, copy_paste,使用 yolov8l |
| 类别不平衡 | 检查 labels/ 中各类别分布,使用 class weights |
| 过拟合 | 添加 dropout, label_smoothing, 早停 |
以上文字及代码仅供参考学习使用。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)