diff --git a/docs/traffic_violation_detection/index.md b/docs/traffic_violation_detection/index.md new file mode 100644 index 0000000000..c4469db168 --- /dev/null +++ b/docs/traffic_violation_detection/index.md @@ -0,0 +1,146 @@ +# 基于CARLA的自动驾驶交通违章检测仿真平台 +本项目基于 CARLA 自动驾驶仿真平台,实现了一套**多场景、多维度的交通违章检测系统**,支持车辆自动驾驶、多天气场景切换、交通标志自动标注,同时集成了基于纯视觉的超速与闯红灯违章检测功能,可直接生成带VOC格式标注的数据集,为后续违章识别模型训练提供高质量数据。 + +--- + +## 一、项目背景与目标 +在自动驾驶场景中,交通违章检测是保障行车安全的核心环节。本项目以CARLA仿真平台为载体,旨在通过车载相机图像实现**无模拟器后门的纯视觉违章检测**,同时完成多天气场景下的交通标志数据采集,为违章识别模型的训练提供真实、多样的仿真数据支撑。 + +--- + +## 二、核心功能实现 +以下为项目迭代过程中已成功实现的核心功能(对应提交记录): + +| 序号 | 功能模块 | 实现说明 | +| :--- | :--- | :--- | +| 1 | 基础框架搭建 | 完成选题,搭建CARLA仿真环境,编写项目README文档,构建系统基础运行框架 | +| 2 | 多天气场景数据采集 | 实现雨天、晴天、夜间、雾天4种天气自动切换,自动采集交通标志数据并生成带VOC标注的数据集 | +| 3 | 自动驾驶与基础违章检测 | 实现车辆自动驾驶,新增实时车速显示、超速检测、闯红灯检测功能 | +| 4 | 图像识别红绿灯 | 移除模拟器API依赖,通过图像识别算法实现纯视觉红绿灯状态检测 | +| 5 | 夜间/弱光红绿灯优化 | 新增图像亮度自适应增强算法,解决夜间、雾天等弱光场景下红绿灯识别准确率低的问题 | +| 6 | 违章次数统计 | 实现超速、闯红灯违章次数的实时统计与画面显示,避免同一违章重复计数 | + +--- + +## 三、核心模块技术说明 +### 3.1 纯视觉红绿灯检测模块 +本模块摒弃了CARLA原生的信号灯状态读取API,采用基于HSV颜色空间的图像处理算法实现红绿灯识别,核心流程如下: +1. **亮度自适应判断**:通过计算图像灰度均值,区分白天与弱光/夜间场景。 +2. **图像增强**:弱光场景下自动通过线性变换提亮图像,提升信号灯可见度。 +3. **颜色分割**:利用HSV颜色空间的双区间阈值分割红色信号灯区域。 +4. **形态学去噪**:通过开运算去除噪声干扰,保留信号灯主体区域。 +5. **自适应阈值判定**:白天采用较高像素阈值,夜间降低阈值防止漏检,最终输出红灯状态。 + +### 3.2 超速检测与违章统计模块 +1. **实时车速计算**:通过车辆速度向量计算实际行驶速度(km/h),并实时显示在画面中。 +2. **固定限速判定**:默认限速50km/h,当车速超过限速时判定为超速违章。 +3. **违章次数统计**:通过记录上一帧违章状态,仅在违章状态从无到有时计数一次,避免重复统计。 + +### 3.3 多天气场景切换与数据采集模块 +1. **天气自动切换**:每10秒自动切换一次天气场景(雨天/晴天/夜间/雾天),覆盖多种行车环境。 +2. **交通标志检测**:通过3D世界坐标投影,将交通标志的边界框映射到图像平面,自动生成标注。 +3. **VOC格式标注生成**:自动保存采集到的图像,并生成包含交通标志位置、天气信息、违章状态的XML标注文件。 + +--- + +## 四、关键技术难点与解决方案 +| 难点 | 解决方案 | +| :--- | :--- | +| 弱光场景红绿灯识别准确率低 | 采用亮度自适应增强+双区间HSV分割+自适应像素阈值,提升夜间、雾天识别稳定性 | +| 同一违章行为重复计数 | 记录上一帧违章状态,仅在状态由无到有时执行计数 | +| 不同天气场景下的图像差异 | 支持多天气自动切换,同时在标注文件中记录天气类别,便于后续模型训练 | +| 纯视觉方案无模拟器依赖 | 全程仅通过车载相机图像进行违章检测,不调用CARLA原生交通信号灯API | + +--- + +## 五、系统运行流程 +1. **环境初始化**:连接CARLA服务器,加载Town05地图,配置同步模式与自动驾驶车辆。 +2. **传感器设置**:生成车载RGB相机,配置图像分辨率与FOV参数,建立图像队列。 +3. **主循环执行**: + - 世界步进更新,处理车辆控制输入。 + - 获取相机图像,执行违章检测逻辑。 + - 切换天气场景,检测并标注交通标志。 + - 绘制违章信息与统计次数,显示并保存图像与标注文件。 +4. **退出与资源释放**:关闭窗口,销毁车辆、相机等仿真资源,结束程序。 + +--- + +## 六、项目总结与展望 +本项目成功实现了基于CARLA的自动驾驶交通违章检测仿真平台,完成了多天气场景下的交通标志数据采集,以及纯视觉的超速与闯红灯违章检测,系统稳定性与准确率满足仿真场景需求。 + +后续可优化方向: +- 引入深度学习模型,实现更复杂的交通标志与信号灯识别。 +- 扩展更多违章类型,如车道偏离、不礼让行人等。 +- 优化违章计数逻辑,支持自定义限速路段与动态限速识别。# 基于CARLA的自动驾驶交通违章检测仿真平台 +本项目基于 CARLA 自动驾驶仿真平台,实现了一套**多场景、多维度的交通违章检测系统**,支持车辆自动驾驶、多天气场景切换、交通标志自动标注,同时集成了基于纯视觉的超速与闯红灯违章检测功能,可直接生成带VOC格式标注的数据集,为后续违章识别模型训练提供高质量数据。 + +--- + +## 一、项目背景与目标 +在自动驾驶场景中,交通违章检测是保障行车安全的核心环节。本项目以CARLA仿真平台为载体,旨在通过车载相机图像实现**无模拟器后门的纯视觉违章检测**,同时完成多天气场景下的交通标志数据采集,为违章识别模型的训练提供真实、多样的仿真数据支撑。 + +--- + +## 二、核心功能实现 +以下为项目迭代过程中已成功实现的核心功能(对应提交记录): + +| 序号 | 功能模块 | 实现说明 | +| :--- | :--- | :--- | +| 1 | 基础框架搭建 | 完成选题,搭建CARLA仿真环境,编写项目README文档,构建系统基础运行框架 | +| 2 | 多天气场景数据采集 | 实现雨天、晴天、夜间、雾天4种天气自动切换,自动采集交通标志数据并生成带VOC标注的数据集 | +| 3 | 自动驾驶与基础违章检测 | 实现车辆自动驾驶,新增实时车速显示、超速检测、闯红灯检测功能 | +| 4 | 图像识别红绿灯 | 移除模拟器API依赖,通过图像识别算法实现纯视觉红绿灯状态检测 | +| 5 | 夜间/弱光红绿灯优化 | 新增图像亮度自适应增强算法,解决夜间、雾天等弱光场景下红绿灯识别准确率低的问题 | +| 6 | 违章次数统计 | 实现超速、闯红灯违章次数的实时统计与画面显示,避免同一违章重复计数 | + +--- + +## 三、核心模块技术说明 +### 3.1 纯视觉红绿灯检测模块 +本模块摒弃了CARLA原生的信号灯状态读取API,采用基于HSV颜色空间的图像处理算法实现红绿灯识别,核心流程如下: +1. **亮度自适应判断**:通过计算图像灰度均值,区分白天与弱光/夜间场景。 +2. **图像增强**:弱光场景下自动通过线性变换提亮图像,提升信号灯可见度。 +3. **颜色分割**:利用HSV颜色空间的双区间阈值分割红色信号灯区域。 +4. **形态学去噪**:通过开运算去除噪声干扰,保留信号灯主体区域。 +5. **自适应阈值判定**:白天采用较高像素阈值,夜间降低阈值防止漏检,最终输出红灯状态。 + +### 3.2 超速检测与违章统计模块 +1. **实时车速计算**:通过车辆速度向量计算实际行驶速度(km/h),并实时显示在画面中。 +2. **固定限速判定**:默认限速50km/h,当车速超过限速时判定为超速违章。 +3. **违章次数统计**:通过记录上一帧违章状态,仅在违章状态从无到有时计数一次,避免重复统计。 + +### 3.3 多天气场景切换与数据采集模块 +1. **天气自动切换**:每10秒自动切换一次天气场景(雨天/晴天/夜间/雾天),覆盖多种行车环境。 +2. **交通标志检测**:通过3D世界坐标投影,将交通标志的边界框映射到图像平面,自动生成标注。 +3. **VOC格式标注生成**:自动保存采集到的图像,并生成包含交通标志位置、天气信息、违章状态的XML标注文件。 + +--- + +## 四、关键技术难点与解决方案 +| 难点 | 解决方案 | +| :--- | :--- | +| 弱光场景红绿灯识别准确率低 | 采用亮度自适应增强+双区间HSV分割+自适应像素阈值,提升夜间、雾天识别稳定性 | +| 同一违章行为重复计数 | 记录上一帧违章状态,仅在状态由无到有时执行计数 | +| 不同天气场景下的图像差异 | 支持多天气自动切换,同时在标注文件中记录天气类别,便于后续模型训练 | +| 纯视觉方案无模拟器依赖 | 全程仅通过车载相机图像进行违章检测,不调用CARLA原生交通信号灯API | + +--- +## 五、系统运行流程 +1. **环境初始化**:连接CARLA服务器,加载Town05地图,配置同步模式与自动驾驶车辆。 +2. **传感器设置**:生成车载RGB相机,配置图像分辨率与FOV参数,建立图像队列。 +3. **主循环执行**: + - 世界步进更新,处理车辆控制输入。 + - 获取相机图像,执行违章检测逻辑。 + - 切换天气场景,检测并标注交通标志。 + - 绘制违章信息与统计次数,显示并保存图像与标注文件。 +4. **退出与资源释放**:关闭窗口,销毁车辆、相机等仿真资源,结束程序。 + +--- + +## 六、项目总结与展望 +本项目成功实现了基于CARLA的自动驾驶交通违章检测仿真平台,完成了多天气场景下的交通标志数据采集,以及纯视觉的超速与闯红灯违章检测,系统稳定性与准确率满足仿真场景需求。 + +后续可优化方向: +- 引入深度学习模型,实现更复杂的交通标志与信号灯识别。 +- 扩展更多违章类型,如车道偏离、不礼让行人等。 +- 优化违章计数逻辑,支持自定义限速路段与动态限速识别。 \ No newline at end of file diff --git a/src/traffic_violation_detection/README.md b/src/traffic_violation_detection/README.md index ae6cd9dbec..e1e77628a8 100644 --- a/src/traffic_violation_detection/README.md +++ b/src/traffic_violation_detection/README.md @@ -1,148 +1,74 @@ - # CARLA 交通标志自动采集与标注系统 -基于 CARLA 模拟器的**交通标志数据集自动化采集工具**,支持多天气场景切换、自动驾驶巡航、交通标志实时检测与 VOC 格式标注自动生成,专为交通违章检测/交通标志识别模型训练提供高质量数据集。 - -## 📋 项目简介 -本项目基于 **CARLA 0.9.11** 自动驾驶仿真平台,实现交通标志数据的全自动采集与标注: -- 自动巡航采集道路场景,无需手动驾驶 -- 晴/雨/雾/夜间 4 种天气自动切换 -- 实时检测交通标志并生成标准 VOC 格式 XML 标注文件 -- 内置非极大值抑制(NMS)去除重复框 -- 相机画面实时可视化,数据一键保存 - -适配**驾驶违章检测、交通标志识别、自动驾驶视觉感知**等模型训练数据集制作。 +# 基于CARLA的自动驾驶交通违章检测仿真平台 +本项目基于 CARLA 自动驾驶仿真平台,实现了一套**多场景、多维度的交通违章检测系统**,支持车辆自动驾驶、多天气场景切换、交通标志自动标注,同时集成了基于纯视觉的超速与闯红灯违章检测功能,可直接生成带VOC格式标注的数据集,为后续违章识别模型训练提供高质量数据。 --- -## ✨ 核心功能 -1. **自动化数据采集**:车辆自动驾驶巡航,自动捕获交通标志图像 -2. **多场景天气**:支持晴天、雨天、雾天、夜间自动循环切换 -3. **精准标注**:自动计算交通标志 2D 边界框,生成 VOC 标准 XML 标注 -4. **后处理优化**:NMS 去重、距离过滤、视野内有效框筛选 -5. **手动接管**:支持键盘临时控制车辆行驶 -6. **同步仿真**:CARLA 同步模式运行,数据采集稳定无丢帧 +## 一、项目背景与目标 +在自动驾驶场景中,交通违章检测是保障行车安全的核心环节。本项目以CARLA仿真平台为载体,旨在通过车载相机图像实现**无模拟器后门的纯视觉违章检测**,同时完成多天气场景下的交通标志数据采集,为违章识别模型的训练提供真实、多样的仿真数据支撑。 --- -## 🧰 环境依赖 -### 基础环境 -- Python 3.7 -- CARLA 0.9.11(WindowsNoEditor 版本) -- Windows 系统 +## 二、核心功能实现 +以下为项目迭代过程中已成功实现的核心功能(对应提交记录): -### Python 库安装 -```bash -pip install pygame opencv-python numpy -``` +| 序号 | 功能模块 | 实现说明 | +| :--- | :--- | :--- | +| 1 | 基础框架搭建 | 完成选题,搭建CARLA仿真环境,编写项目README文档,构建系统基础运行框架 | +| 2 | 多天气场景数据采集 | 实现雨天、晴天、夜间、雾天4种天气自动切换,自动采集交通标志数据并生成带VOC标注的数据集 | +| 3 | 自动驾驶与基础违章检测 | 实现车辆自动驾驶,新增实时车速显示、超速检测、闯红灯检测功能 | +| 4 | 图像识别红绿灯 | 移除模拟器API依赖,通过图像识别算法实现纯视觉红绿灯状态检测 | +| 5 | 夜间/弱光红绿灯优化 | 新增图像亮度自适应增强算法,解决夜间、雾天等弱光场景下红绿灯识别准确率低的问题 | +| 6 | 违章次数统计 | 实现超速、闯红灯违章次数的实时统计与画面显示,避免同一违章重复计数 | --- -## 📁 项目结构 -``` -项目根目录/ -├── OutPut/ -│ └── data01/ # 自动生成:图片 + XML 标注文件 -├── xxx.py # 主采集代码文件 -└── README.md # 项目说明文档 -``` +## 三、核心模块技术说明 +### 3.1 纯视觉红绿灯检测模块 +本模块摒弃了CARLA原生的信号灯状态读取API,采用基于HSV颜色空间的图像处理算法实现红绿灯识别,核心流程如下: +1. **亮度自适应判断**:通过计算图像灰度均值,区分白天与弱光/夜间场景。 +2. **图像增强**:弱光场景下自动通过线性变换提亮图像,提升信号灯可见度。 +3. **颜色分割**:利用HSV颜色空间的双区间阈值分割红色信号灯区域。 +4. **形态学去噪**:通过开运算去除噪声干扰,保留信号灯主体区域。 +5. **自适应阈值判定**:白天采用较高像素阈值,夜间降低阈值防止漏检,最终输出红灯状态。 + +### 3.2 超速检测与违章统计模块 +1. **实时车速计算**:通过车辆速度向量计算实际行驶速度(km/h),并实时显示在画面中。 +2. **固定限速判定**:默认限速50km/h,当车速超过限速时判定为超速违章。 +3. **违章次数统计**:通过记录上一帧违章状态,仅在违章状态从无到有时计数一次,避免重复统计。 + +### 3.3 多天气场景切换与数据采集模块 +1. **天气自动切换**:每10秒自动切换一次天气场景(雨天/晴天/夜间/雾天),覆盖多种行车环境。 +2. **交通标志检测**:通过3D世界坐标投影,将交通标志的边界框映射到图像平面,自动生成标注。 +3. **VOC格式标注生成**:自动保存采集到的图像,并生成包含交通标志位置、天气信息、违章状态的XML标注文件。 --- -## 🚀 快速开始 -### 1. 启动 CARLA 模拟器 -运行 CARLA 根目录下: -``` -CarlaUE4.exe -``` - -### 2. 配置代码路径(必须修改) -打开主代码文件,修改 **CARLA Egg 文件路径** 为你本地的实际路径: -```python -# 示例(替换为你的 CARLA 路径) -carla_egg_path = "你的CARLA路径/Carla/WindowsNoEditor/PythonAPI/carla/dist/carla-0.9.11-py3.7-win-amd64.egg" -``` - -### 3. 运行采集程序 -```bash -python 你的代码文件名.py -``` - -### 4. 程序说明 -- 自动加载 `Town05` 地图(交通标志密集) -- 自动生成 10 辆背景车辆 + 主驾驶车辆 -- 自动开启自动驾驶 + 交通规则约束 -- 每 10 秒自动切换天气 -- 检测到交通标志自动保存图像 + 标注文件 +## 四、关键技术难点与解决方案 +| 难点 | 解决方案 | +| :--- | :--- | +| 弱光场景红绿灯识别准确率低 | 采用亮度自适应增强+双区间HSV分割+自适应像素阈值,提升夜间、雾天识别稳定性 | +| 同一违章行为重复计数 | 记录上一帧违章状态,仅在状态由无到有时执行计数 | +| 不同天气场景下的图像差异 | 支持多天气自动切换,同时在标注文件中记录天气类别,便于后续模型训练 | +| 纯视觉方案无模拟器依赖 | 全程仅通过车载相机图像进行违章检测,不调用CARLA原生交通信号灯API | --- -## 🎮 控制快捷键 -| 按键 | 功能 | -|------|------| -| `W` | 前进/加速 | -| `S` | 刹车 | -| `A` | 左转 | -| `D` | 右转 | -| `R` | 倒车 | -| `X` | 退出程序并清理资源 | - -> 默认开启**自动驾驶**,键盘仅用于临时接管车辆 +## 五、系统运行流程 +1. **环境初始化**:连接CARLA服务器,加载Town05地图,配置同步模式与自动驾驶车辆。 +2. **传感器设置**:生成车载RGB相机,配置图像分辨率与FOV参数,建立图像队列。 +3. **主循环执行**: + - 世界步进更新,处理车辆控制输入。 + - 获取相机图像,执行违章检测逻辑。 + - 切换天气场景,检测并标注交通标志。 + - 绘制违章信息与统计次数,显示并保存图像与标注文件。 +4. **退出与资源释放**:关闭窗口,销毁车辆、相机等仿真资源,结束程序。 --- -## 📊 数据集格式 -采集的数据集为 **VOC 标准格式**,可直接用于 YOLO/Faster R-CNN 等模型训练: - -### 1. 图像文件 -- 分辨率:`1024×1024` -- 格式:`PNG` -- 命名:`image_时间戳.png` - -### 2. 标注文件(XML) -包含信息: -- 图像尺寸 -- 天气类别标签(0=雨天/1=晴天/2=雾天/3=夜间) -- 交通标志边界框坐标(xmin, ymin, xmax, ymax) -- 标签名称:`TrafficSign` - ---- - -## 🔧 自定义配置 -可直接修改代码调整采集参数: -```python -# 1. 交通标志检测距离(默认50米) -DISTANCE_THRESHOLD = 50.0 - -# 2. 天气切换间隔(默认10秒) -weather_transition_interval = 10 - -# 3. 相机分辨率 -camera_bp.set_attribute('image_size_x', '1024') -camera_bp.set_attribute('image_size_y', '1024') - -# 4. 自动驾驶速度(-50=提速50%) -traffic_manager.vehicle_percentage_speed_difference(vehicle, -50) - -# 5. 背景车辆数量 -num_vehicles = 10 -``` - - ---- - -## ⚠️ 注意事项 -1. **CARLA 版本必须为 0.9.11**,版本不匹配会导致导入失败 -2. 运行代码前必须先启动 CARLA 模拟器 -3. 若无法生成车辆/相机,重启 CARLA 与代码即可 -4. 数据集保存路径:`项目根目录/OutPut/data01` -5. 低配置电脑建议减少背景车辆数量 - ---- - -## 📌 项目用途 -- 交通标志识别模型训练 -- 驾驶违章检测系统数据集制作 -- 自动驾驶视觉感知算法验证 -- 计算机视觉交通场景研究 - - +## 六、项目总结与展望 +本项目成功实现了基于CARLA的自动驾驶交通违章检测仿真平台,完成了多天气场景下的交通标志数据采集,以及纯视觉的超速与闯红灯违章检测,系统稳定性与准确率满足仿真场景需求。 +后续可优化方向: +- 引入深度学习模型,实现更复杂的交通标志与信号灯识别。 +- 扩展更多违章类型,如车道偏离、不礼让行人等。 +- 优化违章计数逻辑,支持自定义限速路段与动态限速识别。 \ No newline at end of file