中国交通标志目标检测数据集:58类别 | 目标检测
源码数据分享

一、交通标志识别技术的战略意义
交通标志识别(TSR),说白了,就是自动驾驶感知系统里那个“看路牌”的关键模块。SAE把自动驾驶分了L0到L5六个等级,从L2往上,TSR就是不可绕开的一环了。从技术架构来看,TSR模块盘踞在感知层,负责从图像里把交通标志找出来并认清楚,然后把道路规则信息喂给决策规划模块。
一个完整的TSR系统,其实包含两个子任务:
- 交通标志检测(TSD):在图像中定位交通标志的位置,输出边界框
- 交通标志分类(TSC):对检测到的标志进行细粒度分类
本数据集同时支持这两个子任务。通常的做法是,以目标检测为主攻方向,分类可以通过裁剪检测区域后再做二次识别来实现。
1.1 中国交通标志体系的独特性
中国的交通标志,严格遵循国家标准GB 5768系列,这和欧洲的维也纳公约标志体系、美国的MUTCD标志体系相比,差别可不小:
颜色编码系统:
- 红色:禁令标志(禁止、限制)
- 蓝色:指示标志(指令、指引)
- 黄色:警告标志(注意、危险)
- 绿色:指路标志(方向、距离)
形状编码系统:
- 圆形:禁令和指示
- 三角形:警告
- 矩形:指路和辅助
文字与符号:
- 中国标志使用中文文字,比如“限速5km/h”
- 特有的标志类型,比如“禁止鸣喇叭”、“注意儿童”等
这种独特性意味着,如果直接把国外数据集(比如德国GTSRB、比利时BTSD)训练出来的模型拿到中国路上用,性能会掉得厉害。所以,本土化的数据集是刚需,没得商量。
1.2 交通标志识别的难点分析
现实道路场景中的交通标志识别,挑战确实不少:
环境因素:
- 光照变化:日出、正午、黄昏、夜间,光照条件天差地别
- 天气干扰:雨、雪、雾、强光、逆光,都会拉低图像质量
- 季节变化:植被遮挡程度随着季节轮转忽大忽小
标志状态:
- 老化褪色:长期风吹日晒,颜色会衰减
- 损坏变形:事故或自然因素导致变形
- 遮挡覆盖:树枝、建筑物、其他车辆都可能来凑热闹
- 临时标志:施工区域的临时标志,和正式标志往往差别很大
拍摄条件:
- 远距离小目标:高速行驶中,远处的标志在图像里可能才几个像素
- 运动模糊:车辆一快,图像就容易模糊
- 透视畸变:斜角度拍摄,标志会变形
二、数据集深度解析
2.1 核心规格总览
| 参数项 | 具体数值/描述 |
|---|---|
| 图像总量 | 12000张 |
| 类别数量 | 58类 |
| 标注方式 | YOLO格式边界框标注 |
| 标注类型 | 全人工精细化标注 |
| 数据划分 | train / val / test |
| 分辨率 | 多尺度(适配不同模型输入) |
| 适配模型 | YOLOv5/v8/v11、Faster R-CNN、SSD等 |

2.2 58类标志体系详解
数据集里一共装了58类交通标志,按国家标准,可以分成四大类:
限速标志(8类,ID 0-7)
| ID | 标志名称 | 典型场景 |
|---|---|---|
| 0 | 限速5km/h | 小区内部道路、停车场 |
| 1 | 限速15km/h | 学校区域、小区道路 |
| 2 | 限速30km/h | 城市支路、村庄道路 |
| 3 | 限速40km/h | 城市次干道 |
| 4 | 限速50km/h | 城市主干道 |
| 5 | 限速60km/h | 城市快速路 |
| 6 | 限速70km/h | 郊区道路 |
| 7 | 限速80km/h | 高速公路匝道 |
限速标志的识别精度,直接关系到自动驾驶系统的速度控制决策。可以说,这是最关键的一类安全相关标志。
禁令标志(约17类,ID 8-24)
这一堆涵盖禁止直行和左转、禁止直行和右转、禁止掉头、禁止鸣喇叭、禁止超车、禁止停车、禁止驶入等常见禁令标志。禁令标志通常是红色边框圆形,识别的关键在于文字和符号的区分。
指示标志(约15类,ID 25-39)
包括直行、向左转、向右转、直行和左转、直行和右转、靠右侧行驶等指示标志。指示标志通常是蓝色背景圆形或矩形,识别的关键在于箭头方向的判定。
警告标志(约18类,ID 40-57)
包含注意行人、注意儿童、注意施工、注意信号灯、注意危险、停车检查等警告标志。警告标志通常是黄色背景三角形,识别的关键在于内部图案的区分。
2.3 数据分布分析
58类的数据分布,有几个关键指标值得留意:
- 类别均衡性:各类别样本数是不是差不多,避免长尾分布导致少数类别检测效果差
- 场景多样性:同一个标志在不同场景下的变体,是不是都覆盖到了
- 尺度分布:小目标(远距离标志)和中/大目标的比例,合不合理
2.4 标注质量保障
全人工精细化标注,是本数据集的一个核心亮点:
- 边界框紧贴度:标注框紧贴标志边缘,留白不超过5像素
- 类别映射准确性:每条标注的类别编号,和实际标志严格对应
- 无漏标保证:图像中所有可见的标志,都会被标注
- 多轮校验:标注结果至少经过两轮独立审核
三、模型训练全流程实战
光有数据集还不够,怎么把模型训好,才是真功夫。下面是一套实战流程。
3.1 数据集配置文件
先准备好数据集的配置文件 traffic_sign_58.yaml:
path: datasets/中国交通标志识别数据集
train: images/train
val: images/val
test: images/test
nc: 58
names:
0: 限速5km/h
1: 限速15km/h
2: 限速30km/h
3: 限速40km/h
4: 限速50km/h
5: 限速60km/h
6: 限速70km/h
7: 限速80km/h
8: 禁止直行和左转
9: 禁止直行和右转
10: 禁止掉头
11: 禁止鸣喇叭
12: 禁止超车
13: 禁止停车
14: 禁止驶入
# ... 其余类别
57: 停车检查
3.2 基线模型训练
拿YOLOv8s当基线模型,跑起来:
from ultralytics import YOLO
model = YOLO('yolov8s.pt')
results = model.train(
data='traffic_sign_58.yaml',
epochs=150,
imgsz=640,
batch=32,
patience=30,
lr0=0.01,
mosaic=1.0,
mixup=0.1,
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
project='traffic_sign',
name='yolov8s_baseline'
)

