Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

从洪荒到智能——数据驱动的材质属性建模发展历程

如果我告诉你,计算机图形学早在10年前就开始用机器学习了,你可能会不信。毕竟机器学习这个概念是在2012年左右才火起来的,并藉由深度学习的东风一吹,现在颇有燎原之势;计算机图形学本来就跟机器学习八竿子打不着,怎么可能在10年前就做机器学习?


"我读paper少,你不要骗我!"


当然,这也难怪,毕竟在人工智能飞速发展的今天,三个月前的paper可能已经是旧的技术,两三年前的架构都需要“学术考古”才能溯本清源了,自然不会有人去想10年前,甚至是15年前的图形学论文。其实,在图形学中,机器学习的方法早有应用,只是那个时候还不叫机器学习,而是更加淳朴地叫“数据驱动”的方法而已。

 

今天,我们就沿着数据驱动这条主线,从“学术考古”开始,挖一挖早年间的图形学中的机器学习技术。并以微软亚洲研究院网络图形组在数据驱动图形学方向上的几份工作作为例子,讲一讲数据驱动图形学的发展历史。限于篇幅和笔者能力所限,本文仅仅围绕材质属性建模这一图形学中的子问题进行讨论,其实在图形学很多其他方向,也有大量的数据驱动的做法。


既然提到所谓的材质属性建模,我们就先来讲讲什么是材质属性建模。在图形学的专业领域,材质属性又称为“表观(Appearance)”,本意指的是表象上的、外观上的属性,故称之为表观。从科学的角度定义,图形学中的表观(Appearance)是描述光线如何在物体表面和内部进行交互的一种性质,例如,在不透明表面,光线如何进行反射,反射后的能量如何衰减;以及在半透明表面,光的能量如何在物体内部进行传播,这些都是表观要描述的。我们可以看到,这些性质,其实都是和物体的材质属性有关的,比如金属和石膏的表面反射自然就会不同,因此便于大家更好理解,本文就以材质属性来代替所谓 “表观”这一概念。


洪荒时代,机器学习,数据当先——早期表观数据采集方法


我们知道,机器学习的方法往往需要有大量的数据作为“知识”,因此为了做好机器学习我们首先需要准备好大量的材质属性数据。早期的数据采集方法多是基于burte-force sampling。之前,我们对“burte-force”还真是没有什么太优美的翻译,不过现在我们有了一个特别合适的说法——“洪荒之力”。那么就让我们回到那个洪荒年代,看看早期的数据采集是怎么做的。


早在2003年,数据驱动图形学的先驱者之一Wojciech Matusik等人 [Matuski et al. 2003]在2003年就做出了惊人之举,利用“洪荒之力(brute-force sampling)”的方法一举获得了100个不同材质的表面反射属性。为了能够完整地获取光线在某一特定材质属性表面的反射性质,我们需要测量在不同入射光和出射光方向的组合情况下光线衰减的比率。如果我们把入射和出射方向的角度离散化到1°的话,即使考虑了光线可逆等性质,削减冗余的数据,对于一个材质而言,也要有90x90x360这样上百万个数据点。为了采样这些数据,Matusik等人设计了一个具有两个悬臂的巨大机械设备,自动拍摄一个球形物体在不同光照和视角下的照片,从而获得所需要的数据。这种做法,不仅需要巨大的设备,同时还要手工打造100个均质材料的球体。想想当年Matusik等人还真是下了苦功夫才做出了这100个材质数据。直至今日,大家说起做表面反射属性,总还是会提到这100个材质数据,也就是大名鼎鼎的MIT-MERL BRDF。


图1 大名鼎鼎的MERL MIT BRDF数据集,及其采集设备

 

这种洪荒式的数据采集,可以说是数据驱动建模方法的一个开端。这就好比是现在人工智能中的数据标定,没有ImageNet和MS CoCo这样的大规模数据集,再好的机器学习算法也是白搭。因此,为了能登上数据驱动图形学这条船,洪荒之力的船票还是需要的。微软亚洲研究院的网络图形组也是认定了这一方向,专门配置了数据采集实验室,配置了昂贵的数据材质设备。磨刀不误砍柴功,基于这些采集到的海量数据,网络图形组也做出了很多知名的早期工作,如Modeling and Rendering of Quasi-Homogeneous Materials、SubEdit: a representation for editing measured heterogeneous subsurface scattering等一系列优秀的SIGGRAPH论文。


图2 微软亚洲研究院网络图形组的表观数据采集设备

 

当年我也有幸亲眼见证了一次利用“洪荒之力”采集半透明材质属性(BSSRDF)的过程,那时对于每一个材料样本,都要拍摄数万张的照片。每次数据采集,相机都会在程序自动控制的情况下进行长达数十个小时的连续拍摄。依稀记得当年为了拍摄所有的BSSRDF数据,组里的单反相机在一个月内换了两次快门。连相机的维修人员都惊诧于我们是怎么能在这么短时间内(保修期之内)用坏相机快门的。现在回想起来,这类方法真的算是用上“洪荒之力”了。当然,值得庆贺的是,藉由分析这些“洪荒”来的大量数据,得出了很多重要结论,并发表在2009年的SIGGRAPH会议上 [Song et al. 2009]。另外,这一数据也多次被其他科研项目所应用,那几个可怜的单反相机做出的牺牲也算是值得了。


