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

Python 如何更好地预处理图像以获得更好的深度学习结果?,python,tensorflow,machine-learning,deep-learning,data-science,Python,Tensorflow,Machine Learning,Deep Learning,Data Science,我们正在试验应用卷积神经网络来分类好的表面和有缺陷的表面 好的和坏的图像主要如下所示: 好的: 坏的: 图像相对较大(高度:800像素,宽度:500像素) 相对于图像,缺陷非常局部和小 背景非常嘈杂 深度学习(6 x conv+pooling->flant->dense64->dense32)的结果非常糟糕 (可能是由于有限的不良样品和非常小的缺陷模式) 还有其他缺陷模式,如非常细微的划痕、残留和污点等,这是我们希望使用深度学习而不是特定特征工程的主要原因之一 我们可以并且愿意积累更多的

我们正在试验应用卷积神经网络来分类好的表面和有缺陷的表面

好的和坏的图像主要如下所示:

好的:

坏的:

  • 图像相对较大(高度:800像素,宽度:500像素)
  • 相对于图像,缺陷非常局部
  • 背景非常嘈杂
  • 深度学习(6 x conv+pooling->flant->dense64->dense32)的结果非常糟糕 (可能是由于有限的不良样品和非常小的缺陷模式)
  • 还有其他缺陷模式,如非常细微的划痕、残留和污点等,这是我们希望使用深度学习而不是特定特征工程的主要原因之一
  • 我们可以并且愿意积累更多的缺陷图像
  • 因此,问题是:

  • 在实践中,深度学习甚至是缺陷检测的合适工具
  • 如果是,我们如何调整或预处理图像,使其符合深度学习模型真正能够使用的格式。(我们可以应用一些已知的过滤器来降低背景噪音吗?)
  • 如果没有,除了深度模型,还有什么其他实用技术可以使用。 像模板匹配之类的事情是否真的适合这种类型的问题

  • 更新: 非常好的主意,拿出一个明确的圆形条纹检查器。 它可以直接用于检查模式受到干扰的位置,或者用作深度学习的预处理步骤


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

    深度学习是缺陷检测的合适工具吗 这在实践中是可行的

    深度学习当然是一种可能,有望普及。总的来说,它应该是最后的手段,而不是第一个办法。不利因素包括:

    • 很难包括先前的知识
    • 因此,您需要大量的数据来针对一般情况训练分类器
    • 如果成功,则模型是不透明的。它可能取决于细微的特性,如果制造过程发生了细微的变化,并且没有简单的方法来修复,就会导致它失败
    如果是,我们如何调整或预处理图像,使其符合需要的格式 深度学习模型确实可以与之配合使用。(我们可以申请一些吗 使背景噪音小得多的已知过滤器?)

    与最终决定使用的分类器无关,预处理应该是最佳的

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

    圆形条纹:在显示的图像中,由于条纹是圆形的,因此其方向取决于图像中的位置。我建议使用一种变换,将感兴趣的区域(圆的分数)变换为梯形,其中每条条纹是水平的,每条条纹的长度保持不变

    如果没有,除此之外还可以使用哪些实用技术 深度模型。像模板匹配之类的事情会发生吗 你真的适合这种类型的问题吗

    您可以尝试识别具有相对恒定属性的完整结构,而不是识别缺陷。(这将是我在评论中建议的圆形条纹检查器)。在这里,一个显而易见的测试将是在如上所述预处理的图像中的每个像素处进行2D傅里叶变换。如果条纹是完整的,您应该看到强度变化的频率在水平方向比垂直方向低得多。我只需要将这两个数量绘制成许多“好”和“坏”像素,然后检查是否已经允许进行一些分类


    如果你能用这种方法预先选择可能的缺陷,你就可以裁剪出一幅小图像,并对其进行深入学习或其他任何你想使用的方法

    你能试着手工制作一个检测算法,明确地检查圆形条纹吗?如果该模式受到干扰,则可能存在缺陷。如果仅此一步还不够,您可以考虑使用该步骤作为预处理来对齐图像,以使所建议的工件处于进一步处理的中心。您是否也可以显示一个更“微妙”的示例?我将很快上传这些微妙的示例@Acro Basto出于好奇:什么方法是成功的?@ArcoBast,Unet模型系列是本案例中最有希望的方法。