madobet / webooru

Web Danbooru
32 stars 6 forks source link

深度学习实现缺陷检测算法汇总 - 知乎 #145

Open madobet opened 4 years ago

madobet commented 4 years ago

作者:Tom Hardy
Date:2020-2-17
来源:公众号【3D 视觉工坊】

前言

缺陷检测是工业上非常重要的一个应用,由于缺陷多种多样,传统的机器视觉算法很难做到对缺陷特征完整的建模和迁移,复用性不大,要求区分工况,这会浪费大量的人力成本。深度学习在特征提取和定位上取得了非常好的效果,越来越多的学者和工程人员开始将深度学习算法引入到缺陷检测领域中,下面将会介绍几种深度学习算法在缺陷检测领域中的应用。

1、A fast and robust convolutional neural network-based defect detection model in product quality control

检测对象:布匹缺陷。

主要思想:这是一篇比较早的文章了,主要通过对输入图像进行切片,然后把切片图像送入深度学习网络中做判断,较为简单。在推理时,通过滑窗检测方式进行逐位置识别。

优缺点:

1、 由于使用分类方式,准确率较为高

2、 由于滑窗遍历,速度慢

2、Automatic Defect Detection of Fasteners on the Catenary Support Device Using Deep Convolutional Neural Network(基于深度卷积网络的接触网支架紧固件缺陷自动检测)

检测对象:紧固件是否缺失。

主要思想:检测接触网支架紧固件是否缺陷,采用方式为 Object Detection。

文章主要采用三阶段方式:

第一阶段:定位主要结构件位置,采用 SSD 作为检测网络。

第二阶段:对第一阶段检测出的各个结构图像中的紧固件做检测,也是采用 Object Detection 方式。

第三阶段:在第二阶段的基础上,对检测图像进行 crop,将其送到分类网络进行分类,看是否缺少紧固件。

思路也算比较简单,但不是端到端,实际应用起来可能比较困难。

3、Automatic Fabric Defect Detection with a Multi-Scale Convolutional Denoising Autoencoder Network Model(基于多尺度卷积消噪自编码网络模型的织物疵点自动检测)

检测对象:纺织物和布匹的瑕疵点检测。

主要思想:织物疵点检测是纺织制造业质量控制中必不可少的环节。传统的织物检测通常采用人工视觉的方法进行,效率低,长期工业应用精度差。论文提出使用高斯金字塔结合语义分割的方式来重建缺陷,推理阶段通过结合多尺度结果,完成融合。这种方法在织物疵点检测中有几个突出的优点。首先,只需少量的无缺陷样本就可以进行训练。这对于收集大量有缺陷样品困难且不可行的情况尤其重要。其次,由于采用了多模态积分策略,与一般的检测方法相比,该方法具有更高的鲁棒性和准确性。第三,根据我们的结果,它可以处理多种类型的纺织面料,从简单到复杂。实验结果表明,该模型具有较强的鲁棒性和良好的整体性能。

模型结构:

检测结果:

4、An Unsupervised-Learning-Based Approach for Automated Defect Inspection on Textured Surfaces

检测对象:作者和上一篇文章相同,思想也非常相像,主要是针对均匀和非规则纹理表面上的缺陷。这里不再多叙述,有兴趣的话可以阅读原论文~

5、Automatic Metallic Surface Defect Detection and Recognition with Convolutional Neural Networks

检测对象:金属表面缺陷检测

主要思想: 本文讨论了用一种能准确定位和分类从实际工业环境中获取的输入图像中出现的缺陷的双重过程来自动检测金属缺陷。设计了一种新的级联自动编码器(CASAE)结构,用于缺陷的分割和定位。级联网络将输入的缺陷图像转化为基于语义分割的像素级预测掩模。利用压缩卷积神经网络(CNN)将分割结果的缺陷区域划分为特定的类。利用工业数据集可以成功地检测出各种条件下的金属缺陷。实验结果表明,该方法满足金属缺陷检测的稳健性和准确性要求。同时,它也可以扩展到其他检测应用中。

其实还是使用语义分割网络先定位像素级别的缺陷位置,然后通过分类网络对缺陷进行识别。

实验结果:

