缺陷检测是是视觉检测中最常见的需求,也是相对来说最复杂的需求。陷检测工业场景非常分散,特点难以归纳,不管用任何手段去描述缺陷,都不能做到明显可分。比如按照面积、灰度值等绘制其直方图,中间过渡区域永远存在一定量的样本,即缺陷特征处于灰色地带。
工业场景下的缺陷检测现状:
1、缺陷的界限难定,难以对一些轮廓不明显的缺陷做判别;
2、存在缺陷类间差距小,类内差距大的情况;
3、缺陷形态、纹理、位置不固定;
4、对于缺陷分类,高速节拍的需求越来越多
由于缺陷的多样性,缺陷特征不像颜色、面积、圆度、矩形度,角度、长度等等这些容易量化的指标,可以通过传统算法提取出特征形态,并实现较高的检测精度。在复杂的缺陷场景下,很难收集到全部形态的缺陷样本,且部分特征肉眼也难以区分。如下图八个特征中,只有红框标识的缺陷特征(4,6,8)是需要检出的,而且这三种都属于同一种类别的缺陷,这就导致传统算法无法灵活适用,项目优化的成本也高。
某项目缺陷检测缺陷和干扰项对比
传统算法的价值和不足:
1、对低级别的缺陷边缘信息做描述和表征,对成像质量稳定的场景,检出率高,配置简单,且不需要周期迭代,实施周期短。
2、对高级别的缺陷形态(如背景纹理复杂,缺陷异变,相似特征边缘交叉等情况),仅用传统算法难以做到准确的检出和分类
3、即便搭建了针对性的传统算法方案,仍是具有一定程度的误检率,且面对项目风险时,对算法或方案调优需耗费大量资源。
4、如图中的圆查找、匹配模板定位不准的情况,就需要提前对图像做预处理,但不一定适用于所有样本。
深度学习算法的价值和不足:
1、深度学习在描述图像中的高级信息,如多个缺陷特征边缘的交叉,局部缺陷外观的预测等都有着明显的优势,由于卷积核的特征提取方式,对缺陷特征的检出具备尺度不变性,无论缺陷位于区域的哪个位置具备准确识别的可能性。
2、前期需要收集缺陷样本迭代,从Demo到上线的周期较长;
3、端到端的算法,外部无法介入调整,复杂场景且样板不足的情况下,模型难以收敛;
个人思考:
缺陷检测项目的落地,不仅仅是算法的问题,而是整个系统方案的全局考虑,如光学设计,结构设计,软件设计及算法模型等,而且算法层面深度学习和传统算法部不是互斥的两个概念,而是相辅相成。