目前主流的损失函数只是强迫自编码器重构输入,导致其在推理过程中无法很好地分辨缺陷和噪声。为了解决此问题,文中定义了新的损失函数,引导孪生网络通过重建和修复的联合行为来感知缺陷。定义L_{\mathrm{reconstruction}}和L_{\mathrm{inpainting}}两项分别代表重构过程和修复过程中的损失。定义L_{\mathrm{reconstruction}}的目的在于使正常样本重构后的特征集F_{A E s}和原正常样本的特征集合F_{D_S}尽可能相近;定义L_{\mathrm{inpainting}}的目的在于使缺陷样本修复后的特征集F_{A E g}和F_{D_S}尽可能相近。为了提高分割准确率和计算速度,两项损失均选择了一个像素级别的L2损失度量方式来定义,损失函数具体形式如下。
\begin{aligned}L_{\text {total }} &=L_{\text {reconstruction }}+\lambda L_{\text {inpainting }} \\&=\sum_{j=0}^{\mathrm{h}-1} \sum_{i=0}^{w-1}\left(F_{A E s}-F_{D s}\right)^2+\lambda \sum_{j=0}^{\mathrm{h}-1} \sum_{i=0}^{w-1}\left(F_{A E g}-F_{D s}\right)^2\end{aligned}\\
式中,\lambda设为1以保持两损失项的相同范围,密集特征集合的尺寸为h\times w。
推理过程
在推理阶段,仅用待检测图像验证双孪生网络的重建和修复性能,因此不需要通过DRG模块生成相应的缺陷图像,因此第一个孪生网络的两个图像输入均为I_s。第二个孪生网络的两个分支分享权重,所以F_{A E s}和F_{A E g}在推理阶段相同。结果图像首先由第一个孪生网络输出的特征集F_{D_S}和第二个孪生网络输出的F_{A E s}的差生成,然后被resize成与输入图像相同的大小。