模型决定效率——基于数据相关性的建模方法


看过前面这种洪荒式的数据采集方法,我想大部分人也能明白,这种做法是不适用于一般应用的。为了科研拼命采集几十个数据尚且可以接受,但是要让一般用户接受,还是需要极大地简化采集数据的规模。因此,如何分析和利用数据本身所具有的特性,对数据进行建模,进而减少所需要采集数据的规模,就成为数据驱动建模研究的精要之处。用最简单的说法就是“模型决定效率”,有什么样的模型,就决定了所需要采集数据的规模。这里,我们以微软亚洲研究院做得最多的物体表面反射纹理这一工作为例,分析在几篇论文中是如何利用不同的模型来实现高效的数据采集的。


这里值得注意的是,我们需要采集的是一个具有空间分布的材质属性,对于空间中的每一个点,它的材质属性都是不一样的。因此,在下文中,我们用材质属性(BRDF)来特指在空间中每一个点的材质性质,表现为一种角度分布(不同的入射光、出射光方向的反射率),而用纹理来特指这些材质属性在空间上的分布(Spatial-distributions,,不同区域的不同材质)。


图3 物体表面材质是由非常有限的材质构成的


我们知道,对一般的物体表面而言,虽然其表面材质具有非常复杂的空间纹理变化,但是仔细观察会发现,其实每一个物体表面上所具有的材质数目是非常有限的。比如上图中这个丝绸的材质,从大类上看,仅有金色和红色两种丝绸材质而已,即使算上细节的变化,整个表面的材质也不会超过几十种。这个数量比起用“洪荒法”独立处理每一个表面位置的材质而言,数目少了多个数量级。因此,如何利用这一性质,并进行建模就成了提高采集效率的关键。这里的一个核心问题就是,如何找到空间中不同位置上具有相同(或相似)材质的点。而且,更重要的是,我们需要利用具有相同材质的不同的点所具有的不同性质(如不同的相对相机、光源位置等)来为我们提供更多的信息。因此,我们就需要寻找表象上并不相近(相机观察到的数值),而本质上确是同一个材质(材质属性)的一组点;由于他们的表象并不相近,想要找出内涵上的相似性并非易事。

 

最直接的方法就是,先部分套用“洪荒法”,在一个固定的视角上采集足够多数据,然后利用这些数据,在每个像素点上都重构一些“部分材质属性 partial-BRDF”,利用这些部分属性作为媒介,在整个材质表面寻找具有相似材质的点 [Wang et al. 2008]。进而综合这些点所具有的信息,统一计算出它们对应的完整的材质属性。这样虽然能够利用数据的相关性减少采集所需要的图像数量,但是最初部分洪荒采集还是需要花费不少功夫,一个高质量的数据依然需要数个小时的数据采集过程。

 

前面的方法是先尝试找到不同的“部分数据”而后拼接起来,而另一种直观的思路则是先用一些技巧直接获得对于某一材质所特定的那几种单点材质属性(BRDF),而后仅仅需要决定这些材料的纹理(空间分布 Spatial-distributions)就好了 [Dong et al. 2010]。如果有完整的材质属性作为媒介,我们就利用这个已知的材质属性(BRDF),计算出这个材质在不同空间位置应有的反射响应,进而推算出哪些空间中的像素是具有同样材质属性的。因此,我们设计了一个两步走的数据采集方法—— 设计并制造了一种专门采集某一单点上材质属性的设备。利用专门设计的光学系统,这一设备可以非常快速地采集单点材质属性;而后,利用采集到的这些单点材质作为媒介,我们仅需要拍摄少数几张照片即可重建整个材质样本的完整材质属性(SVBRDF)。

 

我们还进一步发现,对于一个特定材质而言,其表面的材质属性其实可以表示为一些少数具有代表性的材质属性(representative BRDF)所构成的一个低维流型(Manifold),这个流型模型比传统的全局线性模型具有更少的自由度,可以利用更少的参数刻画一个样本具有空间分布的反射属性(SVBRDF)。因此,这一模型也进一步减少了所需采集图像的数目。利用数据采集的两步法,加上这个流型模型,我们将采集一个材质样本材质属性的时间减少到了几十分钟。

 

虽然这一方法能极大地减少采集数据的成本,但是需要一个专门设计的光学设备还是极大地制约了这一方法的适用范围。为解决这一问题,我们进一步设计了同时求解代表性材质属性(representative BRDF)以及纹理空间分布(spatial distribution)的方法,一举解决了难以确定哪些空间上的点具有相似材质属性的问题。将“两步走”改进为“一步走”,在减少了采集设备复杂度的同时,依然保持了仅需少量图像的优势。

 

