丰色 发自 凹非寺
量子位 报道 | 公众号 QbitAI

StyleGAN在各种图像处理和编辑任务上,表现很惊艳。

然而,“干一种活”就得换个体系重新“培训”一次,太麻烦。

终于,有人细细研究了一下,发现:

其实只通过预训练和潜空间上的一点小操作,就可以让StyleGAN直接上手各种“活儿”,包括全景图生成、从单张图像生成、特征插值、图像到图像翻译等等。

更厉害的是,它在这些“活儿”上的表现还完全不输每一位单项SOTA选手。

作者顺势做了个全面整理写成了一篇论文,相关讨论在reddit上直接收获了700+的热度

网友纷纷感叹:这总结真的是太酷了!


All You Need:预训练+一点空间操作

方法都非常简单,我们一个一个来。

前提:fi∈RB×C×H×W表示StyleGAN第i层的中间特征(intermediate features)。

1、空间操作实现直观和逼真的图像

由于StyleGAN是全卷积的,我们可以调整fi的空间维度,从而在输出图像中引起相应的空间变化。

用简单的空间操作(如padding和resize),可以生成更直观和真实的图像。

比如下图通过复制灌木和树丛来扩展背景,与导致纹理模糊等瑕疵的原始resize相比,在特征空间中可以保持更真实的纹理。

2、特征插值

对StyleGAN中间层进行拼贴可以实现图像信息混合,但要拼接的两张图差异太大时效果往往不好。

但采用特征插值就没问题。

具体操作方法:在每个StyleGAN层,分别使用不同的潜噪声生成fAi和fBi。然后用下面这个公式将它俩进行平滑地混合,然后再传递到下一个卷积层进行同样的操作。

其中α∈ [0, 1]B×C×H×W是一个mask,如果用于水平混合,则mask将从左到右变大。

和对应模型的定性和定量比较:

该特征插值法能够无缝地混合两幅图像,而Suzuki等人的结果存在明显的伪影。

用户研究中,与Suzuki等人相比,87.6%的人也更喜欢该方法。

用户研究包含40人,每人需比较不同方法下的25对图像。

3、从单个图像生成

除了在不同图像之间进行特征插值,我们还可以在单个图像中应用它。

具体操作方法:在一些特征层中,选择相关的patches,并将其与其他区域混合,在空间上进行复制。使用移位运算符Shift(·):

这和SinGAN的功能相同,不过SinGAN涉及采样,而该方法只需要手动选择用于特征插值的patches.

和SinGAN的定性和定量比较:

该方法生成的图像更加多样化和真实;SinGAN则未能以“有意义”的方式改变教堂结构,并产生不够真实的云彩和风景。

用户研究中,83.3%的人更喜欢该方法生成的新图像。

4、改进GAN反演

GAN反演的目的是在W+空间中定位一个样式码(style code),通过该样式码合成与给定目标图像相似的图像。

Wulff等人的模型认为,在简单的非线性变换下,W+空间可以用高斯分布建模。然而,在属性转移设置中,需要反转源图像和参考图像,效果并不令人满意。

最近的研究表明,与W+相比,利用σ进行面部操作的性能更好。

但作者发现,没有任何变换的σ空间也可以建模为高斯分布。

然后在这个空间而不是在GAN反转期间,施加相同的高斯先验。

效果比较:

该方法在图像重建和可编辑性方面获得了显著改进。

5、图像到图像翻译

得益于上部分σ空间的效果,作者建议在图像到图像翻译时freeze产生σ的仿射变换层(affine transformation layer),这一简单的变化能够更好地保留图像翻译的语义(注意下图d中嘴的形状)。

此外,作者发现:

(1)可以在所有空间维度上使用常数α来执行连续翻译;
(2)通过选择要执行特征插值的区域来执行局部图像翻译;
(3)以及使用改进的GAN反演在真实人脸上执行人脸编辑和翻译;

这样获得的效果也更佳。

6、全景生成

作者通过“编织”两幅图像的混合(span)生成全景图,方法如图所示:

重复这个过程可以生成任意长度的全景图像。

而且该方法不仅限于一次混合两个图像、也不限于只在水平方向生成。

一些示例:

7、属性转移

为了使特征插值能够更好地用于任意人物姿势的图像的属性转移,作者选择在源图像和参考图像之间执行姿势对齐,具体就是对齐W+空间样式代码的前2048个维度。

然后就可以应用特征插值将所选特征进行源图到目标图的转移了。

与现有方法比较:

Collins等人的方法没有准确地转移细节属性,Suzuki等人在姿势不匹配时产生的图像不够真实。

而作者的方法既准确又真实。

用户根据真实感和准确性进行选择的结果也进一步验证了该方法的优越性。

ps. 此外还可以在任意区域执行转移,比如无缝融合两边眼睛明显不同的两半脸:

以上就是无需特定架构或训练范式、在StyleGAN模型潜空间中执行一些操作和微调,就能与其他图像处理任务达到同等或更佳性能的具体方法。

