(原)Show, Attend and Translate: Unsupervised Image Translation with Self-Regularization and Attention
转载请注明出处:
https://www.cnblogs.com/darkknightzh/p/9333844.html
论文网址:https://arxiv.org/abs/1806.06195
在gan中,对图像进行风格变换时,一般都是将整个图像进行变换。由于图像包含前景和背景,因而该论文在保持背景区域不变的前提下,对前景区域进行风格变换。同时,使用self-regularization项来约束变换前后背景区域的差异。
网络结构如下图所示。输入图像通过2层的下采样,而后通过9层的残差网络,在通过2层的上采样,得到。另一方面,通过预训练的vgg-19网络的前几层,并通过2层的上采样,在通过conv+sigmoid,得到Gattn,即前景区域的概率图。网络基本结构均为conv+bn+relu。残差部分使用空洞卷积,因为空洞卷积可以增加感受野的大小。损失函数包含两部分,传统的判别器的损失及感知损失。文中指出,感知损失比传统的距离更接近人类对相似性的认知。传统的判别网络为5层的CNN网络。

其中,
$G(x)={{G}_{attn}}(x)\otimes {{G}_{0}}(x)+(1-{{G}_{attn}}(x))\otimes x$
${{G}_{attn}}(x)\otimes {{G}_{0}}(x)$代表前景区域,$(1-{{G}_{attn}}(x))\otimes x$代表背景区域。${{G}_{attn}}(x)$为前景区域的概率图,像素范围为[0, 1]。
文中判别器:
${{L}_{D}}=\log (D(y))-\log (1-D(G(x)))$
生成器:
${{L}_{G}}={{l}_{adv}}(G(x),y)+\lambda {{l}_{reg}}(x,G(x))$
生成器包含两部分,传统gan的损失:
${{l}_{adv}}(G(x),y)=-\log (-D(G(x)))$
及self-regularization项损失:
${{l}_{reg}}(G(x),x)=\sum\limits_{l=1,2,3}{\frac{1}{{{H}_{l}}{{W}_{l}}}\sum\limits_{h,w}{(\left\| {{w}_{l}}\circ (\hat{F}(x)_{hw}^{l}-\hat{F}(G(x))_{hw}^{l}) \right\|_{2}^{2})}}$
${{l}_{reg}}$使用预训练的vgg-19网络的前三层加权得到。分别将输入图像x及生成的图像$G(x)$通过vgg-19网络前3层,得到对应的特征图,并计算特征图的l2 norm的平方,之后进行加权。各层权重经过大量实验得到为:
$({{w}_{1}},{{w}_{2}},{{w}_{3}})=(1/32,1/16,1/8)$
训练过程:先训练${{G}_{0}}$,再训练${{G}_{attn}}$,最后finetune整个网络。对于$\lambda $,从0增加,直至对抗损失降低到阈值$l_{adv}^{t}$之下,而后固定$\lambda $。
(原)Show, Attend and Translate: Unsupervised Image Translation with Self-Regularization and Attention的更多相关文章
- Unsupervised Image-to-Image Translation Networks --- Reading Writing
Unsupervised Image-to-Image Translation Networks --- Reading Writing 2017.03.03 Motivations: most ex ...
- Phrase-Based & Neural Unsupervised Machine Translation基于短语非监督机器翻译
1. 前言 本文介绍一种无监督的机器翻译的模型.无监督机器翻译最早是<UNSUPERVISED NEURAL MACHINE TRANSLATION>提出.这个模型主要的特点,无需使用平行 ...
- MUNIT:Multimodal Unsupervised Image-to-Image Translation - 1 - 论文学习,不成对数据
摘要:无监督图像转换是计算机视觉领域中一个重要而又具有挑战性的问题.给定源域中的一幅图像,目标是学习目标域中对应图像的条件分布,而不需要看到任何对应图像对的例子.虽然这种条件分布本质上是多模态的,但现 ...
- Unsupervised Image-to-Image Translation Networks
Abstract: 无监督图像到图像的翻译目的是学习不同域图像的一个联合分布,通过使用来自单独域图像的边缘分布.给定一个边缘分布,可以得到很多种联合分布.如果不加入额外的假设条件的话,从边缘分布无法推 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 7 Regularization 正则化
Lecture7 Regularization 正则化 7.1 过拟合问题 The Problem of Overfitting7.2 代价函数 Cost Function7.3 正则化线性回归 R ...
- Unpaired/Partially/Unsupervised Image Captioning
这篇涉及到以下三篇论文: Unpaired Image Captioning by Language Pivoting (ECCV 2018) Show, Tell and Discriminate: ...
- 简单实现Python调用有道API接口(最新的)
# ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...
- (转)Autonomous_Vehicle_Paper_Reading_List
Autonomous_Vehicle_Paper_Reading_List 2018-07-19 10:40:08 Reference:https://github.com/ZRZheng/Auton ...
- [转]NLP Tasks
Natural Language Processing Tasks and Selected References I've been working on several natural langu ...
随机推荐
- 利用mysqldump 实现每天备份方案
1.创建单独的导出导入数据库帐号 grant SELECT, RELOAD, SHOW DATABASES, LOCK TABLES on game to jackluo@localhost iden ...
- 大数据在教育中的应用 part2笔记
什么是交叉检验(K-fold cross-validation) K层交叉检验就是把原始的数据随机分成K个部分.在这K个部分中,选择一个作为测试数据,剩下的K-1个作为训练数据. 交叉检验的过程实 ...
- ThreadLocal、Volatile、synchronized、Atomic
前言 对于ThreadLocal.Volatile.synchronized.Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点.区别 ...
- VsCode下代码导航
Visual Studio Code具有高效的代码编辑器,当与编程语言服务结合使用时,可以为您提供IDE的强大功能和文本编辑器的速度.在本主题中,我们将首先描述VS Code的语言智能功能(建议,参数 ...
- POJ 3903 Stock Exchange 【最长上升子序列】模板题
<题目链接> 题目大意: 裸的DP最长上升子序列,给你一段序列,求其最长上升子序列的长度,n^2的dp朴素算法过不了,这里用的是nlogn的算法,用了二分查找. O(nlogn)算法 #i ...
- 【知了堂学习笔记】java 自定义异常
java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...
- 001.HAProxy简介
一 HAProxy简介 HAProxy是可提供高可用性.负载均衡以及基于TCP(从而可以反向代理mysql等应用)和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProx ...
- Restrictions查询用法
HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <> Restrictions.ne() 不等于not equal > Restrict ...
- loj#2552. 「CTSC2018」假面
题目链接 loj#2552. 「CTSC2018」假面 题解 本题严谨的证明了我菜的本质 对于砍人的操作好做找龙哥就好了,blood很少,每次暴力维护一下 对于操作1 设\(a_i\)为第i个人存活的 ...
- 牛客国庆集训派对Day4 Solution
A 深度学习 puts(n) #include <bits/stdc++.h> using namespace std; int main() { double n; while ( ...