图形学里面是有核心底层问题没有解的,今天这里说说整个高真实感渲染领域悬而未决并且制约图形学发展的根本问题。
/* IDEA研究院(深圳)正在招C++做区块链/图形学/网络协议的小伙伴,和前微软全球执行副总裁沈向洋博士一起工作,实习,全职,远程都行,简历直接私信我哦 */
在高真实感渲染领域,包括实时渲染(游戏),离线渲染(电影)以及下属的一堆子领域和课题,至今没有一个合理并且实用的渲染质量评价标准。我们没有一个合理实用的metric去评判渲染质量的好坏(人类视觉意义上的),当渲染出来的结果背离真实照片或者暴力物理模拟的结果时,缺乏有效的手段,认可哪些背离对人类视觉系统来说是不敏感的,哪些是不可容忍的。
我们需要定义一个更好的距离函数(或者叫相似性函数,或者叫误差度量函数,一回事儿),可以用来计算两张图片的距离,要求这个距离体现人类视觉心理层面的相似性。
这个事情直接关系到能否大规模地利用现在海量数据和算力推动学科发展。说出来很羞耻,在图形学领域,一个渲染算法如果有几个参数要调优,我们怎么办?就是手调,眼睛看呀!不像人家隔壁CV那样拉个数据集,可以全自动地狂跑数据,自动狂调。这就是为什么现代的机器学习方法没怎么在渲染领域用起来,因为没法用呀,loss function定义不出来 !
同时这个事情对减少学术界和工业界的隔阂至关重要,使得很多工业界的hack,有理论的依据。以后大家可以更愉快地hack各种绘制算法,并且有科学依据。也对一票的图像合成方向上的CV算法带来更具实际意义的指导。
这个距离函数现在不是没有,比如L2 distance,correlation等为基础的,有一堆常用的。这些本质都是线性度量,认为图像空间是线性的。这些度量在比对两张非常接近的图像是,是很有效的,因为非线性流型空间的无限小的局部子空间是线性的嘛。但是当两张图差距比较大的时候,这个线性近似就完全不靠谱了。很多时候,人类视觉看起来很严重的问题(比如不该有的边界,突变),用线性度量来算,发现误差很小,而有些人类视觉看起来差别不大的变化(如大面积的低频变化),在线性度量下误差非常大。
然后,就没有然后了 …… 我们现在没有更好的度量方案,任何问题都用线性近似硬刚了。这样的标准在有些领域是有效的,比如图像压缩,因为很多时候他们比对的图像本来就是极其相近的。但是在渲染领域,像素级一模一样代价极大,并且也是完全没有必要的,但是这是唯一的well-formulated的方法,只能用这个。然后分歧就来了,很多渲染学术工作不得不屈从这个标准去做,不计代价,而工业界很多有效的方法,在这个标准下其结果就很差,但其实人看起来挺好的。这个分歧是导致渲染领域学术界和工业界比较隔阂的重要因素。
这个问题有解吗?我觉得是有的,但是非常挑战。我们先可以看看隔壁听觉是怎么弄的。对于耳朵的听觉机理的研究,我们知道了人类听觉有截止频率,有相位不敏感性,这些都被用到声音压缩技术里面,并且有个很高端的名字,叫听觉心理学模型。视觉系统的前端早期感知研究也挺多的,比较成熟的比如色彩感知,所以我们知道没必要去刻画光谱,记录RGB三个响应曲线的积分值就好了,视觉也有截止频率即显示分辨率,但是和听觉不同,人的脑袋可以动,图像可以zoom,然后这些特性就没啥用。相位的局部变化(部分平移)对视觉来说是敏感的,而且当有参照物的时候很敏感。然后,更后期的感知,无论视觉和听觉的机理,都还没有什么成熟的东西可以用。
另一边,基于深度学习的CV算法浩如烟海,那边应该是可以得到很多启示的,但是罕有针对人类视觉本身的特性作为研究对象的。更多是假设了人类视觉的一些特性,然后去简化他们要解决的CV问题,也不知道这些假设是否靠谱。
深度学习的一些方法论是值得参考的,当我们无法直接研究一个对象的时候,我们就把他当成黑盒,大量收集这个对象的行为样本,然后用大规模的人工神经网络去近似它。这种反向工程的思路,可以帮助我们在搞清楚人脑是如何处理视觉信息之前,尝试建模人类的视觉感知行为。
要是有兴趣看的同学多,我再展开多讲讲。这个方向上一定是能出高质量的论文,SIGGRAPH及以上,前人也多多少少也有些探索和铺陈了。论文题目我都拟好了,Perceptual Image Similarity 。标题越短,事儿越大~ 大家有兴趣一起讨论讨论。