《动手学深度学习》图像分类案例2;GAN;DCGAN

图像分类案例2

任务

Kaggle竞赛中的犬种识别挑战,比赛的网址是https://www.kaggle.com/c/dog-breed-identification在这项比赛中,我们尝试确定120种不同的狗。
首先对数据集结构进行了整理,原数据集按train、test结构,修改后在train、test下建立以类别分类的文件夹

| train_valid_test
    | train
    |   | affenpinscher
    |   |   | 00ca18751837cd6a22813f8e221f7819.jpg
    |   |   | ...
    |   | afghan_hound
    |   |   | 0a4f1e17d720cdff35814651402b7cf4.jpg
    |   |   | ...
    |   | ...
    | valid
    |   | affenpinscher
    |   |   | 56af8255b46eb1fa5722f37729525405.jpg
    |   |   | ...
    |   | afghan_hound
    |   |   | 0df400016a7e7ab4abff824bf2743f02.jpg
    |   |   | ...
    |   | ...
    | train_valid
    |   | affenpinscher
    |   |   | 00ca18751837cd6a22813f8e221f7819.jpg
    |   |   | ...
    |   | afghan_hound
    |   |   | 0a4f1e17d720cdff35814651402b7cf4.jpg
    |   |   | ...
    |   | ...
    | test
    |   | unknown
    |   |   | 00a3edd22dc7859c487a64777fc8d093.jpg
    |   |   | ...

模型

使用预训练的RseNet-34模型,采用微调的方法,只重新训练输出层,将输出改为120类,其他抽取特征的其他部分予以保留。

GAN

生成对抗网络,即生成器和判别器两部分网络。两者相互博弈,相互训练。
在这里插入图片描述
对于生成器的任务是生成以假乱真的数据,以骗过判别器。
判别器则是区分真实数据和生成器生成的假数据。

损失函数

判别器

使用交叉熵损失
min ⁡ D { − y log ⁡ D ( x ) − ( 1 − y ) log ⁡ ( 1 − D ( x ) ) } , \min_D \{ - y \log D(\mathbf x) - (1-y)\log(1-D(\mathbf x)) \}, minD{ylogD(x)(1y)log(1D(x))},
对于真实数据 y = 1 y=1 y=1,假数据 y = 0 y=0 y=0,训练时使两者平均损失最小。

生成器

同样使用交叉熵损失,我们希望生成的数据尽可能与真实数据相似, D ( G ( z ) ) ≈ 1 D( G(\mathbf z)) \approx 1 D(G(z))1,即在 y = 0 y=0 y=0时最大化交叉熵损失
max ⁡ G { − ( 1 − y ) log ⁡ ( 1 − D ( G ( z ) ) ) } = max ⁡ G { − log ⁡ ( 1 − D ( G ( z ) ) ) } . \max_G \{ - (1-y) \log(1-D(G(\mathbf z))) \} = \max_G \{ - \log(1-D(G(\mathbf z))) \}. maxG{(1y)log(1D(G(z)))}=maxG{log(1D(G(z)))}.
在实际应用时,如果判别器效果很好,则对于生成器的判断值接近于0, D ( G ( z ) ) ≈ 0 → − log ⁡ ( 1 − D ( G ( z ) ) ) ≈ − log ⁡ 1. D( G(\mathbf z)) \approx 0 \to - \log(1-D(G(\mathbf z)))\approx - \log1. D(G(z))0log(1D(G(z)))log1.此时梯度会非常小,不利有训练优化生成器。
所以我们将损失改为等价式
min ⁡ G { − y log ⁡ ( D ( G ( z ) ) ) } = min ⁡ G { − log ⁡ ( D ( G ( z ) ) ) } , \min_G \{ - y \log(D(G(\mathbf z))) \} = \min_G \{ - \log(D(G(\mathbf z))) \}, minG{ylog(D(G(z)))}=minG{log(D(G(z)))},
能有效避免上述梯度消失。

DCGAN

任务

使用宝可梦图像数据集,生成相似的图片。
在这里插入图片描述

模型

使用深度卷积的生成对抗网络,和原始GANs使用相同方式,不过将多层感知机替换成卷积网络。
生成器模块架构:(卷积层+批量归一化+ReLU)*4+转置卷积层+Tanh
判别器模块架构:(卷积层+批量归一化+LeakyReLU)*4+卷积层+Sigmoid
损失函数同样使用交叉熵,与原始GANs相同

转置卷积层

又称反卷积,简单地说,相当于将卷积操作反过来,由小图转换为大图。但是经过卷积反卷积并不能得到与原来近似的矩阵
卷积
卷积
反卷积
反卷积

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值