DCGAN解读

DCGAN

引言

DCGAN( Generative Adversarial Nets),又称生成对抗网络。原创论文由Martin Arjovsky等人于2017年发表。它是对标准的GAN模型的扩展,通过使用卷积层和反卷积层来处理图像数据,从而实现更稳定和高质量的图像生成。

对于DCGAN的理论模型和原理,原文的链接

标题和摘要

标题:

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP

CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

unsupervised representation learning,即无监督表示学习,deep表示网络较深,

convolutional,即使用卷积神经网络,generative即生成式模型,adversarial即对抗网络,nets是networks的缩写。

摘要:

近年,在有监督的CV领域,cnn成就斐然。在无监督领域,我们尝试选用DCGAN处理无监督的任务,实验证明G和D能学习到多层次的物体表示,在多个数据集上表现良好。

结论和未来

  • 成果展示:

    作者在多个数据集上取得了较好的效果,并且对一些中间过程和结果做了数据可视化。

    • Faces:

    这里可以很直观地看到,上述实验得到以下等式:

    微笑女人的人脸特征-普通女人人脸特征+普通男人人脸特征 = 微笑男人的人脸特征

    image-20230804173435138

    同上,可以发现:戴眼镜男-不戴眼镜男+不戴眼镜女 = 戴眼镜女

image-20230804174250546这个是对人脸的转向进行的调整,从左往右表示人脸的朝向变化。

  • 未来研究:

    需要进一步的工作来解决这个不稳定问题。作者认为可以考虑扩展这个框架到其他领域,例如视频(用于帧预测)和音频(用于语音合成的预训练特征)。对学习到的潜在空间的属性的进一步研究也很有趣。

简介和相关

简介中作者提到了自己的贡献:

  • 提出并评估了一组关于卷积 GAN 架构拓扑的约束,使它们能够在大多数设置下稳定地进行训练,将此类架构命名为DCGAN;

  • 使用训练有素的鉴别器进行图像分类任务,与其他无监督算法的性能相比有竞争力;

  • 将 GAN 学习到的过滤器可视化,并根据经验表明特定的过滤器已经学会了如何绘制特定的物体;

  • 证明生成器具有向量算术属性,可以轻松实现操纵生成样本的许多语义质量。

相关工作这里,作者总结了一些前人的经验和相关研究,不做过多阐述

原理介绍

一个简单的DCGAN在图像生成领域的算法流程如下:

(1) 在随机正态分布上找一个点z(即找一个数)

(2) 通过生成器将点z映射为一个图片,选择的网络有点像CNN的逆过程

(3) 然后将这张伪造的图片和一些真实的图片喂给判别器(真实的图片的标签为“真”,伪造的图片的标签为“假”),让判别器区分哪些图片是真实的,哪些图片上是假的,选择的网络可以是常见的二分类CNN

(4) 训练判别器就是简单的二分类问题;在训练生成器时,修改伪造图片的标签(使其为“真”),并固定判别器的参数,按照损失函数梯度方向只更新生成器的参数。这只会更新生成器的权重(只更新生成器的权重,因为判别器在GAN中被冻结),其更新方向是使得判别器能够将生成图像预测为“真实图像”。这个过程是训练生成器去欺骗判别器

《Python深度学习》中DCGAN的部分核心代码,如下(虚假图像标签为1,真实为0)

img

最核心的是在训练生成器的时候,将虚假的图像标签设定为0(0表示真实图片),然后和真实的图片放在一起作为判别器的输入,更新参数时候不去更新判别器,只更新生成器的。

实验

数据集:

  • LSUN

Large-scale Scene Understanding,该数据集是指在计算机视觉领域中,对大规模、复杂场景中的物体、结构、关系和语义进行理解和分析的任务。这涉及从图像或视频数据中提取高层次的语义信息,以实现对场景的深入理解。

  • Faces

作者从随机查询人名的网络图像中提取包含人脸的图像。这些人的名字是从百科全书中获得的,选取标准是他们必须出生在现代。

