3. 视觉检测平台的数据采集与标注规范

在 HALCON 深度学习视觉检测项目中,模型精度的上限往往在数据采集与标注阶段就已经被决定。一个常见的误区是:先随便拍几百张图,标注完直接训练,发现漏检后再回头补数据。这种“边训边补”的方式会导致数据集版本混乱、标注标准漂移,最终模型指标无法复现。本节围绕工业相机与图像采集、缺陷样本采集策略、标注工具与 HALCON 数据格式、数据集划分与版本管理四个环节,给出可落地的工程规范。

一、工业相机与图像采集:先固定成像条件

HALCON 深度学习对图像质量的要求不是“越清晰越好”,而是“成像条件与产线一致且稳定”。采集前需要固定以下参数:相机型号与分辨率、镜头焦距与工作距离、光源类型(环形光、条形光、同轴光、背光)与角度、曝光时间、增益、触发方式。以某金属表面划痕检测为例,采用 500 万像素面阵相机、35 mm 镜头、工作距离 300 mm,配合低角度条形光,使划痕在图像中呈现为高对比度亮线;若改用同轴光,划痕几乎不可见。这说明光源方案直接决定缺陷是否“可被看见”。

采集时建议使用 HALCON 的 open_framegrabber 与 grab_image_async 实现连续异步采集,避免丢帧。对于运动产线,应使用硬件触发,由编码器或光电传感器给出触发信号,保证每张图像对应固定位置。采集完成后,用 get_image_size、min_max_gray 检查图像尺寸与灰度范围,剔除过曝、欠曝、模糊帧。建议每类缺陷至少采集 200~500 张有效图像,正常样本数量与缺陷样本保持同一量级,避免类别极度不平衡。

工业相机采集链路与成像条件控制 光源 环形/条形/同轴 被测工件 划痕/凹坑/脏污 工业相机 500万像素/35mm 采集卡/接口 GigE/USB3.0 HALCON主机 grab_image_async 硬件触发:编码器/光电传感器 保证每张图像对应固定产线位置 采集后质量检查(示例阈值) • 图像尺寸一致:get_image_size 返回固定宽高 • 灰度范围:min_max_gray 检查,避免过曝/欠曝 • 清晰度:拉普拉斯方差低于阈值则剔除 • 每类缺陷有效样本 ≥ 200 张

二、缺陷样本采集策略:覆盖真实分布

缺陷样本采集的核心是“覆盖真实产线分布”,而不是“凑数量”。建议按缺陷类型、严重程度、位置、方向四个维度分层采集。以划痕为例:类型上区分长划痕、短划痕、交叉划痕;严重程度上区分轻微、中等、严重;位置上覆盖工件中心、边缘、角落;方向上覆盖 0°、45°、90°、135°。这样训练出的模型对方向与位置变化更鲁棒。

对于稀有缺陷,可采用“少量真实 + 合理增强”的策略。HALCON 提供 augment_image 或通过 rotate_image、scale_image、add_noise 生成增强样本,但增强必须保持缺陷语义不变。例如,将划痕旋转 90° 是合理的,但把划痕模糊到不可见则不合理。建议真实样本与增强样本比例控制在 1:1 到 1:3 之间,并在数据集中明确标记来源,便于后续追溯。

三、标注工具与 HALCON 数据格式

HALCON 深度学习支持多种标注格式,常用的是 DLDataset 目录结构:每个类别一个子目录,图像与对应的标注文件同名。对于分类任务,标注即类别目录;对于检测与分割任务,标注文件通常为 .json 或 HALCON 的 .hobj 格式,记录边界框或像素级掩膜。标注工具可选择 HALCON 自带的 MVTec Deep Learning Tool,也可使用 LabelImg、CVAT 等通用工具,但导出后需转换为 HALCON 可读格式。

标注规范必须书面化,至少包含:缺陷定义(什么算、什么不算)、边界框贴合规则(紧贴缺陷外轮廓还是留 2 像素余量)、遮挡处理、多缺陷重叠处理、最小标注尺寸。例如规定“划痕长度小于 5 像素不标注”,可避免标注噪声。标注完成后,建议由第二人抽检 10% 样本,计算标注一致性;若一致性低于 95%,需重新培训标注标准。

# HALCON DLDataset 目录结构示例
dataset/
├── train/
│   ├── scratch/
│   │   ├── img_0001.png
│   │   ├── img_0001.json
│   │   └── ...
│   └── normal/
│       └── ...
├── val/
│   └── ...
└── test/
    └── ...

四、数据集划分与版本管理

数据集划分建议按 7:2:1 分配训练集、验证集、测试集。划分时必须保证同一工件的图像只出现在一个子集中,避免数据泄漏。例如,若同一工件拍摄了 10 张不同角度的图像,这 10 张应全部进入训练集或全部进入验证集,而不能拆分。验证集用于调整超参数与早停,测试集只在最终评估时使用一次。

版本管理方面,建议为每次数据变更打标签,如 v1.0_20250101,并记录变更内容:新增多少张、修改了哪些标注、调整了哪些类别。可使用 DVC 或 Git LFS 管理大文件,配合 dataset_info.json 记录图像数量、类别分布、划分比例。每次训练前,先确认数据集版本与标注版本一致,避免“用旧标注训新数据”。

建议在项目根目录维护一份 dataset_card.md,记录采集设备、光源方案、标注规范版本、划分比例与已知偏差。这份卡片是模型复现与问题排查的第一手依据。
不要用测试集反复调参。测试集一旦参与模型选择,其评估结果就不再客观。若必须调参,请从训练集中再划分出验证集。

综上,数据采集与标注规范的本质是“把不确定性提前消除”。成像条件固定、样本覆盖真实分布、标注标准统一、版本可追溯,这四点做到位,后续的 HALCON 模型训练与部署才有稳定基础。