对抗生成网络GAN系列——GANomaly原理及源码解析

\mathbb{R}^d

Rd。【

G

E

(

x

)

G_E(x)

GE​(x)具体结构很简单啦,这里就不详细介绍了。我会在源码解析部分给出,大家肯定一看就会。】接着我们来看

G

D

(

z

)

G_D(z)

GD​(z)结构,它会将刚刚得到的向量z上采样成

x

^

\hat x

x^,

x

^

\hat x

x^的维度和

x

x

x一致,都为

R

C

×

H

×

W

\mathbb{R}^{C×H×W}

RC×H×W。关于

G

D

(

Z

)

G_D(Z)

GD​(Z)结构也很简单,其主要用到了转置卷积,对于转置卷积不了解的可以看博客[2]了解详情。生成器网络G就为大家介绍完了,是不是发现很简单呢。总结下来就两步,第一步让输入x通过

G

E

(

x

)

G_E(x)

GE​(x)得到z,第二步让z通过

G

D

(

Z

)

G_D(Z)

GD​(Z)变成

x

^

\hat x

x^。这两步也可以用一步表示,即

x

^

=

G

(

x

)

\hat x=G(x)

x^=G(x)。

思来想去我还是想在这里给大家抛出一个问题,我们传统的GAN是怎么通过生成器来构建假图像的呢?和GANomaly有区别吗?其实这个问题的答案很简单,大家都稍稍思考一下,我就不给答案了,不明白的评论区见吧!!!🥂🥂🥂

  • 编码器网络E

​   编码器网络E的作用是将生成器得到的

x

^

\hat x

x^压缩成一个向量

z

^

\hat z

z^,是不是发现和生成器网络中的

G

E

(

x

)

G_E(x)

GE​(x)很像呢,其实呀,它俩的结构就是完全一样的,生成的

z

^

\hat z

z^ 和

x

^

\hat x

x^ 的维度一致,这是方便后面的损失比较。

  • 判别器网络D

​   判别器网络D和我们之前介绍DCGAN时的结构是一样的,都是将真实数据

x

x

x和生成数据

x

^

\hat x

x^输入网络,然后得出一个分数。

GANomaly损失函数

GANomaly的损失函数分为两部分,第一部分是生成器损失,第二部分为判别器损失,下面我们分别来进行介绍:

  • 生成器损失函数

​ 生成器损失函数又由三个部分组成,分别如下:

+ Adversari Loss

 我还是直接上公式吧,如下:

 ​  
 
 
 
 
 
 L 
 
 
 
 a 
 
 
 d 
 
 
 v 
 
 
 
 
 = 
 
 
 
 E 
 
 
 
 x 
 
 
 ∼ 
 
 
 p 
 
 
 x 
 
 
 
 
 ∣ 
 
 
 ∣ 
 
 
 f 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 − 
 
 
 
 E 
 
 
 
 x 
 
 
 ∼ 
 
 
 p 
 
 
 x 
 
 
 
 
 f 
 
 
 ( 
 
 
 G 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 ) 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 2 
 
 
 
 
 L\_{adv}=E\_{x \sim px}||f(x)-E\_{x \sim px}f(G(x))||\_2 
 
 
 Ladv​=Ex∼px​∣∣f(x)−Ex∼px​f(G(x))∣∣2​

 这个公式对应图一中的 
 
 
 
 
 
 L 
 
 
 
 a 
 
 
 d 
 
 
 v 
 
 
 
 
 = 
 
 
 ∣ 
 
 
 ∣ 
 
 
 f 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 − 
 
 
 f 
 
 
 ( 
 
 
 
 x 
 
 
 ^ 
 
 
 
 ) 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 2 
 
 
 
 
 L\_{adv}=||f(x)-f(\hat x)||\_2 
 
 
 Ladv​=∣∣f(x)−f(x^)∣∣2​🍵🍵🍵这个损失函数应该很好理解,在前面介绍的GAN网络都有提及, 
 
 
 
 
 f 
 
 
 ( 
 
 
 ∗ 
 
 
 ) 
 
 
 
 f(\*) 
 
 
 f(∗)表示判别器网络某个中间层的输出。这个损失函数的作用就是让两张图像 
 
 
 
 
 x 
 
 
 和 
 
 
 
 x 
 
 
 ^ 
 
 
 
 
 x和\hat x 
 
 
 x和x^尽可能接近,也就是让生成器生成的图片更加逼真。




