# 车辆识别2 **Repository Path**: sys_one/vehicle-identification ## Basic Information - **Project Name**: 车辆识别2 - **Description**: 车辆识别 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-30 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 隧道车流量统计系统 专注车辆识别与车流量精准统计,支持单图/批量图片、单视频/批量视频处理,提供命令行与 GUI 双操作模式,输出结构化统计报表与可视化标注结果。 ### ☁️项目概述 系统基于 YOLOv8 目标检测算法,实现隧道场景下车辆的实时识别与计数,输出瞬时车流量(辆/分钟)与车流密度(0-10 级量化)数据。支持离线批量处理与在线视频流分析,满足隧道车流监测的精准化、自动化需求。 ### 🌈软件架构 ``` Project2/ ├── src/ # 核心源代码目录 ├── config/ # 配置文件目录 ├── data/ # 数据存储目录 ├── external/ # 外部数据(如天气数据) ├── processed/ # 处理后的数据 └── raw/ # 原始数据 ├── annotations/ # 标注数据 ├── images/ # 图像数据 └── videos/ # 视频数据 ├── outputs/ # 输出结果目录 ├── logs/ # 日志文件 ├── reports/ # 统计报告(Excel、JSON) └── visualizations/ # 可视化结果 ├── models/ # 模型存储目录 ├── test/ # 测试代码目录 ├── main.py # 主程序入口 └── README.md # 项目说明文档 ``` #### 🚗 车辆识别与车流分析模块 1. 目标检测:基于 YOLOv8 实现车辆精准识别,支持轿车、货车、客车等常见车型,过滤非车辆目标(行人、非机动车等)。 2. 车流量计算 ◦ 图像模式:单张图片直接输出车辆总数;批量图片输出每图车辆数及汇总统计。 ◦ 视频模式:基于帧计数统计瞬时车流量(辆/分钟),结合时间窗口计算车流密度(0-10 级);支持 DeepSORT 多目标跟踪,解决车辆跨帧重复计数问题。 3. 性能指标:GPU 环境下处理帧率≥25FPS,单帧检测耗时≤40ms;车辆识别准确率≥95%(隧道场景)。 4. 异常预警:识别到行人、非机动车闯入时,自动生成告警日志并标记异常帧。 5. 结果输出:保存带检测边界框的可视化图像/视频帧;生成 Excel 汇总报表、CSV 详细数据、JSON 统计结果。 车流量统计:对汽车数量进行精确计数,支持单张图片和批量图片统计。 异常预警:对高速场景中的非汽车类危险目标生成针对性警告信息。 结果可视化:保存标注了检测边界框和类别信息的图像。 数据记录:生成 CSV 格式的详细统计报告、TXT 格式的统计摘要,并将历史数据汇总到 Excel 文件。 ### 🏷️特性概览 - 车辆识别与车流分析(YOLOv8 / 增强检测器) - 单图/批量图片识别与统计导出 - 单视频/批量视频处理、跟踪与统计导出 ### 🎦安装与环境 #### 核心技术栈 深度学习:YOLOv8(目标检测)、PyTorch(模型推理); 数据处理:NumPy(数值计算)、Pandas(数据分析)、OpenCV(图像处理); 可视化与接口:FastAPI(后端 API)、Matplotlib/Plotly(数据可视化)、Vue.js(前端页面); 部署环境:Python 3.8+、Linux/Windows。 #### 环境依赖 Python 3.8+ PyTorch 1.7+ OpenCV 4.0+(图像处理) NumPy ultralytics(YOLOv8 官方库) pandas & openpyxl(数据统计与 Excel 操作) logging(日志管理) 依赖包:详见requirements.txt,核心依赖如下 ``` ultralytics>=8.0.0 opencv-python>=4.8.0 numpy>=1.24.0 pandas>=2.0.0 torch>=2.0.0 torchvision>=0.15.0 scikit-learn>=1.3.0 deep-sort-realtime>=1.3.0 ``` #### 硬件要求 | 场景 | CPU | 内存 | GPU(可选) | 外设 | |-------|-----------------------|------|------------------|------------| | 开发/测试 | Intel i5+/AMD Ryzen5+ | 8GB+ | NVIDIA GTX 1060+ | 摄像头 / 视频文件 | ### 📖快速开始 #### 1、克隆项目 ``` git clone https://gitee.com/sys_one/light-adjustment.git cd Project2 ``` #### 2、安装依赖 ``` # 创建虚拟环境(推荐) conda create -n car python=3.9 conda activate car # 安装依赖包 pip install -r requirements.txt ``` #### 3. 配置 - 模型路径与参数可在 `models/` 与 `config/` 中调整(如 YOLO 权重与置信度阈值) #### 4. 命令行用法 ``` # 启动图形界面 python main.py gui # 单张图片识别并导出统计(默认YOLO) python main.py image e:\pythonPJ\Project2\data\raw\images\input\21.png --output outputs\images --model yolo # 批量图片识别(整目录),导出Excel + 标注图片 python main.py images e:\pythonPJ\Project2\data\raw\images\input --output outputs\images --model yolo # 结果:outputs/images/batch_image_detection_results.xlsx # 单视频处理 python main.py single e:\pythonPJ\Project2\data\raw\videos\input\video1.mp4 --output outputs --model deepsort --roi 100,100,800,400 # 批量视频处理(整目录) python main.py batch e:\pythonPJ\Project2\data\raw\videos\input --output outputs # 多视频分析(含汇总) python main.py multi e:\pythonPJ\Project2\data\raw\videos\input --output outputs --model deepsort # 查看版本 python main.py version ``` 参数说明(与子命令相关): - `gui`:启动桌面界面 - `image`:处理单张图片;`--model` 取值 `yolo|enhanced` - `images`:批量处理图片目录;输出 Excel `batch_image_detection_results.xlsx` - `single`:处理单个视频;`--model` 取值 `basic|cnn_lstm|deepsort`;可选 `--roi x,y,w,h` - `batch`:批量处理视频目录 - `multi`:多视频分析汇总 #### 5. 数据准备 ``` ├── data/ # 数据存储目录 ├── external/ # 外部数据 ├── processed/ # 处理后的数据 └── raw/ # 原始数据 ├── annotations/ # 标注数据 ├── images/ # 图像数据 └── videos/ # 视频数据 ``` ### 📚使用说明 #### GUI 使用 - 启动:`python main.py gui` - 单图识别:选择图片,选择检测器(YOLO/Enhanced),结果直接显示车辆数、并保存标注图与统计JSON - 批量图片识别: - 选择“图片文件夹”“输出目录”“模型”,点击“运行批量图片识别” - 界面显示“预计剩余时间”与进度条,完成后日志显示 Excel 路径 - 点击“打开导出的Excel”可直接打开 `batch_image_detection_results.xlsx` - 视频识别:选择视频与模型(推荐 `deepsort`),可选设置 `ROI x,y,w,h`;界面实时显示车辆数 - 训练曲线:点击“生成训练曲线图”,自动合成 10 张指标图为 2×5 网格 `results_grid.png` #### 输出文件 - 图片标注:`outputs/images/detected_*.png/jpg` - 单图统计:`outputs/images/image_stats.json` - 批量图片统计:`outputs/images/batch_image_detection_results.xlsx` - 单视频统计:`outputs/basic_stats.json` 或 `outputs/deepsort_stats.json` - 批量/多视频汇总:`outputs/vehicle_count_results.xlsx`、`outputs/deepsort_stats.xlsx` ### 🔎核心模块简述 目标检测(YOLOv8)与亮度决策的核心示例: 1. 目标检测模块 ``` from ultralytics import YOLO class YOLODetector: def __init__(self, model_path, conf_threshold=0.5): self.model = YOLO(model_path) self.conf = conf_threshold def detect(self, frame): results = self.model(frame, conf=self.conf, classes=[2,3,5,7]) # 仅检测车辆类别 vehicles = [] for box in results[0].boxes: x1, y1, x2, y2 = map(int, box.xyxy[0]) cls = int(box.cls) vehicles.append({"bbox": (x1,y1,x2,y2), "class": cls}) return vehicles, len(vehicles) # 车辆列表、数量 ``` ### ‼️FAQ 故障排除 #### 常见问题 1. YOLO 模型加载失败 → 检查model.yaml中模型路径是否正确,确保models/目录下存在对应.pt文件; → 若网络问题导致预训练模型无法自动下载,手动下载后 放入models/。 2. 检测帧率过低 → 启用 GPU 加速(安装 CUDA 版 PyTorch); → 降低输入分辨率(如--imgsz 480)或使用轻量化模型(YOLOv8n)。 3. 性能问题 → 降低处理帧率 → 启用GPU加速 ### 🔍效果验证 1.对图片车辆识别统计车流量 ![输入图片说明](show/21_detected.jpg) ![输入图片说明](show/img_12_detected.jpg) 2.对视频车辆识别统计车流量 ![输入图片说明](show/1f32b568cc80d7cc17e0bf1096b32b9e.png) 3.对视频车辆识别显示车辆轨迹 ![输入图片说明](show/7a9b6f7332b66bfec9a1ff6c452121be.png) ### 🤖响应速度 单帧检测耗时:≤40ms(GPU 环境)/ ≤150ms(CPU 环境); 亮度调控指令下发延迟:≤500ms。 ### ✍️更新日志 v1.0.0 (2025-11-10) 初始版本发布 实现基本车辆 v1.1.0(2025-11-20) 新增天气识别模块; 优化决策算法,提升节能率至 50%+ ``` 使用先进的目标检测模型作为基础,但需要针对遮挡进行优化。 利用视频序列信息(如果是视频)进行跟踪,使用DeepSORT等算法。 采用专门针对遮挡设计的检测或分割方法。 使用数据增强技术,模拟遮挡情况,提高模型鲁棒性。 引入注意力机制,让模型更关注可见部分。 使用多尺度特征融合,以检测被遮挡的小目标。 ______________________________________________________________ 输入视频流/图像序列 ↓ 改进的遮挡感知检测模块 (Occlusion-Aware YOLOv8) ↓ 多特征融合跟踪模块 (Enhanced DeepSORT) ↓ 遮挡推理与恢复模块 (Occlusion Reasoning) ↓ 输出:带状态标注的车辆轨迹