Ultralytics YOLO 交通标志检测实战:TT100K 数据集的下载、配置与 YOLO26 训练全流程
本文基于 Ultralytics 仓库的 TT100K 数据集文档 与仓库内真实配置文件 TT100K.yaml 展开,完整介绍清华大学-腾讯 TT100K 交通标志数据集的构成、221 个类别体系、自动下载与 YOLO 格式转换机制,以及如何用 YOLO26 在该数据集上完成训练、验证与高分辨率小目标调优,帮助你在自动驾驶感知与 ADAS 场景中直接上手交通标志检测。
数据集概述:为什么 TT100K 是小目标检测的难题基准
TT100K(Tsinghua-Tencent 100K)是清华大学与腾讯联合发布的交通标志检测基准数据集,源自 CVPR 2016 论文 Traffic-Sign Detection and Classification in the Wild。Ultralytics 为它维护了一份开箱即用的数据集配置:
- 16,817 张街景图像,固定划分为 6,105 张训练 / 7,641 张验证 / 3,071 张测试;
- 221 个交通标志类别,覆盖中国道路上的限速、禁令、警告、限高/限宽与指路标志;
- 原始基准报告了 3 万多个标志实例;
- 名称中的 “100K” 指的是构建基准所用的约 10 万张腾讯街景图像,并非你实际下载训练的图片数量。
由于原始论文只保留训练样本不少于 100 个的类别,社区中也存在一个常用的 45 类子集;但 Ultralytics 的配置保留了全部 221 个标注类别(其中许多类别样本稀疏)。
数据集的高分辨率街景图像涵盖光照、天气、视角与距离的大幅变化,是检验 小目标检测 能力的高难度基准。
关键特征
- 多类检测:221 个交通标志类别,覆盖限速、禁令、警告、限高/限宽与指路标志。
- 高分辨率:2048×2048 像素图像,标志从近景大目标到远景极小目标跨度很大,对检测器的细粒度能力提出压力测试。
- 真实路况:天气、光照、视角、遮挡变化显著。
- 边界框标注:每个标志都有类别与边界框标注,自动转换后为 YOLO 格式。
- 预定义划分:固定的 train / val / test 划分(6,105 / 7,641 / 3,071),保证评估口径一致。
数据集结构与 221 类别体系
三个子集共享同一套 221 类别:
| 划分 | 图像数 | 说明 |
|---|---|---|
| Train | 6,105 | 用于训练检测器的带标注交通场景图像 |
| Validation | 7,641 | 数据集原始的 "other" 划分,用于验证评估 |
| Test | 3,071 | 留出图像,用于最终评估训练后的模型 |
221 个类别按前缀组织为几大组(与 TT100K.yaml 中 names 字段完全对应):
- 限速标志:禁止限速
pl*(如 pl5–pl120)与最低限速pm*(如 pm5–pm55); - 禁令标志:一般禁令
p1–p29、禁行/禁停pn/pne、限制类pr*(pr10–pr100); - 警告标志:
w1–w67,覆盖人行横道、急转弯、湿滑路面、施工等道路危险; - 限高/限宽标志:限高
ph*(如 ph2–ph5.5)与限宽pb/pw*; - 指路标志:一般信息
i1–i15、限速信息il*(il50–il110)、其他io、信息板ip。
典型应用场景
- 自动驾驶感知系统;
- 高级驾驶辅助系统(ADAS);
- 交通监控与道路基础设施分析;
- 城市规划与交通流量研究;
- 高分辨率图像中的小目标计算机视觉研究。
TT100K.yaml 配置解析
数据集配置由 TT100K.yaml 定义,包含三部分:数据路径、类别名列表、自动下载与转换脚本。
路径与划分
path: TT100K # dataset root dir
train: images/train # train images (relative to 'path') 6105 images
val: images/val # val images (relative to 'path') 7641 images (original 'other' split)
test: images/test # test images (relative to 'path') 3071 images
首次训练时数据会下载到 datasets/TT100K 目录(约 18 GB),形成 images/{split} 与 labels/{split} 的标准 YOLO 目录结构。
类别定义
names 字段以 0–220 为索引映射 221 个类别名(如 0: i1、56: ph1.5、86: pl5、130: w1)。值得注意的是索引顺序按名称字典序排列而非语义分组,因此阅读标注文件时需按索引回查类别名。文件头注释同时说明:“221 traffic sign categories, 45 with sufficient training instances”,即完整类别体系中有 45 个类别训练样本充足。
自动下载与 YOLO 格式转换脚本
YAML 末尾的 download 字段是一段内嵌 Python 脚本(TT100K.yaml),其核心流程为:
- 下载:从清华大学服务器抓取
data.zip(原始标注为annotations.json+ 街景图像); - 划分路由:按图像路径中是否含
train/test字符串将图像归入train/test/val三个子集,分别拷贝到images/{split}; - 格式转换:
tt100k2yolo(dir)函数读取annotations.json,将每张图像的xmin/ymin/xmax/ymax像素框转换为 YOLO 归一化中心点格式cls x_center y_center width height(六位小数),并裁剪到[0, 1]合法区间; - 写标签:每张图像对应
labels/{split}/{stem}.txt;遇到不属于 221 类的标注会被跳过并计数提示。
自动下载是如何被触发的(源码级证据)
download 脚本并不独立运行,而是由 Ultralytics 的数据集校验函数 check_det_dataset 统一驱动,调用链为:
- 训练入口调用
check_det_dataset(data, autodownload=True)解析 YAML; - 函数校验
train/val键与names/nc合法性(utils.py),并把path相对路径解析到全局数据集目录DATASETS_DIR(定义于 utils/__init__.py,默认为datasets/,可在设置文件中修改); - 当验证集路径不存在且
autodownload=True时,脚本按download内容分派:URL 直链走safe_download、bash前缀走子进程、其余按 Python 脚本exec执行(utils.py)。TT100K 正是走第三种分支,脚本内可直接引用传入的yaml变量(如Path(yaml["path"]))。
这也解释了首次训练为何会“多等几分钟”:18 GB 数据下载 + 1.6 万张图像的拷贝与逐框转换。
使用方式:训练 YOLO26 交通标志检测器
!!! 注意 TT100K 首次训练时自动下载,约需 18 GB 空闲磁盘空间。
用 Python 或 CLI 均可,以下示例加载预训练模型 yolo26n.pt,训练 100 个 epoch、图像尺寸 640:
from ultralytics import YOLO
# 加载模型
model = YOLO("yolo26n.pt") # 加载预训练模型(推荐用于训练)
# 训练模型 - 数据集首次运行时自动下载
results = model.train(data="TT100K.yaml", epochs=100, imgsz=640)
# 从预训练 *.pt 模型开始训练
# 数据集首次运行时自动下载并转换
yolo detect train data=TT100K.yaml model=yolo26n.pt epochs=100 imgsz=640
完整训练参数见 训练文档。此外 Ultralytics 还支持在浏览器平台中标注更多交通标志图像、管理 TT100K 训练任务。
应对 2048×2048 高分辨率图像的策略
TT100K 图像中交通标志往往只占画面很小一部分,单张图可能包含多尺度、多距离的多个标志,且存在车辆、植被、建筑遮挡以及昼夜/雨晴条件差异——这正是该数据集对检测器鲁棒性的考验。调优建议:
- 初始实验先用
imgsz=640跑通基线; - GPU 显存允许时提升到
imgsz=1280并相应减小batch,更高分辨率有助于找回远处小标志:
model.train(data="TT100K.yaml", imgsz=1280, batch=4) # 更高分辨率以检测小标志
引用与致谢
若你在研究或开发中使用 TT100K,请引用原始论文:
@InProceedings{Zhu_2016_CVPR,
author = {Zhu, Zhe and Liang, Dun and Zhang, Songhai and Huang, Xiaolei and Li, Baoli and Hu, Shimin},
title = {Traffic-Sign Detection and Classification in the Wild},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2016}
}
感谢清华大学与腾讯为计算机视觉与自动驾驶社区创建并维护这一资源。数据集许可证为 CC BY-NC 2.0,仅限非商业用途(见 TT100K.yaml 头注释)。
常见问题
TT100K 有多少张图像? Ultralytics 配置共 16,817 张:6,105 训练、7,641 验证(原始 "other" 划分)、3,071 测试。
为什么叫 100K 却只有约 1.68 万张图? “100K” 指原始基准来源的约 10 万张腾讯街景图像;Ultralytics 配置提供其中 16,817 张并附 YOLO 格式标签,名称反映的是来源集合而非训练集规模。
TT100K 有多少类别? 221 个类别。原始论文只统计训练样本 ≥100 的 45 类,但 Ultralytics 配置保留全部 221 类。
下载多大、如何获取?
约 18 GB,使用 data="TT100K.yaml" 训练时自动下载,无需手动操作;脚本同时会在首次运行完成标注格式转换。
小结
TT100K 通过 16,817 张 2048×2048 街景图、221 个标志类别和固定三分,为交通标志小目标检测提供了贴近真实路况的基准。Ultralytics 以一份 TT100K.yaml 打通了“下载 → JSON 转 YOLO → 训练”全链路:check_det_dataset 负责触发内嵌下载脚本,yolo detect train data=TT100K.yaml model=yolo26n.pt epochs=100 imgsz=640 一行即可启动基线训练,再用 imgsz=1280 提升分辨率攻克远景小目标。所有配置与实现均可在当前仓库中直接查阅复现。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00