我们正在尝试使用卷积神经网络来分类良好表面和有缺陷的表面。
良好和不良图像大多如下所示:
良好图像:
不良图像:
- 图像相对较大(高度:800像素,宽度:500像素)
- 缺陷相对于图像而言非常局部和小
- 背景非常嘈杂
- 深度学习(6 x 卷积+池化 -> 展平 -> 密集64-> 密集32)的结果非常差(可能是由于有限的不良样本和非常小的缺陷模式)
- 还有其他缺陷模式,如非常微妙的划痕、残留物和污渍等,这是我们希望使用深度学习而不是特定特征工程的主要原因之一。
- 我们可以并且愿意积累更多的缺陷图像。
因此问题是:
- 在实践中,深度学习是否是这种缺陷检测的合适工具。
- 如果是,我们如何调整或预处理图像以适应深度学习模型真正能够处理的格式。(我们能否应用一些已知的过滤器来大大减少背景噪音?)
- 如果不是,除了深度模型外,还有哪些其他实用的技术可以使用。模板匹配或其他任何方法是否适合这类问题?
更新:提出明确的圆形条纹检查器是一个非常好的主意。它可以直接用于检查模式是否被扰乱,或者作为深度学习的预处理步骤。
更新:一个更微妙的模式“划痕”。从风扇区域的底部开始有一条划痕,向上并稍微向右延伸。
回答:
在实践中,深度学习是否是这种缺陷检测的合适工具。
深度学习当然是一种有望通用的可能性。一般来说,它应该是最后的手段,而不是首选方法。其缺点包括:
- 难以纳入先验知识。
- 因此,你需要大量的数据来训练分类器以适应一般情况。
- 如果成功,模型是不透明的。它可能依赖于微妙的属性,如果制造过程稍有改变,可能会导致失败,而且没有简单的方法来修复它。
如果是,我们如何调整或预处理图像以适应深度学习模型真正能够处理的格式。(我们能否应用一些已知的过滤器来大大减少背景噪音?)
无论最终决定使用哪种分类器,预处理都应该是最优的。
照明:照明不均匀。我建议定义一个感兴趣区域,在该区域内照明足够亮以便能看到东西。我建议计算许多图像的平均强度,并用此来归一化亮度。结果将是裁剪到感兴趣区域的图像,其中照明是均匀的。
圆形条纹:在你展示的图像中,由于条纹是圆形的,它们的方向取决于图像中的位置。我建议使用一种变换,将感兴趣区域(圆的一部分)变换成一个梯形,使每条条纹水平且每条条纹的长度保持不变。
如果不是,除了深度模型外,还有哪些其他实用的技术可以使用。模板匹配或其他任何方法是否适合这类问题?
与其识别缺陷,不如尝试识别完整的结构,其属性相对恒定。(这就是我在评论中建议的圆形条纹检查器)。在这里,一个明显的测试方法是,在上述预处理过的图像中,每个像素进行二维傅里叶变换。如果条纹完整,你应该看到强度变化的频率在水平方向上远低于垂直方向。我会将这两个量绘制出来,对于许多“良好”和“不好”的像素进行检查,看看这是否已经允许进行一些分类。
如果可以用这种方法预选可能的缺陷,然后你可以裁剪出一个小图像,并将其提交给深度学习或任何其他你想使用的方法。