3. 数据集构建:数据采集、标注工具与质量评估
做工业视觉,圈里人都知道一句话:“模型的上限,在数据里”。我见过太多团队花几个月调网络结构,结果换个产线数据就崩了。说白了,数据集的构建才是整个项目的基石。这一章,我就把数据采集、标注工具选型、清洗和质量评估这些实战经验,掰开了跟你聊聊。
3.1 数据采集:从产线到硬盘的第一公里
数据采集不是拿个相机随便拍。工业场景下,你得考虑光照、角度、产品型号、缺陷类型分布。我习惯把采集策略分成三步走:
- 覆盖全缺陷类型:划痕、脏污、缺料、毛刺、变形……每种至少 200 张正样本 + 50 张负样本。
- 模拟产线环境:不同工位的光照强度、相机角度、传送带速度都要录进去。
- 留足冗余:实际采集量要比标注量多 30%,因为清洗阶段会筛掉一批。
举个例子,我之前做手机中框划痕检测,一开始只采集了白炽灯下的样本。模型在实验室跑得挺好,一上产线就崩。后来发现产线用的是环形 LED 冷光源,划痕的反射特征完全不一样。嗯,这就是典型的采集环境与部署环境不匹配。
3.2 标注工具选型:LabelImg vs CVAT
标注工具的选择,直接影响团队效率和标注质量。我主要用过两款:LabelImg 和 CVAT。下面这张表是我个人的对比总结:
| 维度 | LabelImg | CVAT |
|---|---|---|
| 部署方式 | 本地安装,单机运行 | Web 服务,支持多人协作 |
| 标注格式 | Pascal VOC (XML)、YOLO (TXT) | COCO JSON、Pascal VOC、YOLO、Mask |
| 标注类型 | 矩形框、多边形 | 矩形框、多边形、关键点、语义分割 |
| 团队协作 | 不支持,需手动合并 | 支持任务分配、审核、版本管理 |
| 自动化辅助 | 无 | 自动标注、AI 辅助、半自动跟踪 |
| 适用场景 | 个人项目、小团队(< 5人) | 中大型团队、复杂标注任务 |
我个人习惯是:小项目用 LabelImg,大项目上 CVAT。为什么?LabelImg 轻量,打开就能标,适合快速验证。但如果你有 5 个标注员同时干活,CVAT 的任务分配和审核功能能帮你省掉 80% 的沟通成本。
3.3 数据清洗:把垃圾数据挡在门外
数据清洗是脏活,但也是回报率最高的环节。我总结了一套“四步清洗法”:
- 去重:产线连续拍摄会产生大量重复帧,用哈希或感知哈希去重。
- 去模糊:运动模糊、对焦不准的图片,用拉普拉斯方差检测,低于阈值直接丢弃。
- 去异常:曝光过度、全黑、遮挡严重的图片,通过像素统计筛除。
- 去标注错误:检查标注框是否超出图像边界、类别是否匹配、尺寸是否合理。
你想想看,如果训练集里混了 10% 的模糊图片,模型学到的特征就是模糊的,推理时遇到清晰图片反而会误判。这就是典型的“垃圾进,垃圾出”。
3.4 数据质量评估:用指标说话
数据清洗完了,怎么知道质量够不够?我习惯用三个核心指标来评估:
| 指标 | 计算公式 | 合格标准 | 说明 |
|---|---|---|---|
| 标注一致性 | IoU ≥ 0.7 的标注占比 | ≥ 95% | 同一张图由两人标注,框的重叠度 |
| 类别平衡度 | 各类别样本数 / 总样本数 | 每类 ≥ 5% | 防止模型对少数类欠拟合 |
| 图像质量分 | 清晰度 + 对比度 + 信噪比加权 | ≥ 0.8 | 自定义评分,低于阈值的数据需重采 |
标注一致性这个指标,我特别看重。曾经有个项目,两个标注员对“轻微划痕”的理解差了 30%,导致模型训练时 loss 死活降不下去。后来我强制要求每周做一次一致性校验,把 IoU 低于 0.7 的样本拿出来讨论,统一标准。两周后,标注一致性从 82% 提升到了 97%,模型精度也跟着涨了 5 个点。
3.5 数据集构建全流程框架
下面这张图,是我自己项目里一直在用的数据集构建流程。你可以把它当作一个检查清单:
这个流程看起来简单,但每个环节都有坑。我见过最典型的错误是:采集阶段只关注缺陷样本,忽略了正常样本的多样性。结果模型对正常产品过拟合,稍微有点光照变化就误报。记住,正常样本的分布宽度,决定了模型的鲁棒性。
3.6 实战建议:从零搭建数据集
如果你现在要开始一个新项目,我建议按这个顺序来:
- 第一步:花 1 天时间,跟产线工程师聊清楚所有缺陷类型和出现频率。
- 第二步:用 CVAT 搭建标注环境,创建项目、导入图片、分配任务。
- 第三步:先标 100 张,做一次一致性校验,统一标注规范。
- 第四步:批量标注 + 清洗,每天检查一次质量指标。
- 第五步:全部完成后,做一次最终质量评估,不合格的数据打回重采。