在最初的尝试中,我们采用了相对易于优化的全局线性模型,并利用传统低秩矩阵优化(Low-rank optimization)的方法进行求解 [Chen et al. 2014]。为了进一步减少采集图像的数目,我们提出了尽可能精简化(Sparse-as-possible)模型,也就是尽可能用精简的方式去解释所观察到的内容,尽量用简单的少数几个代表性材质线性表示观察到的数据,精简模型的复杂度。相比全局线性模型而言,这一精简化模型可以进一步压缩所需要采集图像的数目,对于一个一般的物体,仅需要花几分钟采集几张到几十张照片即可实现高质量的材质重建 [Zhou et al. 2016]。


图4 利用Sparse-as-possible模型采集的材质进行渲染的结果


让计算机变成艺术家


前面介绍了多种数据驱动的纹理材质采集方法,但走的都是传统数据驱动的路子——通过分析和利用数据上的一些特殊结构,对数据进行建模,进而减少数据采集的数目。然而,在计算机图形学中,其实还有另外一种纹理材质建模方法,就是用艺术家的手去绘制出所有的纹理材质属性。现在电影特效和游戏行业中的大部分纹理材质,其实依然是艺术家手工加工绘制出来的。艺术家根据自己的丰富经验,可以从一张简单的照片出发,对照片进行种种处理,最终绘制出纹理材质对应的不同属性,并可以用于图像渲染。随着人工智能、深度学习等技术的飞速发展,现在能不能通过“训练”计算机,让计算机也变成像艺术家一样,可以根据输入的照片就“绘制”出所对应的材质属性呢?答案当然是可以的。但是,这个目标依然面临着很多的技术挑战。

 

我们知道,机器学习需要大量的训练数据,只有计算机“学习”了这些训练数据,并掌握了其中的规律,才能做到举一反三,完成给定的智能任务。但是,对于纹理材质属性这一问题而言,我们能够获得的训练数据少之又少。为了能让计算机学会从普通的照片就能绘制出对应的纹理材质,需要大量的与已知纹理材质对应的照片。这个数据集还需要足够大,换句话说,我们需要这个训练数据能够涵盖绝大多数的纹理材质变化。而现有的纹理材质数据库还远远达不到所需要的规模。

 

虽然现有的纹理材质数据库非常有限,但是纹理照片却非常多。这些照片虽然没有对应的纹理材质信息,但却也反应了纹理本身的部分信息,尤其是纹理的空间分布基本都被照片所涵盖。为了利用这些海量的未标定的照片来进行机器学习,我们设计了自增强训练的方法(Self-augmented training)。与传统的机器学习方法一样,我们依然需要训练一个卷积神经网络(CNN),这个CNN的输入是普通的纹理照片,输出则是对应的纹理材质属性。自增强训练采用了一种特殊的CNN训练方式,区别于传统利用标注的输入输出对作为训练数据的训练方法,自增强训练利用当前尚未训练好的CNN来对未标定的数据进行测试。当然,由于现在CNN还没有训练好,测试结果肯定不能作为正确的标定用来训练。但是,我们对材质属性估计这个问题的逆问题,也就是纹理材质属性的渲染,具有完整的知识。因此,可以用这个中间测试结果得到的材质属性,配合现有的材质渲染程序,生成一个当前中间结果的材质属性和其对应的渲染结果(照片)的数据对,这一数据对是完好保持纹理照片和纹理属性这一对应关系的“正确标定数据对”,因此我们就可以放心地利用这一自增强出来的数据来进行训练了。


图5 自增强训练的基本流程


虽然这个中间测试结果可能距离真实的材质属性尚有距离,但是这个自增强学习过程是随着CNN的训练更新的。因此,当CNN被训练得更好的时候,我们就可以得到更高质量的自增强数据,可以进一步去改进CNN,进行进一步训练。

 

利用这一自增强训练的方法,我们可以用非常少的标定数据,配合海量的未标定数据来进行训练。仅需要几十个标定过的纹理数据,配合数千张未标定的照片,即可训练出一个能够有效估计具有空间分布的材质纹理(SVBRDF)的CNN。针对某一种特定材料(如金属、木头或塑料),我们的CNN可以根据一张普通的纹理照片估计出漫反射贴图(diffuse map)、法向贴图(normal map)、均质的光滑度(roughness)和高光反射强度(specular coefficient)。


另外,我们还在单一材质属性(BRDF)估计这一相对简单的问题上,做出了更详细地分析,讨论了自增强训练的优势,以及如何最有效地进行自增强训练等。[Li et al. 2017]


总结


通过回顾传统数据驱动的图形学发展过程,以及对最新的利用深度学习方法进行机器学习的介绍,相信大家能够对数据驱动的图形学有了进一步认识,如果你希望能更深入地了解其中所介绍的具体方法,就去仔细研读一下相关的论文吧,相信你一定会有更多收获的。也欢迎大家在文章下方留言与我们交流讨论。


​原文链接:http://mp.weixin.qq.com/s/qwQC04BHm5BtI29kCflAHA


微软研究院AI头条
微软研究院AI头条

专注科研19年,盛产黑科技

入门理论图形学建模数据驱动机器学习微软亚洲研究院
暂无评论
暂无评论~