6、Autonomous Structural Visual Inspection Using Region-Based Deep Learning for Detecting Multiple Damage Types

检测对象:混凝土裂缝、中、高两级钢腐蚀、螺栓腐蚀和钢分层五种损伤类型

主要思想:通过 Faster RCNN 检测网络实现的,偏应用型的一篇文章,效果不是特别好,这里只提供一个检测思路,详细内容请看论文。

7、A Surface Defect Detection Method Based on Positive Samples

检测对象:密集织物

主要思想:本文提出了一种新的基于正样本训练的缺陷检测框架。基本检测的概念是建立一个重建网络,它可以修复样本中存在的缺陷区域,然后对输入样本与恢复样本进行比较,以指示缺陷区域的准确。结合 GAN 和自动编码器进行缺陷图像重建,利用 LBP 进行图像局部对比度检测缺陷。在算法的训练过程中,只需要正样本,不需要缺陷样本和人工标注。

主要结构:

在训练阶段,x 是从训练集中随机拍摄的随机照片。C(x∼| x)是一个人工缺陷模块。它的功能是自动生成损坏的、有缺陷的样本,x∼是它的输出。EN 和 DE 构成一个自动编码器,EN 是一个编码器,DE 是一个解码器,整个自动编码器在 G an 模型中可以看作是一个生成器。G 的任务是修复有缺陷的图片。D 是一个鉴别器,D 的输出是它的鉴别器是真正样本的概率。

在测试阶段,我们将测试图像 x 输入到自动编码器 G 中,得到恢复图像 y,然后使用 LBP 算法提取 x 和 y 的特征,并比较 x 的每个像素的特征,其中 x 和 y 的特征差异较大,即缺陷。

通过 GAN 的方式来进行缺陷检测和重建一直是个热点方向,而且效果比较好,本文的思路算是比较新颖,值得借鉴。

实验结果:

8、Segmentation-based deep-learning approach for surface-defect detection

检测对象:表面缺陷检测、裂纹检测(金属)

主要思想:本文主要采用了两个网络,一个是判别网络,一个是分割网络。分割网络主要完成缺陷的分割,而判别网络在此基础上对缺陷作进一步分类。

算法很新颖,实验结果也还不错:

9、SDD-CNN: Small Data-Driven Convolution Neural Networks for Subtle Roller Defect Inspection(小数据驱动卷积神经网络在轧辊微小缺陷检测中的应用)

检测对象:轧辊微小缺陷检查

主要思想:滚柱轴承是旋转机械中最关键、应用最广泛的部件之一。外观缺陷检测是轴承质量控制的关键。然而,在实际工业中,轴承缺陷往往是极其细微的,并且发生的概率很低。这就导致了正负样本数量的分布差异,使得依靠数据驱动的检测方法难以开发和部署。本文提出了一种用于轧辊微小缺陷检测的小数据驱动卷积神经网络(SDD-CNN)一种用于小数据预处理的集成方法。首先,应用标签膨胀(LD)来解决类分布不平衡的问题。其次,提出了一种半监督数据增广(SSDA)方法,以更有效和可控的方式扩展数据集。该方法通过训练一个粗糙的 CNN 模型来生成地面真值类激活,并指导图像的随机裁剪。第三,介绍了 CNN 模型的四种变体,即 SqueezeNet v1, Inception v3,VGG-16, and ResNet-18,并将其用于轧辊表面缺陷的检测和分类。最后,进行了一系列丰富的实验和评估,表明 SDD-CNN 模型,特别是 SDD Inception v3 模型,在滚筒缺陷分类任务中执行得非常好,top-1 精度达到 99.56%。此外,与原始 CNN 模型相比,SDD-CNN 模型的收敛时间和分类精度都有显著提高。

网络结构:

实验结果:

https://zhuanlan.zhihu.com/p/107436354

wangyexiang commented 4 years ago

总结得很好,赞,请问一下,这些文章有源码吗?@madobet

madobet commented 4 years ago

总结得很好,赞,请问一下,这些文章有源码吗?@madobet

  1. 找对应文章的原文看作者是否提供了实现
  2. 搜索是否有基于该文章的第三方实现
  3. 自己实现