[织物瑕疵检测]D4Net: De-deformation defect detection network for non-rigidproducts with large patterns

该论文发自Information Sciences,属于ccf b的文献,主要贡献是针对自己收集的LELP数据集利用DNN网络进行训练,达到了接近0.97的准确度。

文章概括

D4Net的优点在于提出了一个数据集LELP,这个数据集是关于蕾丝的大图案变形图片,共有50种图案,66580张图片,远远超过了其他的数据集,它的表现也很好。

但是问题出现在,为什么D4Net在MVTec AD中Recall的表现不如人意?按理说像这种瑕疵检测我应当做的是宁愿损失精度也要让recall高(宁愿检测为瑕疵也不能让它漏过去)。。。

摘要

在工业界中,缺陷检测一直以来都是质量测控的关键步骤之一。然而,关于如何对于非刚性大图案产品区分出不想要的瑕疵与可接受的变形是一项始终没有解决的问题。针对于非刚性变形图片的良品参考图与瑕疵图,本文提出了D4NET网络用于瑕疵检测。该方法专注于研究从DNN中提取出的高级语义特征的差异,以强调可能存在缺陷的区域。在训练过程中,提出用一项边缘损失(marginal loss)来提高瑕疵和大图案变形之间的可分离性。最后的实验结果:Experimental results show that the D4Net yields the best performances of 96.9% accuracy and 91.7% F-measure in a real industrial dataset consisting of 67K images of lace fabric with large patterns from a worldwide top-10 lace fabric manufacturing company.这充分说明我们的方法在工业应用中的有效性。

关键词:瑕疵检测,非刚性材料,大图案,蕾丝织物工业

1. 引言

瑕疵检测的应用场景,目前主要是在某些具有重复图案的产品上,所以传统的模式识别一般是利用相邻图案建立标准参考图来识别在当前图案中的某些瑕疵。但是,当前很多工业产品的瑕疵都是小物体,这就导致了大部分的瑕疵检测算法都需要限制检测区域的size以此来检测小物体。这个限制就会导致问题:当我们要面对大图案物体时,往往只能看到小物体,而大图案的瑕疵往往会被混乱的纹理所隐藏掉导致难以检测

(接着作者开始讲非刚性产品的变形问题)首先,非刚性物体的变形是无法避免的。其次,非刚性变形在小图案产品上的影响可以忽略,但是在大图案物体的变形会被放大,具体情况如下图所示,可以通过热力图看到,大图案变形部分的影响远比瑕疵部分的影响大。所以如何在大图案非刚性产品中进行瑕疵检测是个大问题。

 首先,这个部分前人是有不少工作的,我会单独开一篇文章来整个简单的集体介绍。反正就是效果都不太好,因此作者的D4Net就显得更加弥足珍贵!作者的主要贡献是:

1. 前面的方法不好有一个原因是缺少非刚性变形物体的suitable reference(参考),作者这里搞了个蕾丝产品的LELP数据集,整了不少这种参考,用的方法是perceptual metirc(这个不知道是啥,后面再说)。

2. D4Net网络通过强调高级特征空间中的潜在瑕疵部分,可以实现减轻非刚性变形的影响

3. 在训练过程中,提出用一项边缘损失(marginal loss)来提高瑕疵和大图案变形之间的可分离性,实现方法是在高级特征空间里在有缺陷和无缺陷的地方设置一个边缘限制(margin constraints,我猜应该就是margin loss)。

2. 相关工作

这块作者分成了两个大部分进行论述:传统方法和深度学习的方法。

传统方法:针对于hand-crafted method,作者简要介绍了statistical, structural, spectral和model-based的方法,然后评论说:hand-crafted方法在一些小图案的数据集(dot,star等)有效果,因为小图案的语义信息(semantic context)数量多而且简单,hand-crafted方法可以捕捉到小图案的语义信息。然而大图案的语义信息复杂而且数量少,hand-crafted方法无法快速高效的捕捉到这些知识,所以在这种大图案的领域效果不好。

深度学习方法:作者又将这个部分分为了CNN和AutoEncoder(AE)两个部分。

在CNN部分作者简要介绍了几个相关工作,然后说由于缺少适当的reference,这些方法无法很好的区分缺陷和非刚性变形,导致效果不好。

AutoEncoder方法:跟CNN套路一样,不过评论是跟前面的hand-crafted方法的问题一样。

总结:过去的工作都会对大图案的缺陷和非刚性变形产生矛盾,所以我们的方法就很有用,接着又介绍了一遍自己的方法。

3. 文章主要工作

本文主要三个主要工作:

  • 收集到蕾丝的大图案数据集LELP,并根据perceptual loss做了reference图片集。
  • 提出D4Net网络,将图片提取出特征后进行二分类有缺陷还是无缺陷。(这个的创新是与传统方法对比而来的,因为深度学习网络可以提取到高维特征信息)
  • 针对于非刚性变形导致的误差,作者提出了margin loss来减轻影响,提高瑕疵检测准确度。

3.1 工业数据收集

LELP数据集是第一个专注于大图案非刚性产品的数据集。针对于每种蕾丝大图案,都有20-60张至少包含一个大图案的无缺陷图片作为reference。在实际场景中,根据机器编织速度的不同,拍照间隔在1-5秒,由于照片太大,所以每个照片都裁剪到512*512的patch,每张大图片包括若干个patch。LELP数据集共有66580张图片,其中41124是无瑕疵图片patch,25456是有瑕疵patch。

3.2 D4Net网络

