计算机视觉深度学习YOLOV8模型训练车辆种类检测数据集 车辆类别检测数据集的训练及应用 推理识别检测大巴车 卡车 汽车巴士等进行检测识别
计算机视觉深度学习YOLOV8模型训练车辆种类检测数据集 车辆类别检测数据集的训练及应用 推理识别检测大巴车 卡车 汽车巴士等进行检测识别文章目录车辆种类检测数据集信息表数据集概述类别标签对照表数据集划分及标注统计数据集研究意义data.yaml 示例内容✅ 一、环境配置1. 安装 CUDA 驱动GPU 加速2. 安装 Anaconda3. 创建 Python 虚拟环境4. 安装必要依赖✅ 二、数据集结构与 data.yaml 配置数据目录结构创建 data.yaml✅ 三、调用 YOLOv8 官方预训练模型进行训练✅ 四、推理代码单图 / 批量 / 视频1. 单张图像推理2. 批量图像推理3. 视频检测如交通监控视频4. 实时摄像头检测OpenCV✅ 五、模型评估验证集 测试集1. 在验证集上评估2. 在测试集上独立评估推荐✅ 六、可视化与分析1. 使用中文标签显示2. 查看训练曲线✅ 七、模型导出ONNX / TensorRT / TFLite✅ 八、优化建议多类别车辆检测以下文字及代码仅供参考学习使用。车辆种类检测数据集信息表数据集概述项目内容数据集名称车辆种类检测数据集总图像数量4,058 张应用场景智能交通系统ITS、自动驾驶、交通管理、路径规划、避让决策目标类别12 类车辆类型具体如下表标注格式.txtYOLO 格式归一化坐标适用模型YOLO 系列直接用于训练类别标签对照表类别编号英文名称中文名称描述0big bus大巴大型公共汽车1big truck大卡车大型货运车辆2bus-l-大客车-L长款大型公共汽车3bus-s-巴士-S-短款大型公共汽车4car汽车小型乘用车5mid truck中型卡车中型货运车辆6small bus小巴士小型公共汽车7small truck小卡车小型货运车辆8truck-l-卡车-L-长款卡车9truck-m-卡车-M-中长款卡车10truck-s-卡车-S-短款卡车11truck-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/trainval:./vehicle-detection-dataset/images/valtest:./vehicle-detection-dataset/images/testnc: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-]11你提供的车辆种类检测数据集12类共4058张图像YOLO格式非常适合用于智能交通系统ITS和自动驾驶场景中的精细化车辆分类任务。以下是完整的环境搭建 → 数据准备 → YOLOv8 训练 → 推理 → 评估 → 部署建议的全流程技术指导。✅ 一、环境配置1. 安装 CUDA 驱动GPU 加速确保你的 NVIDIA 显卡驱动已安装nvidia-smi输出应显示 GPU 信息。推荐使用CUDA 11.8 或 12.1。2. 安装 Anaconda下载并安装 AnacondaPython 3.9 推荐。3. 创建 Python 虚拟环境conda create-nvehicle_yolopython3.9conda activate vehicle_yolo4. 安装必要依赖# 安装 PyTorch以 CUDA 11.8 为例pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 YOLOv8 官方库pipinstallultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas# 可选TensorBoard 可视化pipinstalltensorboard# 图像查看工具pipinstallpillow验证 GPU 是否可用python-cimport 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.yamltrain:./vehicle_dataset/images/trainval:./vehicle_dataset/images/valtest:./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以提升分类精度。fromultralyticsimportYOLO# 加载官方预训练模型推荐使用 yolov8m.ptmodelYOLO(yolov8m.pt)# 自动下载预训练权重# 开始训练resultsmodel.train(datadata.yaml,# 数据配置文件epochs150,# 训练轮数batch32,# 根据显存调整RTX 3090 可用 64imgsz640,# 输入尺寸可尝试 800 提升小车检测optimizerAdamW,# 更稳定优化器lr00.001,# 初始学习率weight_decay0.0005,momentum0.937,# 数据增强提升泛化能力augmentTrue,hsv_h0.015,# 色调扰动hsv_s0.7,hsv_v0.4,degrees10.0,# 随机旋转translate0.1,scale0.5,shear0.0,flipud0.0,fliplr0.5,# 左右翻转mosaic1.0,# Mosaic 增强mixup0.1,# MixUpcopy_paste0.1,# Copy-Paste对小车有效# 正则化dropout0.2,label_smoothing0.1,# 标签平滑防止过拟合# 学习率调度cos_lrTrue,# 余弦退火学习率# 保存与日志projectruns/train,namevehicle_yolov8m,saveTrue,save_period10,exist_okFalse,# 缓存内存充足时开启cacheFalse)建议若显存不足改用yolov8s.pt或降低batch16可尝试imgsz800提升远处小车检测能力使用copy_paste增强稀有类别如truck-xl-✅ 四、推理代码单图 / 批量 / 视频1. 单张图像推理fromultralyticsimportYOLOfromPILimportImage# 加载最佳模型modelYOLO(runs/train/vehicle_yolov8m/weights/best.pt)# 推理resultsmodel(test_car.jpg,conf0.4)# 设置置信度阈值# 显示结果forrinresults:im_arrayr.plot()# 绘制边界框和标签imImage.fromarray(im_array[...,::-1])# BGR to RGBim.show()2. 批量图像推理resultsmodel.predict(sourcevehicle_dataset/images/test,saveTrue,projectruns/detect,namevehicle_test_results,conf0.4,imgsz640)print(批量推理完成)3. 视频检测如交通监控视频resultsmodel.predict(sourcetraffic_video.mp4,saveTrue,projectruns/detect/video,nametraffic_result,showFalse,conf0.4)print(视频检测完成)4. 实时摄像头检测OpenCVimportcv2 capcv2.VideoCapture(0)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame,conf0.4)annotated_frameresults[0].plot()cv2.imshow(Vehicle Detection,annotated_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()✅ 五、模型评估验证集 测试集1. 在验证集上评估metricsmodel.val(datadata.yaml,splitval,batch32,imgsz640,save_jsonFalse,projectruns/val,namevehicle_eval)print(fmAP0.5:{metrics.box.map50:.4f})print(fmAP0.5:0.95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})# 每类 APfori,nameinenumerate(model.names):print(f{name}(AP0.5):{metrics.box.ap[i]:.4f})2. 在测试集上独立评估推荐# 使用 test split 进行最终性能评估test_metricsmodel.val(datadata.yaml,splittest,save_jsonTrue,nametest_final)print(fTest mAP0.5:{test_metrics.box.map50:.4f})✅ 六、可视化与分析1. 使用中文标签显示# 修改模型类名显示为中文model.names[大巴,大卡车,大客车-L,巴士-S-,汽车,中型卡车,小巴士,小卡车,卡车-L-,卡车-M-,卡车-S-,卡车-XL-]resultsmodel(test.jpg)results[0].plot()# 显示中文标签2. 查看训练曲线tensorboard--logdirruns/train/vehicle_yolov8m✅ 七、模型导出ONNX / TensorRT / TFLite# 导出为 ONNX通用部署model.export(formatonnx,dynamicTrue,opset13,imgsz640)# 导出为 TensorRTNVIDIA GPU 加速model.export(formatengine,halfTrue,dynamicTrue)# 导出为 TFLite移动端model.export(formattflite,int8True)# 导出为 CoreMLiOSmodel.export(formatcoreml)✅ 八、优化建议多类别车辆检测问题建议类别相似如 bus-l- vs small bus使用更高分辨率imgsz800增加训练 epoch小目标远处车辆启用mosaic,copy_paste使用yolov8l类别不平衡检查labels/中各类别分布使用class weights过拟合添加dropout,label_smoothing, 早停以上文字及代码仅供参考学习使用。