如何更好地预处理图像以获得更好的深度学习结果?

我们正在尝试使用卷积神经网络来分类良好表面和有缺陷的表面。

良好和不良图像大多如下所示:

良好图像:

enter image description hereenter image description here

不良图像:

enter image description hereenter image description here

  1. 图像相对较大(高度:800像素,宽度:500像素)
  2. 缺陷相对于图像而言非常局部
  3. 背景非常嘈杂
  4. 深度学习(6 x 卷积+池化 -> 展平 -> 密集64-> 密集32)的结果非常差(可能是由于有限的不良样本和非常小的缺陷模式)
  5. 还有其他缺陷模式,如非常微妙的划痕、残留物和污渍等,这是我们希望使用深度学习而不是特定特征工程的主要原因之一。
  6. 我们可以并且愿意积累更多的缺陷图像。

因此问题是:

  1. 在实践中,深度学习是否是这种缺陷检测的合适工具。
  2. 如果是,我们如何调整或预处理图像以适应深度学习模型真正能够处理的格式。(我们能否应用一些已知的过滤器来大大减少背景噪音?)
  3. 如果不是,除了深度模型外,还有哪些其他实用的技术可以使用。模板匹配或其他任何方法是否适合这类问题?

更新:提出明确的圆形条纹检查器是一个非常好的主意。它可以直接用于检查模式是否被扰乱,或者作为深度学习的预处理步骤。


更新:一个更微妙的模式“划痕”。从风扇区域的底部开始有一条划痕,向上并稍微向右延伸。

enter image description here


回答:

在实践中,深度学习是否是这种缺陷检测的合适工具。

深度学习当然是一种有望通用的可能性。一般来说,它应该是最后的手段,而不是首选方法。其缺点包括:

  • 难以纳入先验知识。
  • 因此,你需要大量的数据来训练分类器以适应一般情况。
  • 如果成功,模型是不透明的。它可能依赖于微妙的属性,如果制造过程稍有改变,可能会导致失败,而且没有简单的方法来修复它。

如果是,我们如何调整或预处理图像以适应深度学习模型真正能够处理的格式。(我们能否应用一些已知的过滤器来大大减少背景噪音?)

无论最终决定使用哪种分类器,预处理都应该是最优的。

照明:照明不均匀。我建议定义一个感兴趣区域,在该区域内照明足够亮以便能看到东西。我建议计算许多图像的平均强度,并用此来归一化亮度。结果将是裁剪到感兴趣区域的图像,其中照明是均匀的。

圆形条纹:在你展示的图像中,由于条纹是圆形的,它们的方向取决于图像中的位置。我建议使用一种变换,将感兴趣区域(圆的一部分)变换成一个梯形,使每条条纹水平且每条条纹的长度保持不变。

如果不是,除了深度模型外,还有哪些其他实用的技术可以使用。模板匹配或其他任何方法是否适合这类问题?

与其识别缺陷,不如尝试识别完整的结构,其属性相对恒定。(这就是我在评论中建议的圆形条纹检查器)。在这里,一个明显的测试方法是,在上述预处理过的图像中,每个像素进行二维傅里叶变换。如果条纹完整,你应该看到强度变化的频率在水平方向上远低于垂直方向。我会将这两个量绘制出来,对于许多“良好”和“不好”的像素进行检查,看看这是否已经允许进行一些分类。

如果可以用这种方法预选可能的缺陷,然后你可以裁剪出一个小图像,并将其提交给深度学习或任何其他你想使用的方法。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注