【CVPR2020】【逆推】Image Processing Using Multi-Code GAN Prior
翻到最后有视频版哦~
论文地址:https://arxiv.org/pdf/1912.07116.pdf
项目地址:https://github.com/genforce/mganprior
文字版
这次给大家分享一篇,关于GAN逆推的论文,是周博磊老师组在cvpr2020上的一个工作
因为现在GAN的生成效果已经非常不错,但是他们的输入都是随机噪声,而我们的需求肯定是对一张已有的图片进行操作,所以GAN逆推这个主题是很关键的,是GAN编辑和生成的基础。GAN的逆推就是生成器的反过程,生成器是把一个向量输入,输出一张图片,逆推的效果是输入一张图片,输出一个他在GAN空间中的向量
a就是这篇论文逆推的效果,bcdef都是在逆推后达到的效果,可以看到都很不错
我会从这五个方面介绍一下这篇论文
背景
首先是背景,背景就是GAN的生成能力已经非常不错,但是都是在随机噪声输入的情况下,我们的需求是对一张现有的图片进行操作,但是这个很难
动机
动机呢就是之前的一些方式,都不能很好的把一张真实图片逆推到GAN空间中,而且对高分辨率图片,效果更加糟糕
目标
然后论文的研究目标就是充分利用已经训好的生成器,使得GAN的逆推最优,有了好的逆推效果,就能做很不错的图片编辑
方法
然后来看方法,先看一下之前的经典逆推方法,这个图是我拼起来的,大家凑合看一下。我们有一张真实图片,目标就是找到一个向量,这个向量通过生成器之后能生成和真实图片一样的图片。第一个经典方法的话就是左边这个算法,下面这个优化公式,有loss,然后去调整输入的w
第二个经典方法的话,就是学一个encoder,没什么好说的
然后是这篇论文的框架图,论文提出,单单靠一个向量去逆推,是不行的,表达能力太弱了,需要多个向量一起上,每个向量负责一小块的逆推效果,这样才能充分和真实图片近似。宏观来看,和之前的方法是差不多的,都是过生成器,然后和原图做loss,梯度反传调z
我来把这个结构拆开来讲一下,首先,把生成器劈成两半,多个向量过G1后生成很多个中间特征,这个是第一步
第二步呢,就是引入一个通道权值,每个中间特征的通道上都赋了权重,然后把带了权重的特征加在一起给G2,输出的就是逆推后的效果
第三,讲一下怎么优化,优化目标是多个输入z,还有对应的权值,优化函数是图片的L2loss和vgg 的loss,这个loss反传去优化。整个过程没有网络,只是一个简单的优化过程。
除了可以逆推原图,作者还发现,对于图片上色,超分,图片修补等,修改优化函数后都能得到很不错的结果,在实验里细说
实验
下面是实验,首先说一下逆推原图的效果,第一行是原图,方法a是只用一个向量去逆推,方法b是学习一个encoder来逆推,方法c是a和b的结合,方法d是本文的方法,可以看到在定量和定性上的效果,本文的效果都是最好的
然后是文章的一个消融实验,我们先竖着看,发现输入向量的个数不是越多越好的,多到一定程度,效果就提不上去了,这说明在优化空间的维数和逆推的效果之间存在trade-off的,y轴是逆推图片和真实图片的相关性大小。然后横着看,发现逆推的效果随着生成器切分层序列的增加呈现上升趋势,在第四层后变化不明显。
接着,文章探究了一下逆推的过程中,每个向量扮演了什么样的角色,具体的方法是,比如拿掉z1,得到生成前后的差异图,和原图分割出来的不同类做IOU,就发现z1其实是生成塔的,z7是生成树的等等
然后是几个应用,第一个是图片上色,输入一张灰度图片,可以上色,这个AuC指标是用一个pretrain的网络评价的,输出的ab图做L2 loss。可以看到定性和定量效果都是最好的
第二个应用是超分,输入一张低分辨率图片,可以看到效果还是非常不错的
第三个应用是图像修补,给定图片和掩码,能回复出原图,从指标上看还是非常不错的
第四个应用是人脸编辑,对真实图片逆推后,用interfacegan学到的语义向量去编辑,发现也能达到不错的效果
实验的最后是一个解释性,我们发现对于这样一张卧室的图片,用人脸集,教堂集训出来的模型也能逆推,且生成器切分层的索引越大,效果越好,但我们也要看到,对于卧室集训出的模型,在第四层就已经效果非常好了,但是其他集就算第八层也一般般,这其实也能解释。因为卧室和人脸等的语义是不一样的,所以在人脸模型在浅层的一些高级特征没法生成卧室的图片,但是随着网络加深,深层的低级特征,比如像素等,是可以粗略组合出卧室的图片的
同时,我们看上色和图片修补的例子,对于上色,我们发现到第八层,效果才最好,但是对于修补,第四层就很好了,层数再加深甚至是有害的。因为上色任务,大体的结构是有的,只需要修改低级特征颜色,故在深层网络中有体现,对于修补任务,需要补的是结构,是高级特征,所以在相对浅的网络中有体现
结论
然后是结论,就是更多的参数,能达到更好的逆推效果,同时这个方法也能有很多的图片编辑应用
不足
对于不足,我觉得是参数太多了,逆推会非常非常慢
视频
[CVPR2020]Image
[OpenBayes实现][CVPR2020]Image Processing Using Multi Code GAN Prior
【CVPR2020】【逆推】Image Processing Using Multi-Code GAN Prior相关推荐
- HDU-5935 Car 逆推 贪心 精度
题意 1 主人公从0开始开始跑 2 使用速度非递减技能 3 警察记录下了多个整数时间点他的位置 整数时间点不明确 让我们求主人公所花费的最小时间跨越过最后一个位置点 分析 本体选用逆推处理 为啥用逆推 ...
- 递推算法5——逆推法之猴子摘桃问题
逆推法是根据结果推出已知条件,推算方法与顺推法类似,只是需要将结果作为初始条件向前推算.比较典型的例子是猴子摘桃和存取问题 猴子摘桃 [问题描述] 猴子第一天摘了若干个桃子,当即吃了一半,还不过瘾,又 ...
- 递推算法6——逆推法之存取问题
该存多少钱 小明打算为自己的三年研究生生活准备了一笔学费,一次性的存入银行,保证每年年底取出1000元,到第3年学习结束时刚刚好取完.假设银行一年整存零取得月息为0.31%,请问需存入银行多少钱? [ ...
- hdu 3853 LOOPS (概率dp 逆推求期望)
题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Tot ...
- Roguelike+RPG如何给玩家刺激的游戏体验? 《我功夫特牛》系统逆推
一.游戏介绍及游玩情况 <我功夫特牛>是一款武侠题材,火柴人画风的休闲游戏,玩法上笔者认为它是Roguelike+RPG组合型游戏,即单局死亡重置+角色养成游戏.其游戏内核,既有战斗和探索 ...
- 逆推继承看原型 函数的角色 函数声明和函数表达式的区别 函数中this指向的问题
逆推继承看原型 <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...
- [剑指offer][JAVA]面试题第[46]题[把数字翻译成字符串][递归][逆推]
[问题描述][中等] 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l", ...
- 全排列及相关扩展算法(四)——原始中介数通过逆推求原排列算法
1.中介数逆推原排列:上一章我们讲到了中介数,通过一个排列可以很方便地求数它的中介数,通过中介数也可以很方便地求出排位序号.但是通过中介数逆推原排列就不是那么容易了.因为我们每求一位数,都需要对比其前 ...
- 二叉树的深度优先遍历逆推
二叉树的深度优先遍历逆推 二叉树的深度优先遍历有三种方式,分别叫做先序遍历(preorder).中序遍历(inorder)和后序遍历(postorder),它们之间的不同在于访问每个节点的次序不同. ...
最新文章
- 【转载】xmind的使用安装方法
- PostgreSQL md5 auth method introduce, with random salt protect
- MLPerf训练最新发榜:谷歌、NV、浪潮 ,冠军榜“三国杀”
- ECMA_作用域深入This关键字
- Unity5 AssetBundle系列——简单的AssetBundleManager
- python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞
- 超详细Mysql的安装与卸载
- 三分钟Docker-镜像、容器实战篇
- 布局优化之ViewStub、Include、merge使用分析
- 凸优化第三章凸函数 3.6关于广义不等式的凸性
- unixlinux命令,20个 Unix/Linux 命令技巧
- Java_基础—List集合存储学生对象并遍历
- Python基础-基本语法
- 记一次产品需求:图片等比缩放和CSS自适应布局16:9
- python聚类系数_NetworkX 计算聚类系数的Python实现
- java d打字游戏_练习--java实现的打字游戏
- 300字美文摘抄加赏析
- android涂鸦实现
- servlet修改用户头像_修改头像总结
- cocos3D 教程
热门文章
- 得力计算机半音乐曲,60条最全音乐知识科普,让你轻松开启音乐之门!
- 新能源储能仪表推荐-ACR10R-D16TE4 防逆流仪表通讯接线及Modbus-RTU协议通讯表说明
- java 五子棋_Java GUI 单机版五子棋
- 一个故事,让你一生不再生气
- ubuntu上安装RobotFramework+ride
- 为什么大公司一定要使用微服务?微服务杂谈(1),推荐学习
- 公允价值变动及公允价值变动损益
- 7805和78l05可以代换吗_78L05和7805的引脚有何不同??
- 使用IDEA画结构图
- 字符串翻转并实现“i love china“--“china love i“