老虎斑马“杂交”长啥样?CVPR19论文提出纹理混合器,不同花纹实现丝滑过渡 | 开源
铜灵 发自 凹非寺
量子位 出品 | 公众号 QbitAI
如何一键减少修图时的拼接感?不如看看这篇CVPR 19论文怎么说。
来自马里兰大学、马克斯·普朗克信息学研究所、Adobe的研究人员提出了一种新型纹理混合器Texture Mixer。
他们利用深度学习和GAN实现了用户可控的纹理图像插值,融合两种不同类型的纹理样式,过渡丝滑自然。
就像下面这样:
你以为只融合纹理就完了?它还有更多好玩的应用,比如这个已经实现的纹理画笔功能,轻松合成出你想要花纹的文字:
甚至,还能预览不同物种的动物组合后皮毛图案的渐变。
狗+熊≠狗熊:
原来长颈鹿+豹子的皮毛花色拼凑起来也不违和:
老虎和斑马皮毛和纹理也能自然过渡:
这么有趣的研究,相关资源也是共享状态。
目前,更多展示、代码、训练测试数据集、已训练好的模型和补充材料都已经在项目GitHub上放出了。
在潜在空间动刀
在论文Texture Mixer: A Network for Controllable Synthesis and Interpolation of Texture里,研究人员揭秘了纹理混合的诀窍。
他们通过样本可控性和在任意数量的纹理样本之间进行插值,提出了新型纹理混合器Texture Mixer。
这是一种用重建任务和生成任务训练过的神经网络,可将样本的纹理投射到潜在空间,并被线性插值并投射到图像域中,从而确保直观控制和实际生成结果的质量。
整个合成流程的示意图如下:
上图中,箭头和圆圈表示对张量数据的运算,背景颜色突出显示的是不同阶段的任务,梯形表示可训练的组件,如果名称能匹配得上则这些组件可共享权重。
考虑到潜在张量,Texture Mixer使用了3种直觉潜在空间运算:平铺(tiling)、插值(interpolation)和多级混洗(shuffling)。
三种运算方式各有任务,平铺运算用来将空间上的纹理扩展到任意大小,插值运算将两个及以上潜在域中纹理的结合在一起,多级混洗预算将将相邻潜在张量中的小方块互换减少重复,然后对这些新的潜在张量进行解码得到插值。
结果显示,这种纹理混合方法优于许多基准, 研究人员进一步展示了视觉编辑应用的实际效果,并用纹理溶解(texture dissolve)、纹理画笔(texture brush)、和动物杂交(animal hybridization)任务进行测试。
在动物纹理数据集上进行纹理溶解任务,开始是这样的:
最后的合成结果是这样的:
在纹理画笔任务中,研究人员在1024×1024调色板上分别选取四块原纹理区域,随后用不同纹理进行新的字母绘画创作。
比如生成CVPR四个字母,不用纹理之间的区别还是很明显的:
在动物杂交任务中,研究人员将狗和熊两种动物皮毛的纹理融合,最后就合成了一幅狗+熊≠狗熊的动物。
最后,研究人员利用地球纹理和动物纹理数据集对合成纹理的质量进行定量评估,加粗代表最好的结果,下划线代表第二好的结果,红色代表每个指标中很高的数值。
结果显示,在可控制性、平滑程度、真实性等维度,Texture Mixer的表现都还不错。
最后,研究人员用雷达图将测试结果可视化。
前四种是基线方法,后三种是消融候选方法,结果显示,这种新方法在所有指标上都高于基线性能,并在各个维度取得了比较高的成绩。
作者团队
论文一作于宁是一位华人,本科毕业于华中科技大学,目前是读于美国马里兰大学和德国马克斯普朗计算机研究所(Max Planck Institute for Informatics)的一名博士生。
于同学个人主页显示,主要研究计算机视觉、计算机图形学和深度学习,想建立视觉和图形问题之间的互补性。
除了于同学外,还有来自Adobe的研究员Connelly Barnes、Eli Shechtman、Sohrab Amirghodsi和Michal Lukac。
传送门
论文地址:
https://arxiv.org/abs/1901.03447
GitHub地址:
https://github.com/ningyu1991/TextureMixer
— 完 —
小程序|全类别AI学习教程
AI社群|与优秀的人交流
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !
- Ogre中实现 几何面正反面不同纹理贴图
- Ogre中实现 几何面正反面不同纹理贴图
- 深度人脸识别的 Caffe 实现(附模型开源地址及论文下载)
- ASP.NET MVC 3.0学习系列(19)-开源控件实现表格排序和分页
- Android studio 修改 app的 build.gradle实现同一APP不同版本同时存在(同一APP安装N次)
- DotNET的GNU版开源实现DotGNU
- UE4实现纹理缩放(将纹理坐标进行缩放)
- android九宫格实现和执行不同点击
- 实现Android的不同精度的定位(基于网络和GPS)
- myisam和innodb索引实现的不同
- 用简单工厂模式实现不同机器打印不同图形形状的简单例子
- 关于在页面中针对不同版本的IE浏览器实现不同的JS或者CSS样式
- Tamura纹理特征的matlab实现
- java如何实现系统监控、系统信息收集、sigar开源API的学习
- Java串口编程(开源RxTx实现串口)
- Linux下实现不同网段之间的访问
- 使用PopupWindow和Activity两种不同的方式实现弹窗效果
- Ext.Net.button 和其他控件,实现不同点击事件效果(包括调用自定义控件)
- 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
- 开源的rtsp实现