论文《Learning to Recover 3D Scene Shape from a Single Image》解读
这篇文章是沈春华老师组的CVPR2021论文,最近提名了Best Paper。我没做过场景重建,但是看到这篇文章依然非常有兴趣。下面是我的个人解读,有错误的地方希望各位大佬指出。
动机: 虽然目前单张图像深度重建任务有了长足的进步,但是即使是SOTA的方法依然无法用这些深度图重建出准确的三维形状。原因在于深度图漂移现象(Depth shift。induced by shift-invariant reconstruction losses used in mixed-data depth prediction training)和相机焦距的未知。
对上述论述进行解释,如上图所示,x,y,z表示顶点三维坐标,u0,v0表示相机光轴重心位置,f表示焦距,d表示深度图。深度图d的偏移,会导致x,y,z的非均匀变化从而导致形状畸变;而f会导致x,y产生均匀变化,而z不变,这样也会导致形状的畸变。所以作者用两阶段的网络去解决这个问题,首先用一个网络预测深度图,然后用第二个网络去预测深度图的偏移量和相对初始焦距的缩放因子,而初始焦距在测试的时候使用的是固定值。
背景:目前基于单张图像的深度图重建,在训练过程中因为使用了来自于不同数据集的数据,所以其相机内参各不相同,这给深度图重建的先验带来了挑战。而在测试过程中,相机的焦距通常不可获得,这会导致重建的三维的畸变更加明显。
方法:整体框架如下图所示
(1)PCM 模块
①训练:训练的时候,深度图和焦距都是GT的,并且对它们进行一个扰动。对深度图进行[-0.25, 0.8]的偏移扰动,对焦距进行[0.6, 1.25]范围内的缩放扰动。然后把生成的点云送入网络中,分别预测出它们的深度偏移量Δd和αf,这两个量要与它们的预先扰动量Δ*d和α*f尽可能接近。
②测试:测试的时候,从DPM模块中得到的深度图和一个猜测的固定值f送入网络中,得到它们的偏移量和焦距所放量,得到最后的深度图和焦距,进而重建整个的三维形状。
(2)DPM模块
①Image-level normalized regression loss:由于深度图训练数据来源于不同的数据集,其深度图标签的范围不一致,如果仅仅采用min max normalization:(X-Min)/(Max-Min)有一些缺陷。它对离线点比较敏感,比如一个深度图当中的最大值仅仅包含一个像素点,那么其它所有的深度值都会受它的影响。所以作者提出了下面的损失函数:
②Pair-wise normal loss: 法向量是Geometry的很重要的特征,它是深度图一种很重要的互补模态信息,对于提升深度图的质量很有帮助。而仅仅对所有点的法向量进行全局约束不能提升局部结构重建的能力。所以作者对局部法向量进行约束,方法是在对预测和标签点云的Edge(法向量变化剧烈的区域)的两侧点云进行采样,如果平坦区域存在,则也对其进行采样:
③:深度图多尺度梯度约束:
实验:1.焦距的准确性对深度图预测有帮助吗?
由于深度预测网络DPM和PCM是分开训练的,所以是不会有帮助的,而作者在论文中也没有体现。深度图预测的结果如下图:
2.PWN的消融实验?
训练全部数据比较耗时,所以作者只在小部分数据集上进行了测试
可以看到还是有提升的,不过不是很明显,和深度图重建任务本身有关?
3.Image-level normalized regression loss?
4.3D shape 重建?
提升非常明显了。
可视化效果可以看出来,f的提升对于整体视觉的提升非常明显,效果非常惊艳。
题外话:作者通过预测内参f,在深度图没有大幅度提升的情况下,对三维场景重建的性能有非常巨大的提升。文章的写作也非常值得学习,虽然管线结构是先深度图再PCM,但是方法和实验部分都是先突出f带来的三维形状重建的部分。