"); //-->
因为项目原因需要用到无监督单目深度估计网络,目前SC-Depth系列是非常经典的框架,因此写下这篇文章记录自己的学习经历。深度估计其实是一个非常早的问题,早期方法主要是Structure from Motion (SfM)和Multi View Stereo (MVS)这两种。SfM算法输入是一系列无序照片,两两照片通过特征点建立匹配关系,利用三角化方法获得稀疏点云,之后使用BA进行联合优化,输出是整个模型是三维点云和相机位姿。但此类方法获得的是稀疏点云,就是说深度图也是稀疏的。MVS与SfM原理类似,但它是对每个像素都去提取特征并进行匹配,最终可以获得稠密的深度图。相较双目/多目深度估计而言,单目深度估计更具挑战性,这是因为单目视觉天生就存在致命缺陷:尺度模糊。近年来深度学习技术的发展,引发了一系列单目深度估计网络的问世。近期SC-DepthV3发表在了新一期的TPAMI上,对单目深度估计问题又提出了一个新的解决思路。本文将分别介绍牛津大学提出的SC-Depth系列的三个网络,探讨它们都解决了什么问题,以及实现了什么效果。
1. 为什么是无监督?先说答案:因为有监督太贵了!目前单目深度估计网络在KITTI、NYU等数据集上的性能其实已经非常好了,各项定量指标也好,定性估计深度图也好,看起来已经非常完美。但任何网络、任何模型归根结底都是要落地的,只在数据集上跑一跑没办法创造实际的产能。可是深度学习本身就是依赖数据集的,如果想把一个训练好的模型拓展到实际场景中,往往需要在实际场景进行finetune。如果是有监督网络的话,实际场景的微调就需要激光雷达、高精相机等昂贵传感器提供的ground truth。这在很大程度上就限制了有监督单目深度估计网络的实际落地。我们更想实现的目标是拿着一个相机(甚至手机)拍一组视频,就可获得每帧的深度!那么怎么办呢?无监督单目深度估计网络就可以很好得解决这一问题!无监督单目深度估计网络不需要提供深度真值就可以进行训练,可以在任何场景通过一组单目视频进行finetune,这就意味着网络具备极强的泛化能力!最早的无监督单目深度估计网络来源于2016年ECCV论文“Unsupervised CNN for single view depth estimation: Geometry to the rescue.”。网络输入是双目相机中的左右目图像,但是只估计左目图像的深度。由于左右目位姿是已知的,那么我们就可以通过左目深度图和左右目位姿去重建左图,之后去计算重建左图和真实左图之间的差异,回传损失进行训练。除这个损失外,这个网络还提出了深度值的平滑损失。这个网络名义上确实是单目深度估计网络,因为只估计了左图的深度。但我们更希望的是网络输入是真正的单目图像。最早的真正只使用单目图像的无监督单目深度估计网络是2017年CVPR论文“Unsupervised Learning of Depth and Ego-Motion from Video”。这个网络与上一篇论文的原理类似,它的输入是单目视频序列中的前后两帧。首先给第一帧图像估计深度图,同时估计两帧图像中的位姿,之后利用深度图和位姿重建第一帧图像,同样去计算与真实图像之间的差异。之后的SOTA方法就是大家所熟知的Monodepth2,来源于2019年ICCV论文“Digging Into Self-Supervised Monocular Depth Estimation”。其原理还是利用SfM同时估计深度网络和位姿网络。网络输入为单目视频的连续多帧图片,根据深度网络和位姿网络构建重投影图像,计算重投影误差并引入至损失函数。虽然近些年也出现了非常多的单目深度估计网络,但大多都是基于Monodepth2和SC-Depth框架进行的。因此,本文对其他网络结构不再赘述。
2. SC-DepthV1做了什么?至此,开始引入本文真正的主角:SC-Depth系列。之前的单目深度估计网络的重投影损失,更多的是利用前后帧的颜色误差进行约束,得到了比较精确的结果。但它们基本上都有一个共性问题:深度值不连续!连续几张图像之间的深度值不连续!也就是说,在不同的帧上产生尺度不一致的预测,因为它们承受了每帧图像的尺度不确定性。这种问题这不会影响基于单个图像的任务,但对于基于视频的应用至关重要,例如不能用于VSLAM系统中的初始化。因此,SC-DepthV1为解决此问题提出了尺度一致性约束。具体来说,就是给前后两帧图像都预测深度,利用两张图像的深度和位姿投影到3D空间中,进而去计算尺度一致性损失。这种方法确保了相邻帧之间尺度的一致性,如果每连续两帧图像的尺度都是一致的,那么整个视频序列的深度序列也就是连续的。此外,SC-DepthV1还使用了一种Mask,对应视频上出现不连续的区域。作者认为这就是动态物体,通过去除这种Mask可以使得网络具备一定的动态环境鲁棒性。定量结果显示,SC-DepthV1取得了与Monodepth2相持平的结果。但SC-DepthV1估计出的深度图具有连续性,因此还是SC-DepthV1更胜一筹。值得一提的是,SC-DepthV1在论文里除了介绍自己的定量结果外,还将单目深度估计结果引入到了ORB-SLAM2中,构建了一个伪RGB-D SLAM系统。在一些序列中,Monodepth2+ORB-SLAM2的系统由于深度不连续问题,很快跟丢。而SC-DepthV1+ORB-SLAM2的组合可以获得较好的跟踪结果。一句话总结:SC-DepthV1解决了深度连续性问题。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。