# 车辆识别
**Repository Path**: sys_one/vehicle-recognition
## Basic Information
- **Project Name**: 车辆识别
- **Description**: 车辆识别并统计车流量
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-24
- **Last Updated**: 2026-01-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Vehicle-YOLO 🚗




**基于 YOLOv8 的高效车辆检测与智能交通流量统计系统**
[特性](#-核心特性-features) • [安装](#-环境要求与安装-installation) • [快速开始](#-快速开始-quick-start) • [文档](#-使用文档-documentation) • [贡献](#-贡献指南-contributing)
---
## 📖 项目简介 (Introduction)
**Vehicle-YOLO** 是一个开源的智能交通分析解决方案,基于强大的 Ultralytics YOLOv8 框架开发。本项目不仅仅是一个物体检测器,更是一个完整的交通流统计工具链。
它旨在解决道路监控场景下的**车辆精确检测**与**流量自动统计**问题。通过集成先进的目标追踪(Object Tracking)算法,系统能够对视频流中的车辆进行去重计数,并自动生成标准化的 Excel 数据报表,极大地简化了交通数据分析流程。
## ✨ 核心特性 (Features)
- 🎯 **高精度检测**:基于 YOLOv8 State-of-the-Art 模型,支持多尺度车辆检测。
- 🔄 **智能去重计数**:内置目标追踪算法 (ByteTrack/BoT-SORT),有效解决车辆重复计数问题,统计独立车流。
- 📊 **自动报表生成**:检测结果实时汇总,自动导出为 `.xlsx` 格式,支持多视频数据自动追加合并。
- ⚔️ **多策略训练**:提供“强增广”与“无预处理”双重训练模式,便于科研对比与模型调优。
- ⚡ **跨平台支持**:完美适配 CPU/GPU 环境,支持 Windows/Linux 系统部署。
## 🎁 项目结构 (Project Structure)
```text
Vehicle-YOLO/
├── datasets/ # 数据集存储目录
│ └── vehicle/ # 车辆数据集 (标准 YOLO 格式)
├── logs/ # 训练日志与运行记录
├── runs/ # 模型训练输出 (权重 .pt、PR曲线、混淆矩阵)
├── traffic_stats/ # 统计结果输出目录 (Excel 报表)
├── training_scripts/ # 核心功能脚本
│ ├── train_default_yolo.py # 🚀 标准训练脚本 (含数据增广)
│ ├── train_no_preprocess.py # 🔬 实验对照训练脚本 (无预处理)
│ └── predict_video.py # 🎥 视频推理与计数脚本
├── utils/ # 工具函数库
│ ├── counter.py # 核心计数逻辑与 Excel 生成器
│ └── logger.py # 日志管理模块
├── dataset.yaml # YOLO 数据集配置文件
└── requirements.txt # 项目依赖清单
```
## 🛠️ 环境要求与安装 (Installation)
### 前置要求
- Python 3.8 或更高版本
- CUDA Toolkit (如果需要 GPU 加速)
### 安装步骤
您可以选择 **源码安装** 或 **使用离线压缩包**。
#### 方式一:从源码安装 (通过 Git)
1. **克隆仓库**
```bash
git clone https://gitee.com/sys_one/vehicle-recognition.git
cd Vehicle
```
2. **创建虚拟环境**
```bash
conda create -n vehicle python=3.9
conda activate vehicle
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
#### 方式二:使用离线包 (通过 Zip)
如果您已下载本项目的发布包 `Vehicle.zip`:
1. **解压并进入目录**
解压压缩包,在终端中进入解压后的文件夹。
> 该压缩包经过精简,已自动排除缓存文件,并包含以下核心内容:
> - 📂 `datasets/`, `training_scripts/`, `utils/`
> - 📂 `traffic_stats/` (包含生成的报表)
> - 📄 `dataset.yaml`, `requirements.txt`, `README.md`
> - ⚖️ `runs/detect/vehicle_default_aug/weights/best.pt` (训练好的最佳权重)
2. **创建环境并安装依赖**
```bash
conda create -n vehicle python=3.9
conda activate vehicle
pip install -r requirements.txt
```
> 💡 **提示**: Windows 用户如果安装 `lapx` (包含在 requirements.txt 中) 遇到编译错误,建议安装 Microsoft C++ Build Tools 或直接下载对应版本的 `.whl` 文件安装。
## 🎯 快速开始 (Quick Start)
### 1. 数据准备
请确保您的数据集遵循 YOLO 格式并存放在 `datasets/vehicle/` 目录下:
- `images/`: 存放图片文件 (`train/`, `val/`, `test/`)
- `labels/`: 存放标签文件 (`train/`, `val/`, `test/`)
配置文件 `dataset.yaml` 应如下所示:
```yaml
path: ./datasets/vehicle
train: images/train
val: images/val
names:
0: vehicle
```
### 2. 模型训练 (Model Training)
我们提供了两种训练模式以适应不同的需求:
#### 🅰️ 生产模式 (推荐)
使用 YOLOv8 默认的 Mosaic 等强增广策略,模型鲁棒性更好。
```bash
python training_scripts/train_default_yolo.py --data dataset.yaml --name vehicle_default_aug --epochs 50
```
#### 🅱️ 实验模式
关闭所有预处理和增广,仅进行基础训练,用于验证原始数据质量或特定实验对照。
```bash
python training_scripts/train_no_preprocess.py --data dataset.yaml --name vehicle_no_aug --epochs 50
```
**关键参数说明:**
| 参数 | 说明 | 默认值 |
| :--- | :--- | :--- |
| `--data` | 数据集配置文件路径 | `dataset.yaml` |
| `--epochs` | 训练轮次 | `50` |
| `--batch` | 批次大小 | `16` |
| `--device` | 运行设备 (`cpu`, `0`, `0,1`) | `0` |
### 3. 视频流量统计 (Video Counting)
使用训练好的模型对视频文件进行推理,并自动生成流量统计报表。
```bash
python training_scripts/predict_video.py \
--video datasets/vehicle/videos/video1.mp4 \
--model runs/detect/vehicle_default_aug/weights/best.pt \
--output-excel traffic_stats/video_summary.xlsx \
--device cpu
```
**输出结果:**
脚本运行完成后,`traffic_stats/video_summary.xlsx` 将会自动更新,包含以下字段:
- **Video Name**: 视频文件名
- **Total Frames**: 处理的总帧数
- **Total Unique Vehicles**: 统计到的独立车辆总数
## 📊 结果示例 (Results)
### 1. 视频流量统计 (Video Counting)
生成的 Excel 报表 (`video_summary.xlsx`) 格式如下,支持多次运行自动追加数据:
| Video Name | Total Frames | Total Unique Vehicles |
| :--- | :--- | :--- |
| video1.mp4 | 35 | 54 |
| video2.mp4 | 53 | 59 |
| vidoe3.mp4 | 32 | 66 |
| video4.mp4 | 27 | 51 |
**识别结果视频预览**
*(点击以下链接查看完整视频)*
- 🎥 [查看视频 1 (video1.avi)](runs/detect/video1_run/video1.avi)
> ⚠️ **说明**:
> - **Excel 报表**: 存储在 `traffic_stats/video_summary.xlsx`,包含流量统计数据。
> - **可视化视频**: 存储在 `runs/detect/<视频名>_run/` 目录下,包含带追踪ID和边框的识别结果视频。
### 2. 静态图片检测 (Image Detection)
**验证集预测样本**
*(左侧为真实标签,右侧为模型预测结果)*

> ⚠️ **说明**:
> - **Excel 报表**: 存储在 `traffic_stats/<模型名>_counts.xlsx`(例如 `vehicle_default_aug_counts.xlsx`),记录了测试集中每一张图片的车辆数量。
> - **可视化结果**: 训练或预测完成后,带标注的图片和预测标签保存在 `runs/detect/<模型名>/` 目录下。
> - **如何运行**: 在训练脚本中添加 `--predict-test` 参数(如 `python training_scripts/train_default_yolo.py ... --predict-test`),即可在训练结束后自动对测试集进行预测统计。
## 📈 训练性能与可视化 (Performance & Visualization)
本节展示了两种不同训练策略的模型性能对比。
### 🅰️ 模型一:默认强增广 (Default Augmentation)
*训练脚本:`train_default_yolo.py` (50 Epochs)*
#### 1. 核心指标 (Key Metrics)
| Metric | Value | 说明 |
| :--- | :--- | :--- |
| **Precision (P)** | **0.590** | 查准率:预测准确性较高 |
| **Recall (R)** | **0.500** | 查全率:能检测出一半的真实目标 |
| **mAP@50** | **0.436** | 基础检测能力 |
| **mAP@50-95** | **0.200** | 高精度定位能力 |
#### 2. 可视化结果 (Visualization)
点击展开详细图表
**损失与指标变化曲线**

**混淆矩阵 (Confusion Matrix)**

**PR 曲线 (Precision-Recall Curve)**

**验证集预测样本**

---
### 🅱️ 模型二:无预处理 (No Preprocess)
*训练脚本:`train_no_preprocess.py` (50 Epochs)*
*特点:关闭 Mosaic、Mixup 等所有数据增广,仅使用原始数据训练。*
#### 1. 核心指标 (Key Metrics)
| Metric | Value | 说明 |
| :--- | :--- | :--- |
| **Precision (P)** | **0.476** | 相比默认增广模型下降约 19% |
| **Recall (R)** | **0.322** | 相比默认增广模型下降明显 |
| **mAP@50** | **0.233** | 基础检测能力较弱 |
| **mAP@50-95** | **0.112** | 定位精度较低 |
#### 2. 可视化结果 (Visualization)
点击展开详细图表
**损失与指标变化曲线**

**混淆矩阵 (Confusion Matrix)**

**PR 曲线 (Precision-Recall Curve)**

**验证集预测样本**

## 🤝 贡献指南 (Contributing)
欢迎任何形式的贡献!如果您有好的建议或发现了 Bug,请随时提交 Issue 或 Pull Request。
## 📄 许可证 (License)
本项目采用 [MIT License](LICENSE) 许可证。
## � 致谢 (Acknowledgements)
- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics)
- [Pandas](https://pandas.pydata.org/)
## 🎯 应用场景 (Scenarios)
- 城市道路交通流量监控
- 停车场车辆出入统计
- 高速公路车流密度分析
## 📝 更新日志 (Changelog)
### [2025-11-23] - Initial Release
- 发布基于 自定义模型 的车辆检测与流量统计系统
- 支持视频流车辆去重计数与 Excel 报表自动生成
### [2026-01-08] - Initial Release
- 发布基于 YOLOv8 的车辆检测与流量统计系统
- 支持视频流车辆去重计数与 Excel 报表自动生成
- 提供默认强增广与无预处理两种训练模式对比