【IJCV2020】【语义编辑】Semantic Hierarchy Emerges in Deep Generative Representations for Scene Synthesis

注:拉到最后有视频版~

论文地址:https://genforce.github.io/higan

 

这次给大家分享一篇做场景编辑的文章,作者是周博磊老师组的杨策元,中的是 IJCV2020

我会从这五个方面开始我的讲解

背景

首先是背景,背景就是 GAN 在图片合成领域表现优异

动机

动机是现在目标检测的解释性工作比较多,对于 GAN 这种生成模型的解释性工作还比较少

目标

研究目标是探究下语义层级信息在 layer-wise 输入的 GAN 模型中的表现,这里可以看到两个图,左图是本文章主要探究的几个语义属性,比如 layout(格局),category(种类),attribute 和 color;右图是不同类型的 GAN,一般的 GAN 都是直接输入网络,但是 StyleGAN 的变量是 layer-wise 进去的

方法

先看下本文定义的多种语义,对于 bedroom 和 living room 这两种场景,有以下的定义: attribute 就是用不同的分类器分出来的, layout 是提取墙的线得到的,object 是场景分割得到的

具体的方法就是 SVM 和 Re-score,SVM 我已经说过很多次,就是在 GAN 的 latent space 中,每个点对应着 image space 中的一张图片,同时也对应着 semantic space 中的多种语义。Sample 一定量的图片后,用预训练好的分类器去获取他们对应的不同语义,接着对于某个属性,用一个 SVM 在 latent space 中学一个超平面,得到支持向量 n,这就是这个模型中的语义向量,和 InterfaceGAN 的方法几乎一样,不过 InterfaceGAN 处理的对象是 face,face 是容易定义的,而本文处理的是 scene,scene 的变化是很大的。

在获取了语义向量后,我们用 Re-score 来衡量这个语义方向,也就是说看编辑前后图片的语义变化程度,公式在下面,K 是样本数

验证完毕后,文章有三种编辑的手段,第一张很简单,就是在 latent space 中向语义的方向推,第二种是向两个语义方向的加和方向推,第三种是在推的时候加一点随机扰动

实验

然后来看实验,比如对于 layout,object 这几类属性,正负样本是怎么分的,layout 就是看支撑墙的中点在左边还是右边;文章做实验用到的模型列在下面

首先看下出现的语义层级,对于本文用到的网络,我们在 y 的层面而不是 z 的层面,做 rescore 来研究,探究某个层级后在整体效果中的占比,可以看到 layout,object 和其他属性的峰值(即变化最大)都对应着不同的层级,user-study 也证明了这一点

然后看编辑实验,对不同的属性,都可以做相当定向的编辑,还能结合起来做编辑,效果都很不错

当我们把 living room 的 scene 用语义向量推到 bedroom,再推到 dining room,跟踪一些 object 的像素的变化,可以看到这样的图。出现这样的现象的原因,是因为某些 object 是某个 scene 独有的,因为床,沙发,椅子是 bedroom,living room 和 dining room 的特有物件。有这个现象,我们就可以做特定的编辑,也不用像其他 cgan 的那种 label 方式

场景的编辑肯定依赖于训练的数据,故这里分析了一下训练数据的分布,在 bridge 的场景,sunny 占主要的变化,其他场景也有对应的属性,这些属性都是这个场景独有的

回顾下之前的编辑,对于不同的语义编辑,可以看到同时编辑的效果是可以把两个语义同时加上去的,随机扰动的编辑可以加上让语义更加丰富

消融实验主要为了证明自己的方法的有效性,先看第一个图,在 bedroom 场景中,这几个属性一直保持接近 1 的值,这说明这几个属性是没法区分的,我们的方法用 rescore 可以把这些给去掉;第二个图,在 SVM 分类效果的指标上来看,几乎所有的属性都被完美分开,无法区分出主次,但我们的方法 rescore 可以把找出变化最明显的属性

这是对不同层做操作的消融实验,从第一个图可以看到对目标层和对所有层编辑的对比,对所有层的编辑带来了更多其他属性的变化

第二个图是在底层对四个属性进行编辑,可以发现大多都只改变了布局

在看解耦合的实验,当我们定向编辑红色向量的时候,发现在 rescore 的指标上,其他特征变化都不大

在其他的 GAN 模型上也能得到类似的结果

结论

结论就是 layer-wise 的层级对应于特定的语义,和人一样从宏观到微观生成图片

不足

不足也很明显,首先是分类器可能不一定准确,第二是 layout 属性的定义很难,第三是 SVM 的分类是线性的,效果可能不够好

 

[IJCV2020]Semantic Hierarchy Emerges in Deep Generative Representations for Scen

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(3) 参考利用下面的程序代码,完成代码注释中要求的两项任务。 import re """ 下面ref是2020年CVPR的最佳论文的pdf格式直接另存为文本文件后, 截取的参考文献前6篇的文本部分。 请利用该科研文献的这部分文本,利用正则表达式、字符串处理等方法, 编程实现对这6篇参考文献按下面的方式进行排序输出。 a.按参考文献标题排序 b.按出版年份排序 """ ref = """[1] Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, and Leonidas Guibas. Learning representations and generative models for 3D point clouds. In Proc. ICML, 2018 [2] Pulkit Agrawal, Joao Carreira, and Jitendra Malik. Learning to see by moving. In Proc. ICCV, 2015 [3] Peter N. Belhumeur, David J. Kriegman, and Alan L. Yuille. The bas-relief ambiguity. IJCV, 1999 [4] Christoph Bregler, Aaron Hertzmann, and Henning Biermann. Recovering non-rigid 3D shape from image streams. In Proc. CVPR, 2000 [5] Angel X. Chang, Thomas Funkhouser, Leonidas Guibas. Shapenet: An information-rich 3d model reposi-tory. arXiv preprint arXiv:1512.03012, 2015 [6] Ching-Hang Chen, Ambrish Tyagi, Amit Agrawal, Dy-lan Drover, Rohith MV, Stefan Stojanov, and James M. Rehg. Unsupervised 3d pose estimation with geometric self-supervision. In Proc. CVPR, 2019""" ref_str = re.sub(r'\[([0-9]{1})\]', r'$[\1]', ref) # 添加分隔$ print(ref_str) #脚手架代码 ref_str_2 = re.sub(r'([a-zA-Z]{2})\.', r'\1.#', ref_str) # 添加分隔# print(ref_str_2) #脚手架代码 ref_str2 = ref_str_2.replace("\n", "") ref_list = ref_str2.split("$") print(ref_list) #脚手架代码 [提示: 排序可以采用内置函数sorted(),语法如下: sorted(iterable, /, *, key=None, reverse=False), 注意掌握形式参数中带“/”和“*”的用途]
最新发布
05-26

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值