3.3 针对交通标志的优化策略
泛泛地调参可不够,得针对交通标志的特点来优化。
颜色保持增强:
交通标志的颜色信息至关重要——红色是禁令,蓝色是指示,黄色是警告。如果颜色增强过头,这个关键特征就被破坏了。
hsv_h: 0.01 # 色调变化极小,保持颜色信息
hsv_s: 0.3 # 饱和度适度变化
hsv_v: 0.4 # 明度可以大范围变化,模拟不同光照
小目标检测优化:
高速场景中的远距离交通标志,属于小目标,通常小于32×32像素。可以这么干:
- 增加输入分辨率至1280×1280
- 添加P2检测头(步长4),增加小目标感受野
- 使用自适应训练采样,提高小目标的训练比例
- 在损失函数中增加小目标权重
类别不均衡处理:
58类标志在现实中间出现频率差异很大,比如限速60就比限速5常见得多。处理策略:
- 使用Focal Loss降低简单样本权重
- 对少数类别进行过采样或Copy-Paste增强
- 调整各类别的损失权重
3.4 高级训练技巧
如果想更进一步,还有几个高级技巧可以试试。
知识蒸馏:
用大模型(比如YOLOv8x)当老师,小模型(比如YOLOv8n)当学生,通过知识蒸馏,可以在保持精度的同时大幅缩小模型尺寸。这对边缘部署来说,很实用。
多尺度推理:
推理阶段开启多尺度测试(TTA),能提升小目标的检测精度:
results = model.val(data='traffic_sign_58.yaml', augment=True, imgsz=640)
模型集成:
训练多个模型然后集成预测结果,可以进一步提升检测的稳定性。比如:
- 不同架构的模型(YOLOv8 + RT-DETR)
- 不同尺度的模型(YOLOv8s + YOLOv8m)
- 不同训练策略的模型(不同随机种子)
四、部署方案与系统集成
模型训好了,下一步就是怎么把它装到车上。
4.1 车载部署方案
交通标志识别系统的车载部署,约束条件很苛刻:
| 约束项 | 要求 | 应对策略 |
|---|---|---|
| 实时性 | >30FPS | 轻量级模型 + TensorRT加速 |
| 功耗 | <10W | 量化推理 + NPU加速 |
| 可靠性 | >99.9% | 多模型冗余 + 置信度过滤 |
| 延迟 | <50ms | 端侧推理 + 流水线并行 |
4.2 边缘设备选型
| 设备 | 算力 | 功耗 | 推荐模型 | 适用场景 |
|---|---|---|---|---|
| Jetson Orin Nano | 40 TOPS | 15W | YOLOv8s | 量产车型 |
| Jetson AGX Orin | 275 TOPS | 60W | YOLOv8m | 研发测试 |
| 地平线征程5 | 128 TOPS | 30W | YOLOv8s | 国产量产 |
| 瑞芯微RK3588 | 6 TOPS | 10W | YOLOv8n | 后装方案 |
4.3 系统集成接口
一个简单的Python接口示例,看看怎么集成:
class TrafficSignDetector:
def __init__(self, model_path, conf_thres=0.5):
self.model = YOLO(model_path)
self.conf_thres = conf_thres
# 限速值映射
self.speed_limit_map = {
0: 5, 1: 15, 2: 30, 3: 40,
4: 50, 5: 60, 6: 70, 7: 80
}
def detect(self, frame):
results = self.model(frame, conf=self.conf_thres)
signs = []
for result in results:
for box in result.boxes:
cls_id = int(box.cls)
conf = float(box.conf)
bbox = box.xyxy.tolist()[0]
signs.append({
'class_id': cls_id,
'class_name': result.names[cls_id],
'confidence': conf,
'bbox': bbox
})
return signs
def get_speed_limit(self, signs):
for sign in signs:
if sign['class_id'] in self.speed_limit_map:
return self.speed_limit_map[sign['class_id']]
return None

