深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

时间:2024-04-03 15:49:39

主要工作

提出了一种Encoder,可以快速将图片映射到隐空间中的某个点,接着利用WGAN进行异常检测。

深度学习论文笔记(异常检测)—— Generative Adversarial Networks to Guide Marker Discovery一文中,我总结了AnoGAN,其通过不断迭代优化,在隐空间中寻找某个点,该点生成的图片与测试图片最为相近,接着利用DCGAN进行异常检测,由于需要迭代优化,势必会耗费大量时间,而f-AnoGAN通过引入Encoder,解决了这个问题。

代码地址


算法介绍

有监督异常检测存在的问题

  1. 需要耗费大量人力与时间对数据进行标注,在医疗领域,数据标注的代价更高,并且数据量比较少,而有监督学习往往需要耗费大量数据。
  2. 有监督学习只能处理训练样例中存在的情况。

针对有监督的问题,论文提出了使用无监督的GAN进行医疗数据的异常检测,其具体机制为:使用正常数据训练GAN,生成器GG只能生成正常数据,如果能在隐空间中找到一点ZZG(Z)G(Z)与测试图像最为相近,G(Z)G(Z)为正常图像,如果两者的差距大于某个值,就可判断测试图像为异常图像。鉴别器DD本质是一个二分类模型,可以鉴别出真实图像与生成器生成图像之间的细微差别,而异常图像本身与正常图像差别较大,鉴别器会将异常图像分为非正常图像。可以看到,鉴别器与生成器都可以单独用于异常检测,和AnoGAN一样,论文将两者进行了结合。

模型分为两个阶段,如下图
阶段一:训练WGAN
阶段二:训练Encoder

深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

阶段一:训练WGAN

此处总结数据准备

设有NN张正常医疗图片构成的集合RRInRI_n \in Rn=123...Nn=1、2、3...N),从InI_n中随机截取KK张大小为ccc*c的图片构成训练数据集

设标记好的数据集为JJ,按上述方式采集大小为ccc*c的图像ymy_m,同时获得对应的大小为ccc*c的掩码图像ama_m(为像素为1表示异常,为0表示无异常),<ym,am><y_m,a_m>构成了一个测试数据,不断重复上述方式构成测试数据集

在视网膜光学相干断层扫描图像数据集上构建训练与测试数据集的流程如下:

深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks


阶段二:训练Encoder

论文没有给出Encoder的结构,应该是一个卷积神经网络,具体可以查看代码部分

WGAN训练完毕后,不在改变,由生成器充当decoder,与Encoder一起构成了auto-encoder结构,Encoder负责将训练图片(查看上一节数据准备部分)映射为隐空间中的点ZZ,生成器将ZZ映射为图片。

Encoder存在三种训练方式,如下图
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

训练方式一:iziizi

具体步骤

  1. Encoder将图片x映射为隐空间中的点z^\hat z
  2. 生成器将z^\hat z映射为图片G(z^)G(\hat z)
  3. 损失函数为MSE:Lizi(x)=1nxG(z^)2L_{izi}(x)=\frac{1}{n}||x-G(\hat z)||^2 nn为像素的个数

训练方式二:zizziz

具体步骤

  1. 在隐空间中随机选取一个点zz,生成器将zz映射为图片G(z)G(z)
  2. Encoder将G(z)G(z)映射为隐空间中的点z^\hat z
  3. 损失函数为MSE:Lziz(z)=1dzz^)2L_{ziz}(z)=\frac{1}{d}||z-\hat z)||^2 d为隐空间的维数

训练方式三:izifizi_f

具体步骤

  1. Encoder将图片x映射为隐空间中的点z^\hat z
  2. 生成器将z^\hat z映射为图片G(z^)G(\hat z)
  3. G(z^)G(\hat z)xx输入到鉴别器中,得到LD=1ndf(x)f(G(z^))2L_D=\frac{1}{n_d}||f(x)-f(G(\hat z))||^2,f(x)为鉴别器中间某一层的特征图,该特征图被认为含有输入图像的统计信息,LDL_D用于比较图像之间统计信息的差异,ndn_d为特征图的维数(个人理解为特征图像素个数)
  4. 损失函数为Lizif(x)=1nxG(z^)2+λ1ndf(x)f(G(z^))2L_{izi_f}(x)=\frac{1}{n}||x-G(\hat z)||^2+\lambda \frac{1}{n_d}||f(x)-f(G(\hat z))||^2λ\lambda为超参数

fAnoGANf-AnoGANizifizi_f 作为Encoder的训练方式


异常检测

异常检测其实是一个二分类问题,我们需要设计一个异常分数公式用于计算异常分数,异常分数高于某个值,即可认为出现异常,f-AnoGAN将Lizif(x)L_{izi_f}(x)作为异常分数公式,Lizif(x)L_{izi_f}(x)从像素差异与图片之间的统计学差异角度比较了两张图片之间的差距。

假设xx为异常图片,由于生成器只能生成正常图片,鉴别器能鉴别图片是否符合正常图片分布,则G(z^)G(\hat z)xxf(G(z^))f(G(\hat z))f(x)f(x)之间的差异势必比较大。

LiziL_{izi}对应AnoGAN中的ResidualLossResidual LossLDL_D则对应DiscriminationLossDiscrimination Loss,AnoGAN中统计过正常与异常图片在ResidualLossResidual LossDiscriminationLossDiscrimination Loss上的取值差异,如下:

深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

x轴表示LiziL_{izi}LDL_D的值,y轴表示频率,可以看出

  1. 异常图片的LiziL_{izi}LDL_D普遍大于正常图片
  2. 正常图片与异常图片在LiziL_{izi}LDL_D上的取值分布重叠部分小,说明LiziL_{izi}LDL_D对于正常图片与异常图片的区分度高

因此,Lizif(x)L_{izi_f}(x)可用于计算异常得分


实验

问题一:隐空间是否平滑连续?
如果隐空间不够平滑连续,只有部分隐空间中的点能生成真实度较高的图片,为了验证隐空间是连续的,论文进行了两个实验

实验一:随机选择隐空间中的两个点,两点之间做一条位于高维度空间的直线,生成这条直线上的点对应的图片
实验二:依据真实图片在隐空间中选择两个点(应该是使用了Encoder),两点之间做一条位于高维度空间的直线,生成这条直线上的点对应的图片

两个实验的结果如下
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

可以看到,图像之间的变化非常自然,由此可见隐空间还是比较平滑的,如果隐空间是剧烈抖动的,那么图像之间的渐变效果应该会非常明显


问题二:f-AnoGAN的预测准确率如何?
异常检测本质上是一个二分类问题,可以使用准确率召回率等指标进行模型评估

论文比对的baseline有

  1. AEAE
  2. AdvAEAdvAE
  3. ALIALI
  4. ADA_D:使用WGAN的鉴别器输出作为异常分数,由于WGAN的输出比较的是生成图片与真实图片的Wasserstein距离,因此不能直接作为异常分数,设测试图片为xx,则异常分数定义如下AD=m^xD(x)A_D=\hat m_{x}-D(x)
    随机选择32000张测试图片,统计对应的鉴别器输出,计算平均值,即为m^x\hat m_x
  5. iterativeiterative:使用WCAN的AnoGAN

结果如下:
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks
f-AnoGAN的评价指标均为最高,表现相当优异

AUC如下
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks


问题三:f-AnoGAN异常检测的效果如何?
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks


问题四:不同Encoder训练策略的比较

首先是异常检测的视觉效果
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

接着是各项指标
AUC如下:
深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

深度学习论文笔记(异常检测)——f-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

可看出,izifizi_f策略的训练结果最佳