异常检测模型学习的是“良品长这个样子”。但如果良品每次都以不同角度拍摄,模型要学的“正常”范围就会扩大到所有旋转后的样子。范围越宽,微小缺陷就越容易被淹没其中。对位会在拍摄后立即消除这个问题。
圆形零件:Ring 对位
卡箍、圆环、轴承这类圆形零件按以下顺序对位。Multi-Inspector 的 rotation-fix 模式就是采用这种方式。
- 找出中心 — 通过圆检测(Hough Circle)或对轮廓进行圆拟合(circle fitting)求出零件中心。
- 找出方向 — 圆形旋转后看起来都一样,因此要找出凸片或耳部(ear)这类只在一处存在的特征的角度。
- 旋转·平移 — 将中心移到画面中央,将特征转到 12 点钟方向。
任意形状:Shape(PCA)对位
像安全带锁扣这种非圆形零件找不到圆。这时改用零件区域的图像矩求出姿态。
- 一阶矩(重心) — 零件的位置。
- 二阶矩(主轴) — 零件延伸最长的方向。与主成分分析(PCA)的计算相同。
- 三阶矩(不对称度) — 仅靠主轴,零件前后翻转 180° 时无法区分。把质量更集中的一侧定为前方,即可消除这种歧义。
详细计算和设置请参阅技术笔记 如何对位非圆形零件。如果不需要方向、只需对齐位置,则使用 Center-Only 对位。
对位后判定:yolo_align
Multi-Inspector EB 产线版本从 v2.2 起支持 yolo_align 模式。先将零件对位并居中,再用 YOLO 找出缺陷。由于缺陷总是出现在相近的位置和方向,即使数据量相同,检测也更稳定。详细设置请参考 yolo_align 模式 笔记。
训练与检测必须使用相同的对位
对位在训练时执行一次,在现场检测时再执行一次。两者只要稍有不同,模型收到的图像就会和训练时不一样。因此 Multi-Inspector 会直接沿用 fineAi Image Processing Tool 中创建的对位设置。准备数据时的对位与产线上运行的对位,会得到相同的结果。
为失败做好准备
对位是在图像中寻找特征的过程,因此可能失败。例如零件只拍到一半,或光源瞬间闪烁。对位失败时,Multi-Inspector 会用原始图像继续判定并记录日志。产线不会因对位错误而停机,失败的图像也可以事后收集起来分析原因。
何时不使用对位
- 零件固定在夹具上、每次都在相同位置拍摄时,不做对位也已足够。
- 形状不固定的对象(食品、农产品等)难以确定对位基准。这时适合使用对位置变化不敏感的模型(如 AnomalyDINO),或不经对位的 YOLO。请参考 选择异常检测算法 课程。