你觉得如何?还有什么需要补充的吗?欢迎在评论区留言。

论文地址:
https : //arxiv.org/abs/2111.01619

项目地址:
https://github.com/mchong6/SOAT

终于有人把各路StyleGAN做了个大汇总 | Reddit超热相关推荐

  1. AI时代的GitHub,这个陆奇看好的方向,终于有人做了

    允中 发自 凹非寺  量子位 报道 | 公众号 QbitAI 面向AI时代生存发展,什么最重要? 数据.数据,还是数据. 特别是中小企业.转型中的广大传统企业,数据.优质数据,寻找并管理数据,更是刚需 ...

  2. 这么多年,终于有人讲清楚Transformer了

    作者 | Jay Alammar 译者 | 香槟超新星,责编 | 夕颜 来源 | CSDN(ID:CSDNnews) 注意力机制是一种在现代深度学习模型中无处不在的方法,它有助于提高神经机器翻译应用程 ...

  3. SLAM的前世今生 终于有人说清楚了

    SLAM的前世今生 终于有人说清楚了 | 硬创公开课 from: http://www.leiphone.com/news/201605/5etiwlnkWnx7x0zb.html 2016-05-1 ...

  4. rds基于什么开发_IaaS、PaaS、SaaS、DaaS都是什么?现在怎么样了?终于有人讲明白了...

    导读:本文将详细科普云计算的概念.云服务的发展现状,并逐一介绍各种云服务模式(IaaS.PaaS.SaaS.DaaS),建议收藏! 01 云计算的概念 云是一种服务,可以像使用水.电.煤那样按需使用. ...

  5. 什么是云原生,跟云计算有什么关系?终于有人讲明白了

    导读:云原生到底是什么? 作者:阿里集团 阿里云智能事业群 云原生应用平台 来源:大数据DT(ID:hzdashuju) 云原生(Cloud Native)的概念,最早是由Pivotal于2015年提 ...

  6. Netflix正在搞的混沌工程到底是什么?终于有人讲明白了

    导读:与任何新概念一样,混沌工程时常被误解.本文会探讨混沌工程是什么以及不是什么. 作者:Casey Rosenthal, Nora Jones 来源:大数据DT(ID:hzdashuju) 在Net ...

  7. 终于有人把用户画像的流程、方法讲明白了

    导读:用户标签是个性化推荐.计算广告.金融征信等众多大数据业务应用的基础,它是原始的用户行为数据和大数据应用之间的桥梁,本文会介绍用户标签的构建方法,也就是用户画像技术. 作者:马海平 于俊 吕昕 向 ...

  8. 终于有人把大数据架构讲明白了

    导读:如何存储.如何利用大规模的服务器集群处理计算才是大数据技术的核心. 作者:李智慧 来源:大数据DT(ID:hzdashuju) 大数据技术其实是分布式技术在数据处理领域的创新性应用,其本质和此前 ...

  9. 终于有人把A/B测试讲明白了

    导读:对照实验有时也称为A/B测试.A/B/n 测试(强调多变体测试).实地实验.随机对照实验.分拆测试.分桶测试和平行飞行测试.本文带你了解一些相关术语及应用案例. 作者:罗恩·科哈维(Ron Ko ...

最新文章

  1. linux下设置mysql不区分大小写
  2. 考试题string——线段树。
  3. tensorflow实战讨论
  4. 配置SCCM 2012 SP1(七)操作系统部署
  5. apk 泊车摄像头_【实测】 有了这款360全景泊车神器 新司机秒变老司机
  6. 怎么看铜皮属性_阻抗匹配怎么做 及阻抗匹配的作用。
  7. 外星网络大肆入侵,地球人能安好吗?
  8. Bailian3256 矩阵的乘法【数学计算】
  9. 关于redis启动流程介绍
  10. 概率论学习之瓢虫冬眠
  11. 机器学习时会发生什么
  12. 计算机网络入门知识大全,计算机网络基础知识汇总(超全).doc
  13. VS2015卸载方法
  14. C#解压zip和rar文件
  15. 百度劫持有哪些特征,百度快照劫持处理方法及流程?
  16. IJCAI2021强化学习相关论文集合推荐
  17. WSTMart商城系统数据字典
  18. 在番看付费美女直播,不想花钱,我这样做了!
  19. java开发简单解释器,实现一个简单的解释器(5)
  20. 【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调

热门文章

  1. 如何在Eclipse中自动删除尾随空格?
  2. 如何替换字符串中出现的所有字符?
  3. 如何检查变量的类型是否为字符串?
  4. 手把手教你实现一个 Vue 进度条组件!
  5. springboot2.0系列(二):配置属性
  6. Android P 凹口屏支持,打造全面屏体验
  7. geohash 附近搜索
  8. Android实现一个自己定义相机的界面
  9. 手工测试对比自动化测试
  10. Oracle 中利用一个表结构拷贝成另外的表