1. 摘要
本文中,作者引入了一种简单有效的方式用来从网上的立体图片自动生成密集的相对深度标注,并利用该方式构建了一个含有丰富图片及对应相对深度的数据集。同时,作者还提出了一种改进的 ranking loss 来处理不平衡的相对深度前后顺序关系,使网络能够关注难以判断相对深度关系的点对。实验结果显示,作者提出的方法不仅在自然场景图片相对深度预测上获得了当前最佳的精度,而且该方法也有助于其他基于密集像素点预测的任务,如绝对深度预测以及语义分割。
2. 介绍
单目深度预测一直是计算机视觉中一个重要的问题,其应用也非常广泛,如 2D 到 3D 的转换,3D 建模以及机器人学。随着最近几年深度卷积网络的提出,该领域获得了巨大的发展,但该任务仍然极具挑战性,特别是自然场景图片的深度预测。现有的大部分 state-of-art 方法都是在某一个数据集上训练、测试,而在其他数据集上测试效果就会大幅降低,因此缺乏泛化性。作者的目标是使用单一的模型在不同场景中都能够有效预测相对深度。
作者本文的想法来源于我之前介绍的一篇论文 Single-Image Depth Perception in the Wild。该论文中,Chen 等人提出了 “Depth in the Wild”(DIW)数据集,该数据集包含 495K 张网络图片,每张图片手动标注了一对随机采样点的相对深度关系。本文中作者认为仅仅使用一对采样点并不足够获取好的预测结果,作者也做了相关实验证明这点,如下图所示。
由此引出一个很关键的问题:如何 cheaply 获取图片真实的密集相对深度图?
由于视差图(disparity map)能够反映场景的相对深度,因此作者提出了一种有效方式自动从网络立体图片中提取出视察图。考虑到网上的立体图片并未总是经过很好的校准,而两图之间水平的映射又能够看作视差图,作者选择通过当前最好的光流法而非立体匹配来获取这种映射关系。最终作者提出的 “Relative Depth from Web”(ReDWeb)数据集包含 3600 张不同场景的图片以及对应相对深度图。
作者受 Chen 等人论文的启发,在训练过程仍使用了 ranking loss,但不同的是作者训练中采用在线随机采样点对,而非固定点对。然而随机采样意味着两点前后顺序关系的不平衡,如相等关系的点对远远小于不等关系的点对。为了提升模型能力,作者设计了一种改进的 ranking loss,能够缓解上述问题,后面具体介绍。
本文作者的主要贡献是:
- 提出一种简单有效的方式从网络立体图片中自动获取图片密集相对深度标注,并提出新的数据集 “Relative Depth form Web”(ReDWeb);
- 提出改进 ranking loss,使网络能够关注难以判断相对深度关系的点对;
- 将方法应用于 DIW 和 NYUDv2 数据集并获得了最佳性能,同时将预训练的网络用于其他基于像素点预测的任务,如绝对深度预测和语义分割,能够有效提高性能。
3. 方法
3.1. ReDWeb 数据集
首先展示部分 ReDWeb 数据集中的图片。
数据预处理: 作者首先从 Flickr 网站上爬取了 40K 左右的立体图片,由于这些立体图片很多并未很好地矫正,因此使用立体匹配方法,如 SGM、MC-CNN 等会产生有较大噪声地视差图。尽管使用极线校准能够校准原始立体图片,但产生的视差图质量仍然较差,因此作者利用现有最佳的光流法来产生视差图并获得了较好效果。
数据后处理: 由于立体图片存在多种格式,作者希望的是左右格式,而实际中还存在红蓝格式以及左中右格式,在这些图片上使用光流法会产生杂乱的结果,因此作者手动剔除了这些模糊的视差图,并统一标准:像素点的灰度值越低,离相机越近。然而作者发现在剩下的视差图中特别是无纹理区域,如天空仍存在噪声,于是作者使用 RefineNet 在图片中分割出天空区域,并使用全连接 CRF 优化边界。作者将天空区域标记为无穷远,再重新计算视差图,获得了较好效果。进一步,作者剪切了左图以及视差图的边界,使两者能够完全对齐。
3.2. 学习相对深度
网络结构: 作者设计的网络结构是从 ResNet 改进而成,残差结构增加网络复杂度,而跳结构保留低层次的图像特征,保证最终恢复的相对深度图较高的分辨率。具体网络结构如下所示。
Mini-batch 采样: 作者在训练过程采用在线采样方式(每个 epoch 同一张图采样结果可能不同),对于一张输入图片 作者随机采样 个点对 ,为了获取点对的前后顺序关系 ,作者从真实的视差图中获取两点的深度值 ,定义 如下。
其中 是经验阈值,作者设置为 0.02。最终真实的相对深度可表示为 ,表示第 对的两个点, 代表两点前后顺序关系:更远(+1),更近(-1),相等(0)。
损失函数: 作者采用改进的 ranking loss。
其中 是估计的相对深度图, 和 是第 个点对的权重和损失。 可以设置为 0 或 1, 定义如下。
开始设置为 1,此时损失函数就是 Chen 论文中提出的 ranking loss。为了避免不等深度两点的深度值差距过大,同时缓解不平衡相对深度前后顺序关系,作者在每次迭代开始时将不等深度的点对所对应的损失进行排序,并经验性得将损失处于最后 25% 的 设为 0,从而缓解了不平衡的问题,同时使网络能够关注难以判别相对深度关系的点对(这是因为对于不等深度的点对,它们的深度相差越远,损失函数越小,而在作者的设定下,损失函数越小的点对,越大几率损失函数被设置为 0,即不再更新这些点对,从而使网络更加关注那些深度差距较小的点对以及深度相等的点对)。
4. 实验
实验部分还是就放几张图展示一下效果,具体部分还请查看论文。