追溯视觉检测项目卡住的原因,很多时候问题出在图像而不是模型。缺陷在图像中拍得模糊,训练数据再怎么增加,准确率也不会提升。反过来说,如果图像中的缺陷清晰可见,用简单的规则也能判定。
相机与分辨率
分辨率不是从“要用多少百万像素的相机”出发,而是从必须找出的最小缺陷会拍成几个像素倒推计算。
- 确定要检测的视野(FOV)宽度。例:60 mm。
- 确定最小缺陷尺寸。例:0.2 mm。
- 确定该缺陷至少要跨几个像素才能稳定看到。现场通常以 3~5 个像素以上为目标。
- 所需水平像素数 = 60 ÷ 0.2 × 4 ≈ 1,200 像素。在此基础上留出余量来选择相机。
如果在零件移动过程中拍摄,还要一并考虑曝光时间。曝光期间零件移动超过 1 个像素,边缘就会模糊。对于长条零件或旋转体这类难以一次拍进一张图像的对象,则使用逐行连续拍摄的线扫相机。fineAi Viewer Pro 即用于线扫。
光源是制造对比度的工具
同一个零件,缺陷会随光源不同而显现或消失。选择光源时,要思考“缺陷反射光线的方式与周围有何不同”。
| 光源 | 容易看清的特征 | 例 |
|---|---|---|
| 环形光源 | 均匀照亮整体,颜色·污渍 | 一般外观 |
| 同轴光源 | 平整光亮表面上的划伤·压痕 | 金属加工面 |
| 背光 | 外轮廓形状、孔、尺寸 | 轮廓(剪影)测量 |
| 方向(斜射)光源 | 表面凹凸、浅划伤 | 微小压痕 |
设置多个方向光源并依次点亮拍摄,甚至可以计算出表面的高低起伏。该方法在 Photometric Stereo 课程中介绍。
触发:何时拍摄
零件如果经过输送带,相机必须在完全相同的位置拍摄。使用把传感器信号直接输入相机的硬件触发(GPIO),就能不受软件延迟影响,在固定位置拍摄。在由机械臂夹持零件并停在相机前的工作站(cell)中,则由机械臂控制器通过 Modbus 信号请求拍摄。
用配方固定条件
采集训练数据时和现场检测时的条件不同,模型就会收到从未见过的图像。因此要将相机曝光·增益、光源通道与亮度、镜头设置保存为配方(recipe)。在 fineAi Viewer 中创建的配方可以转换后导入 Multi-Inspector,让采集阶段和检测阶段在相同条件下运行。
送入模型前的预处理
拍摄的图像可以直接使用,但经过几项处理能让训练更稳定。在 Multi-Inspector 的检测模式设置(modeN_type)中可选择的预处理如下。
- histogram-eq / clahe — 拉开亮度分布,让暗部区域的缺陷显现出来。CLAHE 会把图像分成小区块,逐块调整对比度,因此适合只有一侧偏暗的图像。
- live_canny — 用 Canny 边缘生成零件的轮廓掩膜,只保留零件并移到画面中央。背景中的输送带纹理或夹具不会干扰判定。
- rotation-fix — 将零件旋转到相同方向摆正。下一课 对位 会详细说明。
现场检查清单
- 最小缺陷是否拍成 3~5 个像素以上?
- 同一个零件拍 10 次,亮度和位置是否一致?
- 把有缺陷和无缺陷的样品并排比较,人眼能否清楚看出差异?
- 是否已保存配方,并在采集和检测时使用同一个配方?
如果最后一个问题能有把握地回答“是”,就可以进入选择模型的阶段。