0%

zhj anoGan

anoGan

PaperUnsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery

2017, IPMI ( Information Processing in Medical Imaging )

生物医学影像与影像引导治疗系, 奥地利维也纳医科大学

数据类型为医学影像, 光学相干层析成像(Optical Coherence tomography, OCT)技术

image-20201027112720144

异常检测前提

使用正常样本来训练生成器和判别器, 正常样本能够很好地被重构出来, 而异常样本不能被很好地重构出来。

模型结构

image-20201027153314856

模型训练

生成器G, 将隐变量z经过一系列的反卷积操作, 生成样本.

判别器D, 最后一层的激活函数是sigmoid, 输出一个概率, $\in[0,1 ]$, 越大代表判别器D认为输入的样本为真实的样本.

使用健康人的样本来训练模型. 隐变量Z,服从标准正态分布. 采样z, 经过生成器G(z), 得到生成的图片G(z). 将生成的图片样本G(z) 和 健康人图片样本x, 一起输入到判别器D.

训练步骤:

  1. 将G(z), x 输入到判别器D, 根据以下目标函数更新判别器D的参数:

​ 意义是, 对于输入样本为真实样本x, 希望判别器的输出值趋近1; 对于输入样本为生成样本G(z), 希望判别器的输出值趋近于0.

  1. 固定判别器D的参数, 根据以下目标函数更新生成器G的参数:意义是, 通过调整生成器G的参数,让生成的样本G(z)更像真实样本x, 让判别器D无法判别真实样本和生成样本.

经过这样的对抗训练之后, 生成样本G(z)越来越像真实样本.

找到输入样本x对应的隐变量z

生成器G可以将隐变量z映射到x, $G(\mathbf{z})=\mathbf{z} \mapsto \mathbf{x}$. 如果给定x, 很难直接找到这个x对应的z, 使得G(z)看起来跟x很像. 为了找到最好的z, 固定生成器G的参数. 先随机采样一个$z1$, 生成一个图像$G(z_1)$, 利于一个损失函数来提供梯度, 去更新$z_1$的系数, 更新后的位置设为$z_2$. 为了找到与输入图片样本x最相似的生成图片样本$G\left(\mathbf{z}{\Gamma}\right)$, 需要经过迭代过程$\gamma=1,2, \ldots, \Gamma$.

以上使用的损失函数, 包括两个部分:

  1. Residual Loss

    利用生成器G:生成样本和真实样本之间像素级别的差距.

  1. Discrimination Loss

    利用判别器D:

    原始的版本:交叉熵损失

其中目标为1, 即希望判别器D不能判别出$G(z_\gamma)$为生成样本, 以上公式化简为:

本文改进的版本: 利用判别器的中间结果:

其中$f(*)$为判别器的中间层的输出.

综上, 寻找最优的$z$所用的损失函数为:

其中$\lambda$为权重, 本文设定为0.1

异常检测

定义异常分数, 利用以上的损失函数:

实验结果

image-20201027112720144

第一,二列为训练样本, 第三列为测试样本. 第一行为输入样本, 第二行为对应的生成样本, 第三行中的红色部分为异常分数较高的区域, 最后一行中的绿色区域为异常区域.

image-20201027204822072

图a: 不同的模型的检测结果

AnoGAN:$A(\mathbf{x})=(1-\lambda) \cdot R(\mathbf{x})+\lambda \cdot D(\mathbf{x})$

$GAN_R$:$\hat{A}(\mathbf{x})=(1-\lambda) \cdot R(\mathbf{x})+\lambda \cdot \hat{D}(\mathbf{x})$

$P_D$: 直接的D(x), 不经过生成器.

图b: 不同的部分的异常检测结果.

图c:Residual loss A(x) =$\sum\left|\mathbf{x}-G\left(\mathbf{z}_{\gamma}\right)\right|$ 的分布

图d:Discrimination loss A(x) =$\sum\left|\mathbf{f}(\mathbf{x})-\mathbf{f}\left(G\left(\mathbf{z}_{\gamma}\right)\right)\right|$ 的分布

其中蓝色为训练集, 绿色为测试集, 红色为异常样本.

综上, 能够检测出异常的部分主要是$R(X)=\sum\left|\mathbf{x}-G\left(\mathbf{z}_{\gamma}\right)\right|$,

$D(X)=\sum\left|\mathbf{f}(\mathbf{x})-\mathbf{f}\left(G\left(\mathbf{z}_{\gamma}\right)\right)\right|$能够稍微提升检测结果.

总结

由于在训练的时候, 只使用了正常样本,

对于生成器来说, 给定异常样本x, 重构出来的会很像是正常样本.

对于判别器来说, 由于没有使用异常真实样本来训练, 不能将异常真实样本判定为真实样本. 只有正常真实样本, 才能判定为真实样本.

f-anoGan

Paperf-AnoGAN: Fast unsupervised anomaly detection with generative adversarial networks

2019, Medical Image Analysis

anoGan的缺点

在检测的时候, 为了找到输入样本x对应的隐变量$z_\Gamma$, 需要经过500次迭代. 为了加速检测, 提出了f-anoGan

新的网络结构

原来的结构:

image-20201027211838605

为了在检测的时候, 快速找到输入样本x对应的隐变量$z_\Gamma$, 在训练好生成器G和判别器D之后, 固定G和D的参数, 加入编码器E:

image-20201027211946806

训练编码器E, 是的输入的样本x经过编码器E之后, 直接得到对应的隐变量z.