塞进一块小板子:数据集、训练与两条部署路线
这一章讲三件事: 一个真实数据集是怎么攒出来的(有全书最实的一句现场经验); 配置一个检测模型其实只要改五个文件; 以及两条部署路线 —— 同一个模型,一条装个包就跑,另一条要多做六件事。 它在全书链条里的位置是最后一级台阶,也是全书唯一讲「模型怎么真的跑在硬件上」的地方。 这一章的主走查是本章第 4 节训出来的那个 YOLOV3-MobileNetV1,同时走两条部署路 (它的检测头就是第 15 章讲的 YOLO 那一路,骨干见第 6 节)。 遇到的生词都在当场解释。
1. 顶层全景
书给了整条流程,这一章就是照它走1:
数据采集 → 数据标注 → 模型构建 → 模型训练 → 模型压缩 → 模型部署
│ │ │ │ │ │
第 2 节 第 3 节 ├── 第 4 节:五个配置文件 ──┤ │
第 5、6 节 第 7、8 节
图说:注意这条链比第 09 章那「五步固定动作」多了一环 —— **模型压缩**。
它是被最后一环(部署到一块算力有限的板子上)倒逼出来的。
**这就是全书那条主线最后一次现身:边缘部署反过来决定前面每一步。**
2. 数据采集:全书最实的一句现场经验
现象先行:采数据不就是多拍点图吗
书给了两种采法2:
| 采法 | 怎么做 | 适合什么 |
|---|---|---|
| 手动逐张拍 | 键盘控制车走,按 p 拍照保存,按 q 退出,按 1—9 和 a—b 切换保存目录 | 对特定场景下的特定目标做针对性补充 |
| 录视频再抽帧 | 拍一段视频,再跑一个程序按指定间隔从视频里截图 | 大批量构建数据集 |
抽完帧还有一道人工:书说部分图片会很模糊,要手动筛选剔除非常模糊的图片3。
那句最实的话
为了平衡光照变化对数据样本的影响和车速变化造成的图像拖影的影响, 数据采集分多个时间段和多种车速在赛道场景下进行2。
这一句里有两个独立的决定,拆开看:
① 分多个时间段采 ── 治**光照变化**
上午的光、下午的光、开灯和关灯,同一块地图布颜色是不一样的
(第 12 章那条路的死穴正是这个 —— 它治不了,只能重调阈值;
这里换了个治法:**把变化本 身喂给模型**)
② 分多种车速采 ── 治**图像拖影**
车快的时候,快门期间车已经挪了一段,拍出来的图是糊的
**只用慢速采的数据训出来的模型,一到比赛的速度就懵**
图说:这两条都不是「多采一点」,是**把将来会遇到的变化提前放进训练集**。
和第 15 章那句「图像质量决定准确性的上限」是同一件事的两端 ——
那边说图糊了模型救不回来,这边说**那就让模型提前见过糊的图**。
(「快门期间车挪了一段」这个机理是我们补的;书只说了「车速变化造成的图像拖影」。)
3. 标注:两种工具,以及一条反直觉的口径
先把「标注」这个词钉一下:给每一份原始数据配上正确答案 —— 这里就是在图上画一个框、并说清框里是什么。 书给的定义是:把原始数据用标签或注释的方式进行加工处理, 以便监督学习算法能够识别、分类或预测4。
一条反直觉的口径:框要画小,不要画大
这是这一节最值钱的一句,而且和直觉相反:
注意标注数据尽量不要包括多余的区域,防止后续可能出现的干扰5。
为什么直觉是反的(我们补的解释): 人会觉得「框大一点保险,别把目标切掉了」。但模型学的是框里的东西。 框大了,框里那圈背景也会被当成「这个类别的特征」的一部分。 下次背景换了,它就认不出来了。
书还给了三个快捷键:W 建区块、A 向前翻、D 向后翻5。
—— 这种细节只有真标过几千张的人才会写。