孙亚新,刘韵婷,于清淞,葛忠文
(沈阳理工大学 自动化与电气工程学院,沈阳 110159)
目前异常检测正快速发展成为一个重要的领域。最新趋势表明,虽然大型数据集的可用量增加,但数据集高度不平衡。在大多数情况下,数据集中正常样本占比非常高而异常样本占比很小,并且异常类提供的数据仅能代表部分异常情况。异常检测是解决样本不均衡问题的一种方法,其思想是在仅输入正常样本的情况下学习特征,然后在进行测试时将不完全符合该正常特征的样本识别出来判为异常。
异常检测方法中的一个普遍假设是异常样本不仅在高维图像空间与正常样本不同,而且在低维潜在空间的编码特征与正常样本也不同,因此较好的解决办法是将高维图像映射到低维潜在空间再进行比较,但关键问题是如何通过网络获得准确的正常样本潜在空间的特征分布。
轮胎的内部是子午线,其生产工艺非常复杂,在生产过程中很容易出现各种各样的缺陷。因此在轮胎出厂前必须进行严格的产品缺陷检测。轮胎X光图像是对轮胎进行X射线照射,根据内部不同材料和部位对X射线的吸收量不同,通过图像处理得到不同灰度级表示的数字图像[1]。为提高轮胎缺陷检测准确率,诸多学者进行了大量的算法研究。郭奇[2]基于模板匹配算法提出划分图像区域的方法,用于检测轮胎帘线弯曲和气泡等缺陷。崔雪红等[3]基于卷积神经网络提出端到端的图像自动分类算法,对五种常见轮胎缺陷进行分类。周欣[4]提出了一种小波分解-模极大值多尺度边缘检测算法,该算法能更准确地定位边缘。张岩等[5]提出了一种基于全变分模型图像分解的轮胎缺陷检测方法,该方法能够分解胎侧橡胶和胎侧帘线的成像分量,降低了检测算法的复杂度。但以上方法对于轮胎的灰度缺陷,例如气泡和杂质缺陷,应用效果不佳。
杂质缺陷是由于生产时内部压入了金属等其他杂质造成的,在图像上表现为该区域像素灰度值低[6]。Zhang Y等[7]提出了一种基于曲波变换图像增强和Canny算子的杂质缺陷检测算法,该算法对杂质缺陷检测较为准确。气泡缺陷是由于在轮胎生产过程中空气进入轮胎内部导致的,在图像上表现为高亮区域,但与背景区域的灰度值相差不大。刘宏贵[8]针对气泡缺陷使用高斯滤波器和Robert算子去除图像中的小边缘区域,但该方法将一些非气泡区域也会检测出来。
目前利用生成对抗网络(generative adversarial network,GAN)进行异常检测的研究已经有了一定的突破。Schlegl T等[9]首次利用无监督的GAN进行异常检测,构建了名为AnoGAN的架构,但这种方法的局限性较强。GANomaly以编码器-解码器-编码器作为主要设计模型,将输入图像通过编码得到的潜在变量和重构图像再编码得到的潜在变量之间的差异进行对比来判断是否为异常样本[10]。但GANomaly的图像重建能力在所有任务中仍然不稳定。Skip-GANomaly在GANomaly的基础上去掉了将生成图像重新再编码的部分,在生成器中加入了跳跃连接,相当于将浅层特征叠加到深层特征中,融合特征信息[11]。Skip-GANomaly的性能比AnoGAN和GANomaly的性能更稳定。但Skip-GANomaly并不是在所有数据集类别中都表现良好,由于网络的重构表达能力过强,其常常会在测试时将异常样本的缺陷信息重构出来。
memAE在自动编码器上首次使用了内存模块[12]。给定输入x后,memAE首先从编码器获取编码,然后将得到的特征编码作为特征检索项存储起来,测试时在存储器中查询最相关的存储项以进行重构。因为重构是在存储器中获得的正常图像特征的潜在向量,所以重构出的图像会更倾向于接近正常样本。这样能有效避免网络重构出异常特征导致异常损失得分不高的问题。但是通过用存储器中的编码替换输入的潜在编码会导致模型的重构能力不足,原因是memAE的内存插槽有限,潜在空间是AE的线性子空间,有时不能准确地重构正常图像。
本文为解决自动编码器网络重构图像能力不足的问题,将内存器模块加入到GAN网络中,通过判别器的参与,使网络具有更好的图像重构能力。为解决memAE网络内存插槽不足的问题,本文在网络中使用多个内存器,每个内存器针对不同的尺度特征进行存储,在测试时用来替换缺陷特征。由于同一图像的不同分辨率尺度之间也会存在一定的特征差异,为学习更加准确且全面的正常样本的潜在特征,本文在网络中加入多尺度编码模块[13],与内存器配合使用,构成多尺度编码内存器模块,该模块可将图像按不同的分辨率输入。
异常检测根据正常样本来识别异常[14],在训练阶段学习正常数据的特征,在测试阶段模型根据学习到的特征检测出异常类。以x表示输入样本,正常数据可以用概率密度函数q(x)来描述,深度生成对抗网络模型能够更好地学习正常数据分布。Goodfellow I J等[15]采用GAN训练判别器D和生成器G,使判别器D使用随机分布p(z)将采样的真实数据q(x)与生成器G生成的重构数据p(x)区分开。GAN的训练优化目标为
(1)
式中:V为优化目标函数;E表示期望。生成器生成数据分布p(x)与真实数据分布q(x)的最优匹配为p(x)=q(x)。
本文采用多尺度编码内存器生成对抗网络(Multi-Scale Memories Generative Adversarial Networks,MSMGAN)模型,其结构如图1所示。
图1 MSMGAN网络结构图
MSMGAN为带有多尺度编码内存器的GAN网络。MSMGAN网络模型使用多个内存器,每个内存器以相应的比例存储正常数据特征。对于每个测试图像首先根据不同分辨率输入到多尺度编码器中,用潜在空间的特征编码到内存器中寻址,根据空间距离将缺陷特征用内存器中存储的最相近的正常特征编码进行替换,得到各个尺度的去异常编码。然后将去异常编码经过特征融合器进行融合,再将融合特征传给解码器重建图像。这种按比例分别存储的策略能获得更大的无异常潜在空间。由于内存网络是一种使用外部内存来增强神经网络的方案,此方案可以记住选定的关键信息,因此对于一次或多次学习都有效,同时在判别器的配合训练下使网络能更好地重建图像。
(2)
在测试阶段,本文使用L2范数来衡量每个像素的重建质量。
为控制网络的训练方向,需要设定网络优化目标函数,本文采用上下文损失和对抗损失两个损失函数分别优化两个子网络。上下文损失函数计算生成网络输入图像与输出图像之间的差异,对抗损失函数计算输入与输出数据特征表示的空间距离。
(1)上下文损失
(3)
(2)对抗损失
本文使用特征匹配损失来进行对抗性学习,对抗损失可以让判别器更好地帮助生成器训练,同时减少网络训练的不稳定性。对抗损失函数计算输入图像和生成图像的特征表示的空间距离,其计算公式为
(4)
式中f表示输入判别器数据特征的函数。
本文采用的网络会在测试时更新内存,同时区分异常,表明本文模型可以记忆测试数据的正常模式。
本文将内存模块的潜在空间分成与K个分辨率尺度相对应的K个子域。i级编码表示用作一个查询检索存储器Mi中的相关项目。本文模型中生成器由一组用于生成查询的编码器和一个对融合特征进行重构的解码器组成。多尺度编码内存器结构如图2所示。
由图2可见,本文将K个相似的编码通道并行形成一个编码模块,每个通道均以xi(i=1,2,…,K)作为输入,经过E1~EK的编码组进行编码。将输入样本x的大小调整成x1~xK的K个不同分辨率图像,再选择一个下采样因子r∈(0,1),并将输入样本x的分辨率表示为r=(H,W),故ri=(H×ri-1,W×ri-1),于是可由相应的通道输入不同分辨率的图像。因此输入样本x通过多尺度编码器E1~EK编码后得到潜在向量Z1~ZK。
图2 多尺度编码内存器结构图
存储器M结构如图3所示。
图3 存储器M结构图
(5)
式中w为具有非负项的1×N的行向量,wi代表其中的第i项,wi的总和为1。wi根据内存M1~Mk中记忆的特征和编码特征的相似性来计算。公式为
(6)
(7)
理想情况下,通过训练将内存中的内容更新成与正常数据最相似的潜在空间,得到正常数据凸包的边界。但即使在正常的数据空间中图像之间也会存在相当大的差异,因此本文通过多通道编码存储空间来解决该问题。内存模块使用不同的内存更新策略来进行异常检测,将正常数据的各种模式记录到内存中的各个项目,并将每个项目视为原型特征,通过对比编码和内存的相似度来删除异常特征的信息,达到良好的检测效果。
本文的检测数据集为轮胎的X光图像,包括气泡、杂质等多种缺陷。轮胎样本集是轮胎子午线X光图片,通过对轮胎不同部位的对比实验,确定选用胎侧部分的图像制作样本集,胎侧部分只有单层钢丝,结构简单清晰,并且是最常出现缺陷的部位。由于轮胎制作工艺复杂、缺陷种类繁多,本文仅选择杂质和气泡两种具有代表性的缺陷制作异常测试样本集。部分训练集正常轮胎样本如图4所示。
图4 部分训练集正常轮胎样本
测试集缺陷轮胎样本如图5所示。
图5 测试集缺陷轮胎样本
本文输入图像的大小为512×512像素,设置编码器的数量K=5,输入图像调整后的分辨率分别为32×32、64×64、128×128、256×256、512×512。批次大小为64,训练轮次为100,学习率为10-4。激活函数使用LeakReLU函数。判别器对抗损失函数中f使用Softmax函数。
实验平台配置:实验使用计算机的硬件配置为Inter i7 CPU、Nvidia GTX1080GPU、16G内存。编程环境采用Ubun-tu16.04LTS操作系统,Python3.7及Pytorch深度神经网络开发工具。
本文训练样本集使用12000张无缺陷正常胎侧图像,测试样本集包含1000张正常轮胎图像、500张气泡缺陷图像与500张杂质缺陷图像。测试样本集制作为两种:一种包含单类缺陷和等量的正常样本,另一种包含两种缺陷和等量的正常样本。
模型性能评价通常采用受试者工作特征(Receiver Operating Characteristic,ROC)曲线,因为该方法在样本正负比例发生变化时对结果的影响不大。ROC曲线横轴表示负阳率,即在全部实际为有缺陷的样本中,被错误地判断为正常样本的比率。纵轴表示正阳率,即在全部实际为正常的样本中,被正确地判断为正常样本的比率。ROC曲线越靠近左上角,表明检测效果越好。模型评估指标AUC的取值为ROC曲线下的区域总面积,显然AUC值越大,说明分类器的效果越优秀。采用AUC来进行评价的主要原因是ROC曲线本身并不能直观地说明某一种分类器系统性能的优劣和好坏,而采用AUC数值可对其进行量化比较。MSMGAN网络ROC曲线如图6所示。
图6 MSMGAN网络ROC曲线
由图6可得,气泡的AUC值为0.899,杂质的AUC值为0.959。可以看出,杂质缺陷的异常检测准确率明显高于气泡的异常检测准确率。本文对气泡和杂质类缺陷分别进行单类缺陷和混合缺陷样本集的测试实验。表1为单独缺陷和混合缺陷的实验结果对比。
表1 单类缺陷和混合缺陷的实验结果对比
由表1可见,杂质类缺陷的检测准确率比气泡的检测准确率高出6%,混合缺陷的检测准确率介于两个单类缺陷之间。本文使用混合缺陷的测试样本集(1000张正常样本、500张气泡缺陷和500张杂质缺陷样本)在GANomaly和memAE两个异常检测网络上进行实验,并与本文网络进行对比,结果如图7所示。
图7 模型性能比较
由图7可知,在相同的轮胎样本集中,GANomaly模型的AUC为0.657,memAE模型AUC为0.865,本文的网络模型MSMGAN的AUC为0.926。在相同数据集不同模型的对比实验中,本文网络模型的准确率明显高于另两个异常检测网络模型。
本文提出的异常检测模型MSMGAN在生成器中加入多尺度编码内存器模块,有效解决了内存器插槽不足导致不能准确重构正常图像的问题,缓解了由于图像不同分辨率尺度之间的特征差异,导致网络学习正常样本的潜在特征常常不全面不准确的问题。实验结果表明本文采用的方法可以有效地提高轮胎杂质和气泡缺陷的异常检测准确率。