3. 数据集构建:数据采集、标注工具与质量评估

做工业视觉,圈里人都知道一句话:“模型的上限,在数据里”。我见过太多团队花几个月调网络结构,结果换个产线数据就崩了。说白了,数据集的构建才是整个项目的基石。这一章,我就把数据采集、标注工具选型、清洗和质量评估这些实战经验,掰开了跟你聊聊。

3.1 数据采集:从产线到硬盘的第一公里

数据采集不是拿个相机随便拍。工业场景下,你得考虑光照、角度、产品型号、缺陷类型分布。我习惯把采集策略分成三步走:

  1. 覆盖全缺陷类型:划痕、脏污、缺料、毛刺、变形……每种至少 200 张正样本 + 50 张负样本。
  2. 模拟产线环境:不同工位的光照强度、相机角度、传送带速度都要录进去。
  3. 留足冗余:实际采集量要比标注量多 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 万张图片的项目里用了 LabelImg,结果标注员之间没有统一标准,有人把划痕标成矩形框,有人标成多边形,最后合并时格式混乱,花了整整一周做数据清洗。从那以后,超过 5000 张的项目我必上 CVAT。

3.3 数据清洗:把垃圾数据挡在门外

数据清洗是脏活,但也是回报率最高的环节。我总结了一套“四步清洗法”:

  1. 去重:产线连续拍摄会产生大量重复帧,用哈希或感知哈希去重。
  2. 去模糊:运动模糊、对焦不准的图片,用拉普拉斯方差检测,低于阈值直接丢弃。
  3. 去异常:曝光过度、全黑、遮挡严重的图片,通过像素统计筛除。
  4. 去标注错误:检查标注框是否超出图像边界、类别是否匹配、尺寸是否合理。

你想想看,如果训练集里混了 10% 的模糊图片,模型学到的特征就是模糊的,推理时遇到清晰图片反而会误判。这就是典型的“垃圾进,垃圾出”。

特别注意: 清洗时不要只依赖自动化脚本。我建议每批数据清洗后,人工抽检 5%-10% 的样本。尤其是标注错误,自动化工具很难发现“框对了但类别标错”这种问题。

3.4 数据质量评估:用指标说话

数据清洗完了,怎么知道质量够不够?我习惯用三个核心指标来评估:

指标 计算公式 合格标准 说明
标注一致性 IoU ≥ 0.7 的标注占比 ≥ 95% 同一张图由两人标注,框的重叠度
类别平衡度 各类别样本数 / 总样本数 每类 ≥ 5% 防止模型对少数类欠拟合
图像质量分 清晰度 + 对比度 + 信噪比加权 ≥ 0.8 自定义评分,低于阈值的数据需重采

标注一致性这个指标,我特别看重。曾经有个项目,两个标注员对“轻微划痕”的理解差了 30%,导致模型训练时 loss 死活降不下去。后来我强制要求每周做一次一致性校验,把 IoU 低于 0.7 的样本拿出来讨论,统一标准。两周后,标注一致性从 82% 提升到了 97%,模型精度也跟着涨了 5 个点。

3.5 数据集构建全流程框架

下面这张图,是我自己项目里一直在用的数据集构建流程。你可以把它当作一个检查清单:

数据集构建全流程框架 数据集构建全流程框架 数据采集 覆盖缺陷类型 + 环境 标注 LabelImg / CVAT 数据清洗 去重 / 去模糊 / 去异常 质量评估 一致性/平衡度 不合格则返回采集或标注阶段 标注工具对比 • LabelImg:本地单机,适合小团队 • CVAT:Web协作,支持自动标注 • 选型建议:5000张以下用LabelImg 四步清洗法 ① 去重(哈希/感知哈希) ② 去模糊(拉普拉斯方差) ③ 去异常(像素统计) 核心质量指标 标注一致性 (IoU ≥ 0.7) ≥ 95% 类别平衡度 每类 ≥ 5% 图像质量分 ≥ 0.8

这个流程看起来简单,但每个环节都有坑。我见过最典型的错误是:采集阶段只关注缺陷样本,忽略了正常样本的多样性。结果模型对正常产品过拟合,稍微有点光照变化就误报。记住,正常样本的分布宽度,决定了模型的鲁棒性。

3.6 实战建议:从零搭建数据集

如果你现在要开始一个新项目,我建议按这个顺序来:

  • 第一步:花 1 天时间,跟产线工程师聊清楚所有缺陷类型和出现频率。
  • 第二步:用 CVAT 搭建标注环境,创建项目、导入图片、分配任务。
  • 第三步:先标 100 张,做一次一致性校验,统一标注规范。
  • 第四步:批量标注 + 清洗,每天检查一次质量指标。
  • 第五步:全部完成后,做一次最终质量评估,不合格的数据打回重采。
核心原则: 数据集的构建不是一次性的。随着产线换型、工艺调整,你需要持续采集新数据、重新评估质量。我每个季度都会做一次数据集的“健康检查”,确保模型不会因为数据分布漂移而退化。