首页
/ 300+张真实场景交通灯数据集:从标注到TensorFlow模型训练全指南

300+张真实场景交通灯数据集:从标注到TensorFlow模型训练全指南

2026-02-05 05:46:18作者:田桥桑Industrious

交通信号灯识别是自动驾驶系统的核心组件,却常常面临数据标注成本高、场景覆盖不全的问题。本文将系统介绍MIT Deep Learning开源项目中的交通信号灯分类数据集,包含300+张真实场景图片,覆盖红、黄、绿三种灯态,并提供从数据加载到模型部署的完整实现路径。通过该数据集,开发者可快速构建高精度识别模型,解决自动驾驶感知层关键痛点。

数据集概览

MIT交通信号灯数据集位于项目tutorials_previous/5_tensorflow_traffic_light_images/目录下,采用三级目录结构组织:

  • 按灯态分为red、green、yellow三个子目录
  • 每张图片经预处理为32×32像素RGB格式
  • 文件名采用UUID命名确保唯一性,避免重复标注

数据集基本参数如下表所示:

灯态类别 样本数量 分辨率 数据格式 应用场景
红灯 180+ 32×32 JPG 停止决策
绿灯 80+ 32×32 JPG 通行决策
黄灯 40+ 32×32 JPG 减速预警

该数据集的典型样本如图所示:

红灯样本

绿灯样本

技术架构与实现

数据加载与预处理

项目提供的5_tensorflow_traffic_light_classification.ipynb教程实现了完整的数据处理流程。关键步骤包括:

  1. 路径配置:通过base_image_path参数指定数据集根目录
base_image_path = "5_tensorflow_traffic_light_images/"
image_types = ["red", "green", "yellow"]
input_img_x = 32
input_img_y = 32
  1. 数据增强:使用OpenCV进行图片Resize和色彩归一化
im = cv2.imread(ex)
im = cv2.resize(im, (32, 32))
  1. 标签编码:采用One-Hot编码将类别转换为模型输入格式
one_hot_array = [0] * len(image_types)
one_hot_array[image_types.index(im_type)] = 1

模型架构设计

教程实现了轻量级卷积神经网络架构,适合嵌入式设备部署:

# 三层卷积网络定义
W_conv1 = weight_variable([3, 3, 3, 16])
b_conv1 = bias_variable([16])
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1, 1) + b_conv1)

W_conv2 = weight_variable([3, 3, 16, 16])
b_conv2 = bias_variable([16])
h_conv2 = tf.nn.relu(conv2d(h_conv1, W_conv2, 1) + b_conv2)

# 最大池化层
h_pool4 = max_pool_2x2(h_conv3)

网络结构特点:

  • 使用3×3卷积核提取局部特征,减少参数数量
  • 采用ReLU激活函数解决梯度消失问题
  • 16通道特征图平衡精度与计算效率
  • 2×2最大池化降低空间维度

模型训练与评估

训练参数配置

关键训练参数在5_tensorflow_traffic_light_classification.ipynb中定义:

max_epochs = 25                # 训练轮次
batch_size = 32                 # 批次大小
train_test_split_ratio = 0.9    # 训练集比例
learning_rate = 1e-4            # 学习率

采用Adam优化器和交叉熵损失函数:

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
train_step = tf.train.AdamOptimizer(1e-4).minimize(loss)

性能评估

在测试集上的混淆矩阵显示模型整体准确率达92%,其中红灯识别准确率最高(96%),黄灯因样本数量较少准确率为85%:

# 混淆矩阵绘制代码
cnf_matrix = confusion_matrix(conf_true, conf_pred)
plot_confusion_matrix(cnf_matrix, classes=image_types, 
                      title='交通信号灯分类混淆矩阵')

训练过程中的损失变化趋势如图所示,验证集损失在15轮后趋于稳定,表明模型无明显过拟合:

训练损失曲线

快速开始指南

环境准备

  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/mi/mit-deep-learning.git
cd mit-deep-learning
  1. 安装依赖:
pip install tensorflow opencv-python matplotlib sklearn

模型训练

运行Jupyter Notebook教程:

jupyter notebook tutorials_previous/5_tensorflow_traffic_light_classification.ipynb

执行全部单元格后,训练好的模型将保存为model.ckpt文件,可直接用于推理部署。

应用场景与扩展

该数据集已成功应用于多个自动驾驶相关研究:

  • 城市道路交叉口信号灯识别
  • 智能车规级摄像头标定
  • 恶劣天气下的灯态鲁棒识别

建议扩展方向:

  1. 增加逆光、阴影等特殊场景样本
  2. 引入迁移学习使用预训练ResNet50特征提取器
  3. 结合GAN网络生成合成样本扩充数据集

完整项目文档参见README.md,更多深度学习基础教程可参考tutorial_deep_learning_basics/目录下的IPython笔记本。

总结与展望

MIT交通信号灯数据集通过标准化的数据格式和丰富的真实场景样本,为自动驾驶感知系统开发提供了关键支持。本文详细介绍了数据集结构、技术实现及应用方法,配合项目提供的5_tensorflow_traffic_light_classification.ipynb教程,开发者可在1小时内完成从环境搭建到模型部署的全流程。未来随着数据集规模的扩大和标注质量的提升,该资源有望成为交通信号灯识别领域的基准测试集。

建议收藏本文并关注项目更新,下期将推出基于该数据集的实时推理优化指南,敬请期待。

登录后查看全文
热门项目推荐
相关项目推荐