这个数据集有来自10K个人的3M张图像。我们在这些图像上运行了一个OpenCV人脸检测器,保持了足够高的分辨率,这给了我们大约35万个人脸盒。我们用这些脸盒来训练。未对图像进行数据增强。

  • Imagenet-1k

ImageNet-1K" 是指 ImageNet 数据集中的一个子集,其中包含了大约 1000 个不同的类别,每个类别都有一些图像样本。ImageNet 数据集是一个广泛用于计算机视觉任务的大规模图像数据集,它包含了来自各种类别的图像,用于训练和评估深度学习模型。

实证验证:

  1. CIFAR-10

image-20230804184620263

CIFAR-10(Canadian Institute for Advanced Research 10)是一个经常用于计算机视觉研究的图像数据集,由10个不同的类别组成,每个类别有6000张尺寸为 32x32 像素的彩色图像。这个数据集旨在为图像分类和目标识别任务提供一个基准测试平台。

通过表一,我们可以看到DCGAN的准确率打败了使用K-means聚类的相关算法,略逊于CNN,不过作者的DCGAN是基于IMAGENET-1K做的预训练,然后在CIFAR-10上训练得到的结果,从另一个角度可见泛化能力。

  1. SVHN

image-20230804184541447

SVHN(Street View House Numbers)是一个用于数字识别任务的图像数据集,其主要用途是识别街道上的房屋号码。这个数据集包含了来自Google街景图像的房屋号码图像,可以用于训练和评估数字识别模型。

很明显,表二显示的错误率最低的是DCGAN+L2-SVM,这里的DCGAN相当于是一个特征提取器,然后将学到的特征处理后给L2-SVM,让L2-SVM进行分类。

SWWAE(stacked what-where auto-encoders),更准确的说是一种 convolutional auto-encoder,因为在CNN中的pooling处才有 “what-where”,而what-where是注意力机制的体现,有助于增强模型对图像中物体的感知能力,并在物体检测、图像分割等任务中取得更好的结果。相关信息参考原论文

总结

DCGAN 在图像生成任务中取得了显著的成功,其关键思想包括:

  1. 卷积层和反卷积层: DCGAN使用卷积层作为生成器和判别器的主要构建块。生成器使用反卷积层(也称为转置卷积层)来将低维的随机噪声转化为高分辨率图像。
  2. 无池化(Unpooling): DCGAN避免了池化操作,转而使用反卷积层来实现上采样。这有助于避免图像中的信息丢失。
  3. 批量归一化(Batch Normalization): DCGAN引入了批量归一化来加速训练过程并提高稳定性。它有助于控制梯度消失问题,使网络更易于训练。
  4. 去除全连接层: 与传统的GAN不同,DCGAN将全连接层从生成器和判别器中移除,这有助于避免模型过拟合和提高生成图像的质量。
  5. 激活函数和损失函数: 生成器使用ReLU激活函数,输出层使用tanh激活函数以获得适当的像素范围。判别器使用LeakyReLU激活函数。损失函数通常使用二进制交叉熵,帮助优化生成器和判别器之间的对抗性训练。

对原始的GAN做了一些优化,但是并不彻底,在文章结论部分,作者提到“我们提出了一套更稳定的架构来训练生成对抗网络,并提供证据表明对抗网络可以学习良好的图像表示,以进行监督学习和生成建模。仍然存在某些形式的模型不稳定 ——随着模型训练时间的延长,它们有时会将滤波器的子集折叠为单一振荡模式。”

化,但是并不彻底,在文章结论部分,作者提到“我们提出了一套更稳定的架构来训练生成对抗网络,并提供证据表明对抗网络可以学习良好的图像表示,以进行监督学习和生成建模。仍然存在某些形式的模型不稳定 ——随着模型训练时间的延长,它们有时会将滤波器的子集折叠为单一振荡模式。”

后续,有学者提出Wasserstein 距离,对GAN的训练不稳定提出了更好的解决方案。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值