项目简介:本项目基于YOLO11深度学习目标检测算法,设计并实现了一个车辆检测系统。系统能够自动识别图像或视频中的车辆,为交通监控、智能停车、无人驾驶等场景提供技术支持。
1.数据集介绍
数据集
本项目数据集包含多种场景下的车辆图片,涵盖了不同类型、角度、光照条件下的车辆。所有图片均经过人工标注,标注内容包括车辆的边界框。
2.基于YOLOv11的车辆检测
修改Car/data.yaml
train: train/images
val: val/images
test: val/images
# number of classes
nc: 1
# class names
names: ['car']
启动训练
import torch
from ultralytics import YOLO
from pathlib import Path
def main():
"""快速训练主函数"""
print("🚗 车辆检测 - 快速GPU训练 (本地模型)")
print("=" * 60)
# 检查GPU
if torch.cuda.is_available():
device_name = torch.cuda.get_device_name(0)
print(f"✅ 使用GPU: {device_name}")
device = 'cuda'
else:
print("❌ GPU不可用,使用CPU")
device = 'cpu'
# 检查本地模型
model_path = "models/yolo11n.pt"
if not Path(model_path).exists():
print(f"❌ 本地模型文件不存在: {model_path}")
return
print(f"✅ 本地模型: {model_path}")
# 检查数据集
config_path = "Car/data.yaml"
if not Path(config_path).exists():
print(f"❌ 数据集配置文件不存在: {config_path}")
return
print(f"✅ 数据集配置: {config_path}")
3.训练结果分析
3.1 混淆矩阵
本图为混淆矩阵,用于展示模型在各个车辆类别上的预测准确性。横轴为真实类别,纵轴为模型预测类别。每个格子的数值表示对应真实类别被预测为某类别的样本数量。对角线上的数值表示被正确分类的样本数,越大越好。非对角线上的数值表示分类错误的样本数,数值越小越好。颜色越深表示数量越多,颜色越浅表示数量越少。从图中可以看出,绝大多数样本被正确分类,说明模型对“car”和“background”类别的区分能力较强
3.2 F1分数-置信度曲线
本图为F1-Confidence曲线,用于展示模型在车辆类别上的检测综合表现。横轴为置信度阈值,纵轴为F1分数。每个点的数值表示在对应置信度下模型对车辆的检测效果。曲线在中等置信度时达到峰值,说明此时模型兼顾了较高的精确率和召回率。对角线上的数值表示最佳F1分数,越大越好。曲线整体较为平滑且高位,说明模型对车辆类别的检测鲁棒性较好。
3.3 精度-置信度曲线
本图为Precision-Confidence曲线,用于展示模型在车辆类别上的预测精确率。横轴为置信度阈值,纵轴为精确率。每个点的数值表示在对应置信度下模型对车辆的精确率。对角线上的数值表示高置信度下的精确率,越大越好。曲线整体上升,说明随着置信度提高,模型误报减少,精确率提升。颜色越深表示精确率越高。Precision-Confidence曲线有助于分析模型在不同置信度下的误检情况,为实际应用中选择合适的置信度阈值提供参考。
3.4 精确率-召回率曲线
本图为Precision-Recall曲线,用于展示模型在车辆类别上的检测能力。横轴为召回率,纵轴为精确率。每个点的数值表示在不同召回率下的精确率。对角线上的数值表示模型在兼顾召回和精确时的表现,越靠近右上角越好。曲线下的面积即为mAP,面积越大模型性能越好。颜色越深表示样本数量越多。PR曲线有助于分析模型在不同阈值下的检测能力,为后续优化数据集或模型提供参考。
3.5 召回率-置信度曲线
本图为召回率-置信度曲线,用于展示模型在不同置信度阈值下对车辆类别的召回率表现。横轴为置信度阈值,纵轴为召回率。曲线上的每个点表示在对应置信度阈值下,模型能够正确检测出的车辆样本占所有真实车辆样本的比例。曲线整体呈下降趋势,说明随着置信度阈值的提高,模型对车辆的召回率逐渐降低。较低的置信度阈值时召回率较高,能够检测出更多车辆,但可能带来更多误报;而较高的置信度阈值时召回率降低,模型更“保守”,只检测出最有把握的目标。
4.车辆检测系统Flask Web界面与系统设计
4.1Flask简介
Flask 是一个用 Python 编写的轻量级 Web 应用框架,具有简单易用、扩展性强等特点。它非常适合快速开发和部署基于 Web 的人工智能应用。通过 Flask,可以将深度学习模型与前端界面无缝集成,实现模型的在线推理和结果可视化。
4.2开发流程
基于 Flask 开发 Web 应用通常包含以下几个步骤:
搭建后端服务,定义路由和接口;
集成深度学习模型,实现图片/视频的上传与检测;
前端页面展示检测结果,可视化标注框和类别信息;
部署上线,供用户访问和体验。
4.3车辆检测系统界面设计
本系统基于 Flask 实现了 Web 界面,用户可以通过浏览器上传图片或视频,进行车辆检测。检测结果会在网页上以可视化方式展示,支持置信度和 IoU 阈值调整,检测结果可导出。
运行方式
python app.py
启动后,访问 http://localhost:5000即可使用系统界面。