---
+ Contextual Loss

 同样的,直接来上公式,如下:

 ​  
 
 
 
 
 
 L 
 
 
 
 c 
 
 
 o 
 
 
 n 
 
 
 
 
 = 
 
 
 
 E 
 
 
 
 x 
 
 
 ∼ 
 
 
 p 
 
 
 x 
 
 
 
 
 ∣ 
 
 
 ∣ 
 
 
 x 
 
 
 − 
 
 
 G 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 1 
 
 
 
 
 L\_{con}=E\_{x \sim px}||x-G(x)||\_1 
 
 
 Lcon​=Ex∼px​∣∣x−G(x)∣∣1​

 这个公式对应图一中的 
 
 
 
 
 
 L 
 
 
 
 c 
 
 
 o 
 
 
 n 
 
 
 
 
 = 
 
 
 ∣ 
 
 
 ∣ 
 
 
 x 
 
 
 − 
 
 
 
 x 
 
 
 ^ 
 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 1 
 
 
 
 
 L\_{con}=||x-\hat x||\_1 
 
 
 Lcon​=∣∣x−x^∣∣1​🍵🍵🍵这个函数其实也是要让两张图像 
 
 
 
 
 x 
 
 
 和 
 
 
 
 x 
 
 
 ^ 
 
 
 
 
 x和\hat x 
 
 
 x和x^尽可能接近。至于这里为什么用的是L1范数而不是L2范数,作者在论文中说这里使用L1范数的效果要比使用L2范数的效果好,这属于实验得到的结论,大家也不用过于纠结。
+ Encoder Loss

 话不多说,上公式,如下:

 ​  
 
 
 
 
 
 L 
 
 
 
 e 
 
 
 n 
 
 
 c 
 
 
 
 
 = 
 
 
 
 E 
 
 
 
 x 
 
 
 ∼ 
 
 
 p 
 
 
 x 
 
 
 
 
 ∣ 
 
 
 ∣ 
 
 
 
 G 
 
 
 E 
 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 − 
 
 
 E 
 
 
 ( 
 
 
 G 
 
 
 ( 
 
 
 x 
 
 
 ) 
 
 
 ) 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 2 
 
 
 
 
 L\_{enc}=E\_{x \sim px}||G\_E(x)-E(G(x))||\_2 
 
 
 Lenc​=Ex∼px​∣∣GE​(x)−E(G(x))∣∣2​

 这个公式对应图一中的 
 
 
 
 
 
 L 
 
 
 
 e 
 
 
 n 
 
 
 c 
 
 
 
 
 = 
 
 
 ∣ 
 
 
 ∣ 
 
 
 z 
 
 
 − 
 
 
 
 z 
 
 
 ^ 
 
 
 
 ∣ 
 
 
 
 ∣ 
 
 
 2 
 
 
 
 
 L\_{enc}=||z-\hat z||\_2 
 
 
 Lenc​=∣∣z−z^∣∣2​🍵🍵🍵这里的损失函数在我看来主要作用就是让我们在推理过程中的效果更好,这里就像AnoGAN中不断搜索最优的那个z的作用。




---

 如果大家这里读过[cycleGAN]( )的论文的话,可能会觉得这个损失函数有点类似cycleGAN中的循环一致性损失。我觉得这篇文章的思想可能借鉴了cycleGAN中的思想,感兴趣的可以去阅读一下,非常有意思的一篇文章!!!🥃🥃🥃


生成器总的损失是上述三种损失的加权和,如下:

L

=

w

a

d

v

L

a

d

v

w

c

o

n

L

c

o

n

w

e

n

c

L

e

n

c

L=w_{adv}L_{adv}+w_{con}L_{con}+w_{enc}L_{enc}

L=wadv​Ladv​+wcon​Lcon​+wenc​Lenc​

在论文提供的源码中,默认

w

c

o

n

=

50

,

w

最后

俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!

另外,给大家安排了一波学习面试资料:

image

image

以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!
就是让我们在推理过程中的效果更好,这里就像AnoGAN中不断搜索最优的那个z的作用。

---

 如果大家这里读过[cycleGAN]( )的论文的话,可能会觉得这个损失函数有点类似cycleGAN中的循环一致性损失。我觉得这篇文章的思想可能借鉴了cycleGAN中的思想,感兴趣的可以去阅读一下,非常有意思的一篇文章!!!🥃🥃🥃


生成器总的损失是上述三种损失的加权和,如下:

L

=

w

a

d

v

L

a

d

v

w

c

o

n

L

c

o

n

w

e

n

c

L

e

n

c

L=w_{adv}L_{adv}+w_{con}L_{con}+w_{enc}L_{enc}

L=wadv​Ladv​+wcon​Lcon​+wenc​Lenc​

在论文提供的源码中,默认

w

c

o

n

=

50

,

w

最后

俗话说,好学者临池学书,不过网络时代,对于大多数的我们来说,我倒是觉得学习意识的觉醒很重要,这是开始学习的转折点,比如看到对自己方向发展有用的信息,先收藏一波是一波,比如如果你觉得我这篇文章ok,先点赞收藏一波。这样,等真的沉下心来学习,不至于被找资料分散了心神。慢慢来,先从点赞收藏做起,加油吧!

另外,给大家安排了一波学习面试资料:

[外链图片转存中…(img-OGmhUViW-1720103157436)]

[外链图片转存中…(img-lof1T27h-1720103157437)]

以上就是本文的全部内容,希望对大家的面试有所帮助,祝大家早日升职加薪迎娶白富美走上人生巅峰!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值