STGAN: A Unified Selective Transfer Network for Arbitrary Image Attribute Editing 阅读笔记和pytorch代码解读
一.论文采用的新方法
1.AttGan中skip connect的局限性
由于encoder中对特征的下采样实际上可能损失部分特征,我们在decoder中进行上采样和转置卷积也无法恢复所有特征,因此AttGan考虑采用了skip connect,这种跳跃连接最初是resnet中为了解决网络层数过深带来的梯度爆炸和梯度消失无法训练的问题,笔者认为在人脸属性编辑这里并非是这一用途,而是为了保持最初人脸的特征。但是这一做法仍然具有其局限性,根据实验,重建图像的质量明显上升,但是控制图像属性的能力却有所下降。

为了解决这一问题,在这篇论文中,提出了采用selective transfer units来自适应的选择encoder属性的办法解决这一问题。
(对上面这一点的理解,我咨询了师兄,得到了解释。即encoder的结果有一些是不需要改变的,因为有的属性并不需要更改,这个时候把它skip过去就会有利于这部分区域的重建,但如果是需要改变的区域,encoder这块区域的特征直接skip过去的话,decoder就会倾向于利用这块的特征,因为还有GAN Loss和重建Loss在,所以就会导致修改效果很差。所以加上STU,就是让他自适应的选择不需要改的区域传到decoder,而让需要改的区域用的decoder改之后的feature来做生成)
2.采用差分属性向量作为输入
在AttGan和StarGan中,都是采用源图像和目标属性完整向量作为generator的输入的,但是这样操作可能会改变一些我们无需改变的属性,为了解决这一问题,我们将差分向量作为generator的输入

这么做的好处不仅能使该向量简化,因为目标向量和源向量往往只有细微的不同,从而简化训练过程。而且可以提高生成图像的质量,并且差分向量在实际中更好提供(笔者对这一点持怀疑态度)。
3.选择性转换单元(Selective Transfer Units)
上面我们已经讲过了采用STU的原因,STU的结构是在GRU的基础上修改而成的。
首先我们采用转置卷积对连接的l+1层的隐状态和差分向量做处理,改变其size。

然后我们用STU自适应的改变隐状态和transformed encoder feature。

重置门r和更新门z的引入使得能自适应的改变encoder feature。
STU
GRU
上面给出了STU和GRU的结构图,STU和后者的不同是STU同时输出了sl和flt,而后者只输出了flt,而后者只输出了flt。至于这么做的原因,在后面介绍网络结构的时候就可一目了然
二.论文网络架构

本网络主要由generator和discriminator两部分组成,上面展示了generator的主要结构,左边是encoder,右边是decoder。encoder由5个卷积层组成,decoder由5个反卷积层组成。STU用在除了第五个卷积层后。而discriminator有两部分att和adv两部分,adv用来判断图像的真假,att和adv共享卷积参数,并用全连接层用来预测生成图的属性。

针对STU,其作用表示如下:

除了第五个encoder的结果,其余的encoder feature都通过了STU的处理,部署在不同层的STU不共享参数。
我们将encoder看成是一个整体,那么其功能可以写作


对于整个generator,其功能为

三.损失函数
1.Reconstruction loss
当target图像和source图像的属性完全相同时,reconstruction loss显然为0。根据这一基准,论文定义rec loss为

2.Adversarial loss
这里采用了WGAN-GP的方法定义adv loss。

3.Attribute manipulation loss

这部分为属性编辑误差,采用了交叉熵损失函数。
4.模型总优化目标

四.代码解析
STGAN: A Unified Selective Transfer Network for Arbitrary Image Attribute Editing 阅读笔记和pytorch代码解读的更多相关文章
- 《Macro-Micro Adversarial Network for Human Parsing》论文阅读笔记
<Macro-Micro Adversarial Network for Human Parsing> 摘要:在人体语义分割中,像素级别的分类损失在其低级局部不一致性和高级语义不一致性方面 ...
- Deep Transfer Network: Unsupervised Domain Adaptation
转自:http://blog.csdn.net/mao_xiao_feng/article/details/54426101 一.Domain adaptation 在开始介绍之前,首先我们需要知道D ...
- “Triplet network”三元组网络阅读笔记
记录<DEEP METRIC LEARNING USING TRIPLET NETWORK>阅读笔记 文章总体内容: 作者在前人提出的多个特征提取方法的基础上提出Triplet netwo ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
- [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati
[论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...
- [论文阅读笔记] Community aware random walk for network embedding
[论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- [论文阅读笔记] Structural Deep Network Embedding
[论文阅读笔记] Structural Deep Network Embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 现有的表示学习方法大多采用浅层模型,这可能不能 ...
- [论文阅读笔记] Unsupervised Attributed Network Embedding via Cross Fusion
[论文阅读笔记] Unsupervised Attributed Network Embedding via Cross Fusion 本文结构 解决问题 主要贡献 算法原理 实验结果 参考文献 (1 ...
随机推荐
- layui的基本使用
打开官网https://www.layui.com/下载这个框架 官网首页 下载到 layui 的最新版,它经过了自动化构建,更适合用于生产环境.目录结构如下 ├─css //css目录 │ │─mo ...
- 【英雄帖】FreeRedis 邀请您一起优化项目。
嘿!各位!自 FreeRedis 开库以来,相继出现了很多贡献者,我们正在对 FreeRedis 的各功能模块做优化,这并不意味着现版的 FreeRedis 有问题,我们只是希望在某些方面做得更好.如 ...
- 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云
一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...
- C# Attribute特性 泛型<T> 方法的out ref this(扩展方法) Equals与==
out ref out和ref的使用场景其实不一样.out适合在方法内返回一个额外的结果参数,而ref适合直接改变一个在方法外面的值,方法改变外部就改变,无需重新定义接住返回值再使用. out可以在方 ...
- Blogs禁止页面选中复制功能
说明:只需要在博客侧边栏公告(支持HTML代码) (支持 JS 代码)里面添加如下代码 /* 在页面定制 CSS 代码处添加如下样式 */ html,body{ moz-user-select: -m ...
- 基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口
原文地址:点击跳转 最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访 ...
- Apache Hudi使用简介
Apache Hudi使用简介 目录 Apache Hudi使用简介 数据实时处理和实时的数据 业务场景和技术选型 Apache hudi简介 使用Aapche Hudi整体思路 Hudi表数据结构 ...
- Redis 设计与实现 5:压缩列表
压缩列表是 ZSET.HASH和 LIST 类型的其中一种编码的底层实现,是由一系列特殊编码的连续内存块组成的顺序型数据结构,其目的是节省内存. ziplist 的结构 外层结构 下图展示了压缩列表的 ...
- Proguard结合maven使用
添加插件配置 项目是maven项目,则可以在 pom 的 build 标签下添加插件 <plugin> <groupId>com.github.wvengen</grou ...
- Docker - 配置加速器
https://www.daocloud.io/mirror#accelerator-doc curl -sSL https://get.daocloud.io/daotools/set_mirror ...
