先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
正文
使用BicyleGAN进行多样化图像转换
Pix2pix
和 CycleGAN
是非常的流行GAN,不仅在学术界有许多变体,同时也有许多基于此的应用。但是,它们都有一个缺点——图像的输出看起来几乎总是相同的。例如,如果我们要执行斑马到马的转换,被转换的同一马的照片将始终具有相同的外观和色调。这是由于GAN固有的特性,它学会过滤了噪声的随机性。为了进行多样化图像转换,本文详解了 BicycleGAN
如何解决此问题以生成更丰富的图像,并利用 Tensorflow2
实现了 BicycleGAN
。
BicyleGAN效果展示
使用 BicyleGAN
可以将一张图片进行多样化的转换,产生不同的样式和色彩:
BicycleGAN架构
在开始实现 BicycleGAN
之前,首先简要介绍一下。第一次听到这个名字,你可能会认为 BicycleGAN
是 CycleGAN
的变体,但其实它与 CycleGAN
无关,反而它是对 pix2pix
的一种改进。
pix2pix
是一对一映射,其中给定输入的输出始终相同。当试图将噪声添加到生成器输入时,网络会忽略噪声,并且在输出图像中并不会产生变化。因此,需要寻找一种方法,强制生成器不得忽略噪声,而是使用噪声来生成多样化的图像,即一对多映射。
下图是 BicycleGAN
相关的模型和配置。图(a)
是推理的配置,图像A与噪声相结合以生成图像
B
^
\hat B
B^,可以将此看作是 cGAN
。在BicyleGAN中,形状为(256, 256, 3)
的图像A是条件,而从潜在编码
z
z
z 采样的噪声为大小为8的一维向量。图(b)
是 pix2pix + 噪声
的训练配置。而 图(c)
和 图(d)
的两个配置由 BicycleGAN
训练时使用:
简而言之,BicycleGAN
可以找到潜在编码z与目标图像B之间的关系,因此生成器可以在给定不同的z时学会生成不同的图像
B
^
\hat B
B^。如上图所示,BicycleGAN 通过组合 cVAE-GAN
和 cLR-GAN
这两种模型来做到这一点。
cVAE-GAN
VAE-GAN
的作者认为,
L
1
L_1
L1损失并不是衡量图像视觉质量的良好指标。例如,如果图像向右移动几个像素,则人眼看起来可能没有什么不同,但会导致较大的
L
1
L_1
L1损失。因此使用 GAN
的鉴别器来学习目标函数,以判断伪造的图像是否真实,并使用 VAE
作为生成器,生成的图像更清晰。如果忽略上图(c)
中的图像
A
A
A,那就是 VAE-GAN
,由于以
A
A
A 为条件,其成为条件 cVAE-GAN
。训练步骤如下:
VAE
将真实图片
B
B
B 编码为多元高斯分布的潜在编码,然后从它们中采样以创建噪声输入,此流程是标准的VAE工作流程;
2. 使用图像
A
A
A 作为条件及从潜矢量
z
z
z 采样的噪声用于生成伪图像
B
^
\hat B
B^.
训练中的数据流为
B
−
z
−
B
^
B->z->\hat B
B−>z−>B^ ( 图(c)
中的实线箭头),总的损失函数由三个损失组成:
- L
G
A
N
V
A
E
\mathcal L_{GAN}^{VAE}
LGANVAE:对抗损失
2. L
1
V
A
E
\mathcal L_1^{VAE}
L1VAE:
L
1
L_1
L1重建损失
3. L
K
L
\mathcal L_{KL}
LKL:
K
L
KL
KL散度损失
cLR-GAN(Conditional Latent Regressor GAN)
在 cVAE-GAN
中,对真实图像B进行编码,以提供潜在矢量的真实样本并从中进行采样。但是, cLR-GAN
的处理方式有所不同,其首先使用生成器从随机噪声中生成伪图像
B
^
\hat B
B^ ,然后对伪图像
B
^
\hat B
B^ 进行编码,最后计算其与输入随机噪声差异。
前向计算步骤如下:
- 首先,类似于
cGAN
,随机产生一些噪声,然后串联图像A以生成伪图像
B
^
\hat B
B^。
2. 之后,使用来自 VAE-GAN
的同一编码器将伪图像
B
^
\hat B
B^ 编码为潜矢量。
3. 最后,从编码的潜矢量中采样
z
^
\hat z
z^ ,并用输入噪声
z
z
z 计算损失。
数据流为
z
−
B
^
−
z
^
z-> \hat B -> \hat z
z−>B−>z ( 图(d)
中的实线箭头),有两个损失:
- L
G
A
N
\mathcal L_{GAN}
LGAN:对抗损失
2. L
1
l
a
t
e
n
t
\mathcal L_1^{latent}
L1latent:噪声 N(z)
与潜在编码之间的
L
1
L_1
L1 损失
通过组合这两个数据流,在输出和潜在空间之间得到了一个双映射循环。 BicycleGAN
中的 bi
来自双映射(双向单射),这是一个数学术语,简单来说其表示一对一映射,并且是可逆的。在这种情况下,BicycleGAN
将输出映射到潜在空间,并且类似地从潜在空间映射到输出。总损失如下:
l
o
s
s
B
i
c
y
c
l
e
=
L
G
A
N
V
A
E
L
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
据流,在输出和潜在空间之间得到了一个双映射循环。 BicycleGAN
中的 bi
来自双映射(双向单射),这是一个数学术语,简单来说其表示一对一映射,并且是可逆的。在这种情况下,BicycleGAN
将输出映射到潜在空间,并且类似地从潜在空间映射到输出。总损失如下:
l
o
s
s
B
i
c
y
c
l
e
=
L
G
A
N
V
A
E
L
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-0hIwTj65-1713274416197)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!