type
status
date
slug
summary
tags
category
icon
password
Last edited time
Jun 17, 2024 06:35 AM
重构之火试真伪,前后差异现端倪
📝 主旨内容
DRAEM(ICCV 2021)
DRAEM
VitjanZ • Updated Jul 17, 2024
网络三大模块:异常生成模块、重构模块、判断模块。
异常生成模块:因为只有正常数据,通过将异常区域做到正常图里达到模拟异常图的效果。
重构模块:将产生的异常图进行重构得到重构图,可以产生损失Lr。
判别模块:重构图与异常图一同输入,通过该模块的层级结构对比产生分割真值图。
以重建的方法为主体,辅助使用数据增强的及分割图的深入推断(使用U-Net网络结构)
Anomaly generation
异常图像由柏林噪声发生器,通过随机均匀采样的阈值二值化后生成
噪声图像是由柏林噪声生成的,以捕捉各种异常形状(图P),并通过随机均匀采样的阈值进行二值化,生成异常图(图Ma)。从一个与输入图像分布无关的异常源图像数据集上采样异常纹理源图像A。
随机增加采样,从集合
{色调分离,清晰度,曝光,均衡,亮度改变,颜色改变,自动对比度}
中抽样3个随机增加函数。将增广纹理图像A与异常图Ma进行掩膜,并与原图像I进行混合,生成just-out-of-distribution的异常,从而有助于在训练后的网络中加强决策边界。因此将增强训练图像Ia定义为因此,上述的模拟器生成包含原始无异常图像的训练样本三组,包含模拟异常Ia和像素完美异常掩模Ma的增强图像。
Describable Textures Dataset (DTD) 是一个纹理图像数据,包括 5640张 图像,按照人类感知分为 47类,每一类 120张 图像,分辨率从300x300到640x640不等,图像从Google和Flickr网站获取。
Reconstructive sub-network
重建子网络:编码器-解码器
假设输入张量A1(输入的为Anomaly generation做的正常改异常后的数据)
编码器:经过五个块(每个块包含两套卷积,归一化层,激活函数),生成张量A2)
解码器:经过四个块(每个块包含一个上采样,三套卷积,归一化层,激活函数),再经过一层卷积,生成张量A3。
损失函数:l2损失常用于基于重构的异常检测方法,这种损失是假设像素间是独立的,因此,本文还采用了另一种损失SSIM(亮度,对比度,结构)加强像素间交互性。
L2损失和MSE损失区别
对于两张图片的比较,L2损失和MSE(均方误差)损失的区别主要在于是否进行平均处理。事实上,当只涉及两张图片时,这两种损失在计算上非常相似,但它们的解释和可能的用途有所不同。
L2 损失
- 定义:
- L2损失是两张图片对应像素差的平方和。
- 公式:分别是第一张和第二张图片中的对应像素。
- 特点:
- L2损失提供了两张图片之间差异的总量。
- 它对大的差异(像素值差别大)给予更重的惩罚。
- 应用场景:
- 可以用于图像重建、降噪等,当关注整体误差量时使用。
MSE(均方误差)损失
- 定义:
- MSE损失是两张图片对应像素差的平方和的平均值。
- 公式:。
- 特点:
- MSE提供了两张图片之间差异的平均量。
- 同样对大的差异给予重惩罚,但是通过平均化,它提供了每个像素平均误差的度量。
- 应用场景:
- 适用于图像处理中的优化问题,如训练神经网络进行图像重建或超分辨率时。
区别
- 计算上的区别:对于两张图片,L2损失计算的是总的像素差的平方和,而MSE计算的是平均像素差的平方和。
- 解释上的区别:L2损失给出了总体的误差量,而MSE提供了平均每个像素的误差量。
在实际应用中,当比较两张图片时,使用L2损失和MSE损失可能得到非常相似的结果。区别在于,MSE通过考虑图片的大小(像素总数)来标准化误差,这在比较不同大小或者需要标准化误差度量的图像时特别有用。
Discriminative sub-network
U-Net结构,将重构好的图像A3与刚开始输入的图像A1一起输入该网络,层级判断对比生成分割图。
判别子网络采用类似于U-Net的架构,这个子网络输入Ic 被定义为重构子网络输出Ic和输入图像I的通道级联。由于重构子网络的正态恢复特性,在异常图像中,I和Ir的联合形态存在显著差异,这为异常分割提供了必要的信息。
在基于重构的异常检测方法中,利用SSIM等相似函数获得异常图,将原始图像与重构图像进行比较,然而,表面异常检测的特定相似性度量是很难手工制作的。而判别子网络则学习合适的距离自动的测量。网络输出与原始图像I大小相同的异常分数图Mo。将焦点损失
Focal Loss (Lseg)
应用于判别子网络的输出,以提高困难示例精确分割的鲁棒性。考虑到两个子网络的分割和重构目标,在训练DRÆM时,总损失为其中Ma和M分别为
ground truth
和输出的异常分割掩模Focal Loss(解决正负样本数量极不平衡问题):
-alpha * ((1 - pt)^gamma) * log(pt)
通过alpha可以抑制正负样本的数量失衡,通过gamma可以控制简单/难区分样本数量失衡
①调制因子(1 - pt)^gamma是用来减低易分样本的损失贡献 ,无论是前景类还是背景类,pt越大,就说明该样本越容易被区分,调制因子也就越小。
②alpha用于调节正负样本损失之间的比例,前景类别使用alpha时,对应的背景类别使用1-alpha
③gamma和alpha都有相应的取值范围,他们的取值相互间也是有影响的,在实际使用过程中应组合使用。
部分训练代码:
EasyNet(MM 2023)
EasyNet
TaoTao9 • Updated Jun 20, 2024
对比损失函数
对比异常生成策略
与DRÆM区别
正如EasyNet中所述,我们从DRAEM的重建和异常图像生成方法中学到了一些东西,但是EasyNet和DRAEM之间的架构有很大不同。
首先,EasyNet的重建网络在重建之前和之后利用了多层和多尺度的特征信息,这也在消融实验中得到了突出的体现,而DREAM的对应网络只能通过重建前后的图像进行分割。
其次,我们的实验发现,使用2层MLP就足以有效地分割异常区域,而不需要像DREAM一样使用大型U-Net。
最后,EasyNet更注重多模态特征的融合与分割,而DREAM只关注RGB特征。
🤗 总结归纳
对比使用内存库的优缺点分析
优点
- 不依赖于预训练模型(额外增加整体模型大小,推理时延)
- 不占用额外内存
- 推理速度快(对比内存库少了预训练模型,内存库的检索)
缺点
- 模型难以收敛(整个网络都需要训练)
- 模型的效果不佳(对比与使用内存库)
EasyNet可能的改进
异常合成策略
额外引入的DTD数据集,和真实异常相差太大甚至毫不相干,是否可以用类似CutPaste的思想
多模态决策部分
是否可以引入纯3D的情况,融合决策是否有真实的场景
数据一致性加快EasyNet收敛
📎 参考文章
- 作者:ziuch
- 链接:https://ziuch.com/article/IAD-Reconstruction
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章