AnoGAN是一种使用GAN做异常检测的模型。
这篇博客主要介绍这篇paper中的模型:Unsupervised Anomaly Detection with
Generative Adversarial Networks to Guide Marker Discovery.
这篇paper的基本思路是通过正常的图像来训练GAN,这样得到的GAN就会根据噪声来生成正常图像。
这篇文章最大特点是通过比较生成图像和异常图像,通过它们的差异来更新输入GAN的噪声,以此得到异常图相对应的正常图,这样甚至可以找到异常的位置。
作者定义第一个residual loss来衡量query image x x 和生成图片 G(Zy) G ( Z y ) 的差异,用来更新噪声z
LR(Zy)=∑|x−G(Zy)| L R ( Z y ) = ∑ | x − G ( Z y ) |
作者还定义了一个discrimination loss也用来更新噪声
LD(Zy)=∑|f(x)−f(G(Zy))| L D ( Z y ) = ∑ | f ( x ) − f ( G ( Z y ) ) |
其中 f 表示discrimination 网络中一个高级中间层, 这个discrimination loss衡量生成图和输入图在这一层layer上的差异,从而更新噪声,使得生成图和输入图更接近。
最后的loss是
L=λLD(Zy)+(1−λ)LR(Zy) L = λ L D ( Z y ) + ( 1 − λ ) L R ( Z y ) .
之前提到过,generator和didcriminator是已经在正常图像上训练好了的,他们的trained weight是保持不变,只更新这个噪声。
最后当异常图和生成图足够接近时候,我们就可以通过阈值法找到异常图,并且找到异常的位置。