单从网络而言,这个D4Net简单的令人不敢相信。主要分为两个步骤:Reference selection阶段瑕疵检测二分类阶段,其中瑕疵检测部分在train阶段加了个marginal loss用于限制非刚体图案变形导致的误差。

 3.2.1 reference selection(参考图片选择)

首先为每个大图案给定的参考图片进行特征提取建立一个reference images的特征数据库,然后根据perceptual metric的指标来为每个input images选择reference image。

关于perceptual loss的具体问题等后面再看,作者在这里的论述是:如何为参考选择模块选择metric是很重要的。然后分析了几个相关指标:对于常规的欧几里得距离和SSIM(图像结构相似度指标),作者认为这两个无法区分开瑕疵与非刚性变形,所以无法度量图片之间的相似度。而perceptual metric是基于高级的语义相似度来进行区分的,在测量图片之间的结构和语义特征时跟人类判断相似且都由于传统基于像素的测量方法。所以作者在这里用的是perceptual metric(这里需要加上SSIM与perceptual loss的区别

最后作者总结,虽然用perceptual loss可以完成reference selection部分的操作,但是大图案照片与其参考图片之间仍然具有非刚性变形的不匹配性,所以此时仍然无法直接用简单的模式识别进行瑕疵检测。

3.2.2 瑕疵检测二分类阶段

由于非刚性变形导致的不匹配情况在有瑕疵和无瑕疵的图片对(一个pair包括input image与reference image)都存在,所以有无瑕疵的最大不同点应该在缺陷部分。直觉上来讲,当input image与reference image比较时,在高维语义空间里瑕疵区域应该能比无瑕疵区域区别更大,所以作者设计了de-deformation网络用于提取图片与reference之间的最大可区分特征。

具体步骤如网络图所示,input image与reference image经过特征提取网络后分别得到特征F^{I}F^{R}, 再对这两个特征的差取global max pooling操作得到两者的最大可区分特征D^{F}, 公式如下

D^{F}=gp_{max}(F^{I} - F^{R})

D^{F}( 这里的D^{F}是2048维的向量)后面再连接一个全连接层进行二分类判断是否为瑕疵。(不过在这里,作者再次强调,这里的gp_{max}操作只能实现去掉瑕疵图中的变形效果,然而对于无瑕疵图的变形影响仍然无法消除,所以我们才需要后面的marginal loss。)

我们再继续对D^{F}进行全连接操作获得最后的分类特征值:

y' = \sigma (w_{FC}*D^{F}+b_{FC})

然后再来一个二分类交叉熵损失(binary cross-entropy loss function):

L^c = -\frac{1}{n} \sum_{x\varepsilon P}[yln({y_x}') + (1-y)ln(1-{y_x}')]

3.2.3 Marginal loss

这个部分的目的是减轻由于非刚性变形导致的误差,实现的效果应该是:输入的图如果是无瑕疵图,那么它和reference的语义特征的相似度应该很高;输入的图如果是有瑕疵图,那么瑕疵部分应该和reference的语义特征相似度应该比无瑕疵部分低。由于有瑕疵图和无瑕疵图对于非刚性变形的受影响效果不同,作者用了两个损失函数来实现这个效果。其中, 不同于前面二分类问题直接对特征相减,这个部分需要讨论的是图片相似度问题,因此为了表征两个图片之间的语义特征相似度,文章使用的是cosine similarity操作。

cosine similarity操作:

\phi (A,B)=\frac{A*B}{||A||||B||}

对于获取的特征F^{I}F^{R}, 通过cosine操作获取两者相似度S:

S_{ij}=\phi (F_{ij}^I, F_{ij}^R)

其中,如果两个图非常相似,那么S接近于1。越不相似,S接近于-1

当我们获得两个图片任意位置的相似度S_{ij}后,需要关注的是两者区别最大的位置,在cosine操作后就是S_{ij}的最小值部分,所以我们对S_{ij}取global min pooling操作获取两个图片区别最大的部分D^P,这里的P代表positive image pairs即无瑕疵图片对,相对的有D^N代表nagetive image pairs即有瑕疵图片对。

获取了input image与reference image的最大区别位置后,我们就可以设置相关的损失函数来限制非刚性变形的影响,这里我们是分别针对有瑕疵和无瑕疵图片对设置margin loss。

  • 针对于无瑕疵图片,最大的区别显然是非刚性变形。如果没有非刚性变形的影响,那么输入图片应该和reference图片的cosine相似度S_{ij}接近于1,即使对S_{ij}gp_{min}操作,D^P也应该无限接近于1,所以我们在这里设置positive margin loss使得D^P接近于1从而抵消非刚性变形导致的图片相似度损失:

L^{PM}=max(1-D^P-\delta_2, 0)

  •  针对于有瑕疵图片,我们希望优化的是这样的情况:非刚性变形导致的影响大于瑕疵部分的影响,即D^N大于D^P的情况(这时的情况是网络认为非刚性变形部分影响更大,导致变形部分cosine similarity变小,同时又认不出来瑕疵部分,导致瑕疵部分的cosine similarity变大)。所以我们可以设置nagetive margin loss减少这个情况:

L^{GM}=max(D^N-D^P+\delta_1, 0)

再将两个损失函数合起来:

L^M=L^{GM}+L^{PM}

最后再将分类和margin loss整合形成最后的总体损失函数:

L=L^{M}+L^{C}

4. 实验结果分析

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络 机器学习算法与神经网络机器学习算法与神经网络机器学习算法与神经网络

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值