AnoGAN是一种使用GAN做异常检测的模型。
这篇博客主要介绍这篇paper中的模型:Unsupervised Anomaly Detection with
Generative Adversarial Networks to Guide Marker Discovery.
这篇paper的基本思路是通过正常的图像来训练GAN,这样得到的GAN就会根据噪声来生成正常图像。
这篇文章最大特点是通过比较生成图像和异常图像,通过它们的差异来更新输入GAN的噪声,以此得到异常图相对应的正常图,这样甚至可以找到异常的位置。
作者定义第一个residual loss来衡量query image
x
x
和生成图片的差异,用来更新噪声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是保持不变,只更新这个噪声。
最后当异常图和生成图足够接近时候,我们就可以通过阈值法找到异常图,并且找到异常的位置。