编者按:纹理材质建模是计算机图形学中的一个重要研究课题。关于纹理材质建模的技术发展历程,以及前期的一些科研工作,可以参考之前文章《从洪荒到智能——数据驱动的材质属性建模发展历程》,今天我们将介绍微软亚洲研究院在纹理材质建模领域的最新论文,该论文在 ACM SIGGRAPH 2019 大会上进行了报告。研究背景
传统纹理材质建模主要对目标材质样本进行大量图像采集,并进行数据驱动的重建,在不同光照、视角下对目标材质样本进行拍摄,将拍摄结果拟合成既定的纹理材质模型。需要采集的照片数量往往与纹理材质模型的本征自由度有关,重建算法需要采集足够的照片,使得模型的拟合过程保持一个超定(Overdetermined)系统,这样能够保证拟合结果不出现由于二义性导致的错误结果。而当采集图像数量不足,系统出现二义性的时候,就会出现拟合失败的情况。图1给出了一个渲染结果示例,三栏分别对应三种不同的光照条件,这些光照的情况没有包含在采集数据中。上排是真实材质的渲染结果,下排是在欠定(Underdetermined)情况下拟合材质的渲染结果。可以看到在欠定情况下,拟合算法对求解结果的“合理性”没有估计,因此拟合的结果虽然符合输入图片,但在采集数据没有包含新的光照的情况下,可能会出现错误的渲染结果。另一方面,随着深度学习技术的发展,学界也提出了一系列通过神经网络从单张输入图片来预测纹理材质的方法。深度学习可以充分利用训练数据中真实世界的材质属性的分布信息,即使存在二义性,也可以根据先验知识给出“合理”预测。这里的“合理”表示预测的纹理材质看起来和实际测量目标的纹理材质非常相似,并且不存在明显的瑕疵(artifacts),但是,这种预测的结果不一定能精确反应实际测量目标的材质属性,尤其是在二义性较强,或者单一输入图片不能反映材质的全部材质属性时,这一误差将会很大,并在一些特殊的光照条件下得以体现。图2列举了一个“合理”的材质属性预测结果的渲染图像,三栏分别对应三种不同的光照条件,上排是真实材质的渲染结果,下排是深度学习方法给出的“合理”建模材质的渲染结果。可以看到,两组结果在视觉观感上大体相似,预测结果并没有出现明显不合理的瑕疵,但是两者之间依然存在一定的差异。然而,当前基于深度学习的方法,尚不能利用更多图像信息来进一步改进这一“合理”的预测结果。我们的目标就是要设计一种纹理建模的方法,将基于深度学习的方法和传统重建方法的优势相结合,并且给定任意数量的输入,均可进行纹理材质建模。当输入图片数量较少,并不能完全确定目标样本的完整材质属性时,算法会给出一个“合理”的建模结果,而且能够随着输入图片的增多越来越精确,最终收敛到一个准确的材质重建结果上。
针对这一目标,我们提出了一种基于深度学习的优化重建算法,其核心思想在于,利用深度学习建立一个纹理材质的本征空间,在这个本征空间上进行优化重建。传统的优化重建之所以会在系统欠定时产生非常不合理的结果,重要原因正是因为其解空间中包含了大量不符合真实世界纹理材质分布的情况。而通过深度学习,建立一个真实世界纹理材质的本征空间,可以极大地避免产生不合理的结果。同时,由于整体算法依然符合优化重建的框架,因此可以自然地支持不同数量的输入,解决传统深度学习方法仅能获得“合理”预测的问题。
然而,在这个核心思想下,依然存在两个技术难点:一是如何建立一个适合优化重建算法的本征空间;二是如何为优化重建算法提供初始化。针对技术难点,我们提出了一种改进的 Autoencoder 训练方法来训练纹理材质的本征空间。我们设计的 Autoencoder 网络仅在本征编码(Latent code)之前采用了一个特殊的归一化 Normalization 层,并对本征编码空间提出空间连续性限制。这一空间连续性项使得在本征空间中相邻的点与外观上相似的纹理材质相对应,保证了本征空间的连续性,有利于优化重建算法在本征空间中进行连续的搜索。而对于初始化,我们利用了现有的基于深度学习的单张图片纹理材质预测的方法,将预测到的纹理材质通过 Autoencoder 中的编码器得到对应的本征编码,以这个本征编码作为初始值来进行优化。
对于 Autoencoder 训练,以及优化重建算法中的大量实现细节和设计分析,我们在论文中都给出了详细的讨论和实验证明,感兴趣的读者可以深入阅读,就不在这里赘述。
这种方法是否真正达到了我们的目标呢?图3给出了一个重建结果的实例。
从图中我们可以看出,对于单一输入图片,我们的算法能够给出一个相对合理的估计,各个贴图的预测结果均与参考值较为接近;同时,渲染结果和参考值非常相似,达到了“合理”的估计目标。随着输入图像数目的增多,算法会给出更加精确的重建结果,尤其是法向贴图和粗糙度贴图,可以看到较为明显的质量提升;我们也可以看到渲染结果质量的提升,渲染的图像逐渐接近参考值。值得注意的是图4中四个黄色金属扣的重建结果,随着输入的增多,渲染结果在这些细节区域得到了明显的改善。我们还利用该方法对一些真实世界的材质表面进行了采集,图4和图5分别展示了贺卡和木头材质的渲染结果,每一组图片中,上图是真实拍摄的照片,下图是算法重建后的渲染结果。算法不仅非常准确地重建了真实材质的大量细节,所需的输入图片数量还远远小于传统的材质采集方法,其中贺卡仅用了20张图片,木材仅用了10张图片。值得注意的是,我们设计的真实世界材质的本征空间是一个与分辨率无关的表达,这意味着我们的算法可以支持任意高的输入输出分辨率。这一特点也是传统的基于深度学习神经网络难以实现的,正是因为能够支持任意分辨率,我们的算法才能应用到真实拍摄的图像,并且做到不损失任何输入图片中的细节。综上,我们在本论文中提出了一种基于深度学习的纹理材质优化重建方法,支持任意分辨率、任意数量的输入图片,而且随着输入图像数目的增加,其重建结果可以从“合理”到越来越精确。这一方法可以广泛适用于不同的用户需求,并极大地简化了纹理材质的采集过程。同时,本文提出的训练本征空间并在本征空间中进行优化重建的方法,也可以对其他优化重建问题中引入深度学习带来一定的启发。Deep Inverse Rendering for High-resolution SVBRDF Estimation from an Arbitrary Number of Images
论文链接:https://aka.ms/AA5z4zm