五、业务应用场景
技术再牛,也得落到具体场景里才有价值。
5.1 高级驾驶辅助系统(ADAS)
在L2级ADAS里,交通标志识别可以干这些事:
- 限速提示:检测到限速标志后,在仪表盘或HUD上显示出来
- 超速警告:当前车速超过检测到的限速值时,发出警告
- 禁止提示:检测到禁行或禁转标志时,提醒驾驶员
5.2 自动驾驶感知模块
到了L3级及以上,TSR就是感知模块里必不可少的组件了:
- 行为规划约束:限速值约束速度规划,禁令约束路径选择
- 规则遵守验证:验证规划轨迹是不是违反了交通规则
- 地图更新验证:和高精地图里的标志信息交叉验证
5.3 智能交通监控
在交通管理领域,TSR技术可以用来:
- 违章检测:识别闯红灯、违规变道等行为
- 标志完好性检查:检测损坏或遮挡的标志,安排维护
- 交通流量统计:基于标志位置关联分析交通流量
5.4 驾驶员培训与考核
在驾培领域,TSR技术可以辅助:
- 标志知识教学:实时识别并讲解当前标志的含义
- 驾驶行为评估:判断驾驶员是不是遵守了标志指示
- 模拟考试评分:自动评判科目三考试中标志遵守情况
六、性能评估与对比
模型好不好,得拿指标来说话。
6.1 评估指标体系
交通标志检测的评估,可以从多个维度来看:
| 评估维度 | 指标 | 说明 |
|---|---|---|
| 整体精度 | mAP50 | IoU=0.5时的平均精度 |
| 严格精度 | mAP50-95 | IoU从0.5到0.95的平均精度 |
| 实时性 | FPS | 每秒处理帧数 |
| 参数量 | Params | 模型参数量(影响存储) |
| 计算量 | FLOPs | 模型计算量(影响推理速度) |
6.2 不同模型对比
| 模型 | 输入尺寸 | mAP50 | FPS (T4) | 参数量 |
|---|---|---|---|---|
| YOLOv8n | 640 | ~85% | ~130 | 3.2M |
| YOLOv8s | 640 | ~90% | ~80 | 11.2M |
| YOLOv8m | 640 | ~93% | ~50 | 25.9M |
| YOLOv8l | 640 | ~95% | ~30 | 43.7M |
| RT-DETR-L | 640 | ~94% | ~40 | 32M |
6.3 典型问题分析
易混淆类别:
- 限速30km/h 与 限速80km/h:数字相似,远距离容易搞混
- 禁止直行和左转 与 禁止直行和右转:就差一个箭头方向
- 直行和左转 与 直行和右转:类似的问题
改进策略:
- 增加高分辨率输入
- 对易混淆类别增加训练样本
- 使用更大模型或集成方法
- 引入分类辅助损失
七、数据集扩展方向
再好的数据集,也有它的局限性。未来可以朝这几个方向扩展。
7.1 新增标志类型
当前58类还没完全覆盖中国所有交通标志,可以扩展:
- 更多限速值(90、100、110、120km/h)
- 更多禁令标志(比如禁止各类车辆通行等)
- 更多指示标志(各类行驶方向组合)
- 辅助标志(时间范围、车辆类型等)
- 临时施工标志
7.2 条件标注扩展
为每条标注增加条件信息,让数据更“丰满”:
- 标志可见度(清晰/模糊/遮挡)
- 天气条件(晴/阴/雨/雪/雾)
- 光照条件(白天/黄昏/夜间)
- 拍摄角度(正面/侧面/远距离)
7.3 时序标注
增加视频序列标注,支持:
- 标志出现/消失的时序检测
- 标志跟踪与重识别
- 运动模糊下的检测增强
八、总结与展望
这个58类中国交通标志识别数据集,用12000张高清图像和全人工精细化标注,搭建了一个目前国内比较全面的交通标志检测数据资源。覆盖了限速、禁令、指示、警告四大类别,类别划分严格对应国家标准,标注精度达到了工程级水准。
从行业应用的角度来看,交通标志识别是自动驾驶和智能交通领域的刚需技术。而高质量的本土化数据集,正是支撑技术落地的核心基础。这个数据集的发布,可以推动中国交通标志识别技术从实验室走向产业应用。
往前走,随着数据规模的持续扩大、标注粒度的不断细化,以及多模态融合技术的引入,交通标志识别系统一定能在更复杂的道路环境和更严苛的应用场景中,展现出更强的性能和更高的可靠性。这对自动驾驶安全来说,意义深远。
