主要观点总结
文章提出一种基于重构网络的无监督缺陷检测算法,解决工业环境中缺陷样本获取困难的问题。算法包括两个阶段:图像重构网络训练阶段和表面缺陷区域检测阶段。训练阶段使用全卷积自编码器设计重构网络,使用少量无缺陷样本进行训练,使得重构网络能够生成无缺陷重构图像。缺陷检测阶段以重构图像与待测图像的残差作为缺陷的可能区域,通过常规图像操作实现缺陷的定位。实验表明,该算法具有较强的鲁棒性和准确性,适合工业在线检测。
关键观点总结
关键观点1: 重构网络的无监督缺陷检测算法
提出一种基于重构网络的无监督缺陷检测算法,解决工业环境中缺陷样本获取困难的问题。
关键观点2: 训练阶段和检测阶段
算法包括两个阶段:图像重构网络训练阶段和表面缺陷区域检测阶段。
关键观点3: 全卷积自编码器
使用全卷积自编码器设计重构网络,仅使用少量无缺陷样本进行训练,生成无缺陷重构图像。
关键观点4: 检测阶段实现缺陷定位
缺陷检测阶段以重构图像与待测图像的残差作为缺陷的可能区域,通过常规图像操作实现缺陷的定位。
关键观点5: 实验验证
实验表明,该算法具有较强的鲁棒性和准确性,适合工业在线检测。
正文
重构过程通常分解为编码变换φ 和解码变换 γ, 定义如下:
(1)
式中, I∈R
W×H
表示图像样本的空间域, 通过函数φ 映射到隐层空间, F表示隐层空间中对应的图像样本特征, 函数φ 由编码模块实现. 函数γ 将隐层空间对应的图像样本特征F再映射回原图像样本的空间域, 该函数由解码模块实现.
令z = φ (I) ∈ F, 编码和解码过程分别描述为:
(2)
式中, I'表示重构图像, ∘ 表示卷积, σ表示激活函数, W和W'分别表示编码卷积核和解码卷积核, b和b'分别表示编码偏差和解码偏差.
ReNet-D的网络结构如图3所示, 为适应较大图像, 将原图划分成若干图像块, 通常大小为16 × 16、32 × 32和64 × 64作为网络的输入. ReNet-D利用1 × 1、3 × 3和5 × 5三种卷积核来获得多尺度特征, 并将多尺度特征输入编码模块, 解码模块输出的结果再输入3个不同尺度的反卷积层, 获得最终的重构图像, 相比于MSCDAE[29]的高斯金字塔采样模型, 同样可以得到多尺度特征, 但降低了计算成本. ReNet-D的CAE模块包含4个卷积模块和4个反卷积模块. 每一个卷积模块包含一个卷积层、一个批标准化(Batch normalization, BN)层[38]和非线性激活层, 前3个卷积模块还包含能够改变图像尺度的池化层. 激活函数采用Relu. 前3个卷积层使用5 × 5卷积核, 最后一层使用3 × 3卷积核.
图 3 ReNet-D网络结构
Fig. 3 ReNet-D network structure
自编码器用于缺陷检测的机理在于: 基于对无缺陷背景的高敏感性完成对无缺陷背景的重建, 以及对有缺陷区域的低敏感性完成不完善的重建, 以此实现对缺陷的检测. 自编码器是一个输入和学习目标相同的神经网络, 网络层次的深浅也决定了自编码器对输入图像的复现能力, 若采用网络结构复杂的模型, 可以提高对样本特征复现能力, 但是同时也造成了对于缺陷区域复现能力的提高, 进行残差操作时, 会导致因缺陷部位差异不够明显而检测失败. ReNet-D采用轻量化的结构设计, 轻量的模型重建能力有限, 但通过多尺度特征和损失函数的设计, 既能使网络能充分学习到正常纹理的特征, 又能对缺陷区域不完善的重建获取缺陷部位的信息.
在ReNet-D的训练阶段, 以原始图像和重构图像之间的重构误差作为损失函数, 促进网络收敛. 以下分析并改进现有的评估重构误差的损失函数.
1)均方误差损失
均方误差损失是评估算法模型的重构图像和原图之间差异的常用损失函数, 定义为L2:
(3)
式中, Isrc表示输入的原图, Irec表示模型重构的图像, ω表示重构网络中的权重矩阵集, λ 表示正则化项的惩罚因子, 0
2)平均绝对误差损失
大多数工业产品的纹理背景并不规则, 异常特征易融入纹理背景, 且异常特征和正常纹理背景特征差异较小. 定义L1为平均绝对误差损失:
(4)
与L1损失相比, L2损失对异常值更敏感, 会过度惩罚较大的损失误差, 如MSCDAE[29]方法, 因而ReNet-D引入L1损失来优化网络训练.
3)结构损失
在评价重构网络模型的效果时, L1损失和L2损失采用逐像素比较差异方式, 并没有考虑图像的区域结构等特征. 对于一些非规则纹理图像样本的检测, ReNet-D引入结构相似性因子(Structural similarity index, SSIM)[39-40]构建损失函数, 使网络能适用复杂多变的纹理背景样本, 重构出更好的效果. SSIM 损失函数从亮度、对比度和结构3个指标对模型进行优化[41], 结果比L1或L2损失函数更能反映图像细节. 对于模型输入和输出的图像对(x,y)(x,y), SSIM定义为:
(5)
式中, α > 0, β > 0, γ > 0, l(x, y)表示亮度比较, c(x, y)表示对比度比较, s(x, y)表示结构比较. μ
x
和μ
y
分别是x 和y 的平均值, σ
x
和σ
y
是x和y的标准差. σ
xy
是x和y的协方差. C
1
、C
2
、C
3
是非0常数, 通常α=β=γ = 1, C
3
= C
2
/2.
SSIM的损失函数定义为:
(6)
重构网络用SSIM损失函数评价最后一层的输出结果和原图的差异, 还可以抽取多个不同尺度的反卷积层结果与对应的卷积层结果同时使用SSIM损失函数, 从而构建多尺度SSIM[42] (Multi-scale SSIM, MS_SSIM). 对于M个尺度, MS_SSIM损失函数定义为:
(7)
4) ReNet-D使用的损失函数
L1损失与MSE损失相比, 对像素级误差的惩罚更弱, 适合不规则纹理样本, 而LSSIMLSSIM可以训练重构网络去关注样本图像的亮度改变和颜色偏差, 从而保留图像的高频信息即图像边缘和细节. 为同时解决规则和无规则纹理图像样本缺陷的检测问题, 本文设计L1损失和LSSIMLSSIM结合的损失函数作为ReNet-D网络模型的损失函数, 如下:
(8)
式中, α 是权重因子, 取值范围为(0, 1), 用来平衡L1损失和LSSIM 的比重, 本文将通过实验比较不同权重因子和损失函数对ReNet-D检测结果的影响.
在检测阶段, 缺陷图像输入训练好的重构网络后, 网络会输出近似无缺陷图像, 即重构网络将有缺陷的区域“修复”成正常区域, 而保持无缺陷的区域, 根据这一特性, 对输出图像与输入图像的像素级差异, 经过常规图像处理技术, 便能精确的定位缺陷区域, 处理流程如下:
1)残差图获取
将输入图像(如图4(a)所示)与ReNet-D重构图像(如图4(b)所示)利用式(9)做差影, 得到重构网络对缺陷区域的重构误差, 获得的残差图如图4(c)所示, 图中包含了异常区域的位置信息. 其中, 图4(a) 为输入模型的原图, 图4(b)为ReNet-D重构图, 图4(c) 为由式(9)得到的残差图vv, (i,j)(i,j)为像素位置. 图4(d)为残差图滤波, 图4(e)为缺陷定位.
图 4 残差图处理流程
Fig. 4 The residual graph processing flow location
(9)
2)去噪处理
残差图图4(c)呈现出很多噪点, 形成伪缺陷, 影响对真实缺陷区域的判断, 使用均值滤波做去噪处理得到图4(d).