当前位置: 首页 > news >正文

基于深度学习的交通标志识别系统

基于深度学习的交通标志识别系统

项目简介

本项目实现了一个基于深度学习的交通标志识别系统,使用卷积神经网络(CNN)对交通标志图像进行分类识别。系统包含数据预处理、模型训练与评估、结果可视化和用户交互界面等模块。

数据集

项目使用德国交通标志识别基准数据集(GTSRB),包含43类不同的交通标志,超过50,000张彩色图像。数据集具有以下特点:

  • 真实道路场景中拍摄的交通标志
  • 不同光照、天气和遮挡条件
  • 每类标志大小和数量不一

系统架构

  1. 数据预处理模块:数据加载、图像处理、数据增强、归一化
  2. 模型构建模块:设计并实现卷积神经网络架构
  3. 模型训练与评估模块:训练模型并评估性能
  4. 可视化模块:展示训练过程和识别结果
  5. 用户界面模块:提供图像上传和识别功能

技术栈

  • Python:编程语言(需要Python 3.11或更低版本,不支持Python 3.13
  • TensorFlow/Keras:深度学习框架
  • OpenCV:图像处理
  • NumPy/Pandas:数据处理
  • Matplotlib:数据可视化
  • Streamlit:用户界面

环境要求

  • Python 3.11(或更低版本,不支持Python 3.13
  • TensorFlow 2.x(在macOS上使用tensorflow-macos)

使用说明

  1. 创建虚拟环境:python3.11 -m venv venv_py311
  2. 激活虚拟环境:
    • Windows: venv_py311\Scripts\activate
    • macOS/Linux: source venv_py311/bin/activate
  3. 安装依赖:pip install -r requirements.txt
  4. 下载数据集:运行python src/download_dataset.py
  5. 训练模型:运行python src/train_model.py
  6. 启动用户界面:运行streamlit run src/app.py

目录结构

traffic_sign_recognition/
├── data/                  # 数据集和预处理数据
├── models/                # 保存训练好的模型
├── src/                   # 源代码
│   ├── data_preprocessing.py  # 数据预处理模块
│   ├── model.py               # 模型定义
│   ├── train_model.py         # 训练脚本
│   ├── evaluate.py            # 评估脚本
│   ├── app.py                 # 用户界面
│   └── utils.py               # 工具函数
├── notebooks/             # Jupyter notebooks用于实验和分析
├── requirements.txt       # 项目依赖
└── README.md              # 项目说明

开发日志

2025-05-06 系统初始设计与实现

会话主要目的:创建基于深度学习的交通标志识别系统

完成的主要任务

  1. 搭建完整的项目结构,包括数据处理、模型训练、评估和用户界面
  2. 实现数据下载和预处理模块,支持GTSRB数据集的加载和处理
  3. 设计并实现多种CNN模型架构,包括简单CNN、自定义CNN和基于MobileNetV2的迁移学习模型
  4. 创建模型训练流程,支持数据增强、类别权重调整等功能
  5. 开发全面的模型评估工具,包括混淆矩阵、ROC曲线、分类报告等
  6. 实现基于Streamlit的交互式用户界面,支持图像上传和实时识别
  7. 添加可视化工具,用于展示模型内部工作原理

关键决策和解决方案

  • 选择GTSRB作为数据集,因其包含多种交通标志类别和真实场景变化
  • 使用图像预处理技术如直方图均衡化、归一化等提高识别准确率
  • 实现多种模型架构对比,方便分析性能差异
  • 采用数据增强技术解决类别不平衡和数据量不足问题
  • 使用Streamlit构建直观易用的用户界面,支持多种方式输入图像

使用的技术栈

  • Python、TensorFlow、Keras、OpenCV
  • NumPy、Pandas、Matplotlib、Seaborn
  • Streamlit、PIL(Python图像库)

修改的文件

  • 创建了完整的项目结构和各主要模块文件
  • requirements.txt: 定义项目依赖
  • src/download_dataset.py: 数据集下载和探索
  • src/data_preprocessing.py: 数据预处理和增强
  • src/model.py: CNN模型定义和工具函数
  • src/train_model.py: 模型训练流程
  • src/evaluate.py: 模型评估和比较
  • src/app.py: Streamlit用户界面
  • src/utils.py: 工具函数集合
  • README.md: 项目说明文档

2025-05-06 解决Python版本兼容性问题

主要目的:解决Python 3.13与TensorFlow不兼容的问题

完成的主要任务

  1. 使用Python 3.11创建新的虚拟环境,代替不兼容的Python 3.13环境
  2. 在新环境中安装tensorflow-macos和其他依赖包
  3. 更新requirements.txt文件,添加版本兼容性信息
  4. 更新README文件,添加Python版本兼容性提示和环境配置说明

关键决策和解决方案

  • 切换到Python 3.11.11版本,以确保与TensorFlow兼容
  • 使用tensorflow-macos替代标准tensorflow,以支持macOS环境
  • 固定numpy版本为1.23.5以避免版本冲突
  • 为用户提供明确的Python版本要求和虚拟环境配置说明

使用的技术栈

  • Python 3.11
  • tensorflow-macos 2.12.0
  • 虚拟环境(venv)
  • 其他依赖包的兼容版本

修改的文件

  • requirements.txt: 更新依赖包版本要求
  • README.md: 添加Python版本要求和环境配置说明

2025-05-07 解决Python版本兼容性问题并测试系统功能

会话主要目的:解决Python 3.13与TensorFlow不兼容的问题并完成系统功能测试

完成的主要任务

  1. 使用Python 3.11创建新的虚拟环境,替代不兼容的Python 3.13环境
  2. 安装tensorflow-macos 2.12.0和所有依赖包(numpy、matplotlib、opencv-python等)
  3. 修复数据预处理脚本中的路径问题,适配数据集的实际目录结构
  4. 成功运行数据预处理流程,生成处理后的训练、验证和测试数据集
  5. 启动模型训练过程
  6. 运行Streamlit用户界面进行系统功能验证

关键决策和解决方案

  • 使用Python 3.11.11版本创建虚拟环境,确保与TensorFlow兼容
  • 安装tensorflow-macos以支持macOS环境下的深度学习任务
  • 修改数据路径处理逻辑,适应GTSRB数据集的"00000"格式文件夹命名
  • 安装额外依赖包pydot以支持模型可视化功能
  • 测试验证了完整的数据处理、模型训练和用户界面流程

使用的技术栈

  • Python 3.11
  • tensorflow-macos 2.12.0
  • NumPy 1.23.5
  • OpenCV-Python
  • scikit-learn
  • Matplotlib
  • Streamlit
  • tqdm

修改的文件

  • requirements.txt: 更新依赖要求,添加tqdm库
  • src/data_preprocessing.py: 修改数据路径处理逻辑,适应实际数据集结构
  • README.md: 添加项目进度更新

相关文章:

  • 在Ubuntu 22.04 上安装 JDK 1.8.0_281,同时保留现有的 JDK 17.0.15
  • 基于LVS实现负载均衡,对NAT模式的介绍和使用案例
  • 模型中台建设全流程指南
  • 体育培训的实验室管理痛点 质检LIMS如何重构体育检测价值链
  • 经典密码学算法实现
  • [20250507] AI边缘计算开发板行业调研报告 ​​(2024年最新版)​
  • STM32的看门狗
  • C/C++ Python绑定工具: nanobind 使用指南与示例
  • 如何用命令行判断一个exe是不是c#wpf开发的
  • 金融企业如何借力运维监控强化合规性建设?
  • Linux系列:如何用perf跟踪.NET程序的mmap泄露
  • 点云采集学习个人记录
  • Mkdocs文档引用相对地址的一些问题
  • 从D盘分配空间为C盘扩容?利用工具1+1>2
  • uni-app实现完成任务解锁拼图功能
  • MySQL OCP和Oracle OCP怎么选?
  • POI处理EXCEL
  • 51camera将参加第九届沥青路面论坛暨新技术新成果展示会
  • LeetCode 347 前 K 个高频元素
  • Word如何制作三线表格
  • 全球医药股普跌,A股创新药板块下挫
  • 《单身情歌》制作人韩贤光去世,林志炫发文悼念
  • 听企业聊感受,《外企聊营商》5月13日起推出
  • 著名学者黄修己去世,享年90岁
  • 韩国总统大选候选人登记结束,共7人参选
  • “影像上海”中的自媒体影像特展:无论何时,影像都需要空间