MonoIndoor - 针对室内场景优化的无监督深度估计方法

Paper name

MonoIndoor: Towards Good Practice of Self-Supervised
Monocular Depth Estimation for Indoor Environments

Paper Reading Note

URL: https://openaccess.thecvf.com/content/ICCV2021/papers/Ji_MonoIndoor_Towards_Good_Practice_of_Self-Supervised_Monocular_Depth_Estimation_for_ICCV_2021_paper.pdf

TL;DR

  • ICCV 2021 文章,针对室内场景深度值域范围变化更为明显与 camara pose 变化更为明显的问题提出了解决方案,大幅提升了室内场景的深度预测效果

Introduction

  • 背景:当前的深度估计自监督训练方法主要聚焦于室外场景,monodepth2 在 KITTI 上的 AbsRel 指标为 0.106,比有监督方法 DORN 的 0.072 也差不了太多;但是当前的自监督方法在室内场景效果一般不佳,比如在 NYUv2 数据集上的 AbsRel 指标为 0.189

  • 难点:室内场景的深度估计网络自监督训练相比与室外场景有两个难点

    • 室内场景的深度值域范围变化更为明显(室外因为有天空的存在,最大深度一般都是无穷远)
    • 室内场景采集的数据的 camara pose 变化一般更为明显,室外数据大多是自动驾驶场景数据主要是 translation 主导的 pose 变化(一般没有太大的旋转分量)
  • 本文针对上面两个问题提出的解决思路:

    • depth factorization module:将预测的 depth map 分解为预测一个 global depth scale 和一个 relative depth map,其中 depth scale 通过网络的额外分支预测得到。这样深度预测网络在训练过程中的适应 depth scale 变化的可塑性更好
    • residual pose estimation module:在初始的大姿态预测之外,额外进行 residual pose estimation,用于环境旋转 pose 预测不准问题
  • 在 EuRoC, NYUv2, 和 7-Scenes 上取得了自监督的 SOTA 结果


Dataset/Algorithm/Model/Experiment Detail

MonoIndoor - 针对室内场景优化的无监督深度估计方法_第1张图片

实现方式

  • 自监督训练方式与 monodepth2 一致,参考 Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video 增加了尺度一致性损失
    在这里插入图片描述

Depth Factorization

  • monodepth2 中网络预测输出的是经过 sigmoid 的 σ \sigma σ,这个值经过线性缩放后取倒数得到预测深度
    在这里插入图片描述
    通常来说 a、b 分别代表已知场景中的最小和最大深度,比如对于 KITTI 数据中 a 是 0.1,b 是 100(需要注意的是这个转换规则的表述和 monodepth2 的代码并不一样,monodepth2 中的 a、b 是逆深度最小值和逆深度范围计算)。作者认为 KITTI 这种室外场景的数据集基于固定的 a、b 是没有问题的,因为不同视频序列中的深度范围一致(因为有天空这个无穷远存在),在室内场景深度分布差异较大, 比如 bathroom (e.g. 0.1m∼3m), lobby (e.g. 0.1m∼10m),使用固定的 a、b 会使得深度分布 scale 差异过大
def disp_to_depth(disp, min_depth, max_depth):
    """Convert network's sigmoid output into depth prediction
    The formula for this conversion is given in the 'additional considerations'
    section of the paper.
    """
    min_disp = 1 / max_depth
    max_disp = 1 / min_depth
    scaled_disp = min_disp + (max_disp - min_disp) * disp
    depth = 1 / scaled_disp
    return scaled_disp, depth
  • 为了解决室内场景的深度分布差异明显问题,提出了一种解耦的深度表达方式:一个 relative depth map 和一个全局 scale factor

    • monodepth2 预测 relative depth map
    • self-attention-guided scale regression network:参考 Non-local neural networks 中的 self-attention block 来关注到与获取场景深度 scale factor 相关的区域,比如场景深度最大的区域
      MonoIndoor - 针对室内场景优化的无监督深度估计方法_第2张图片
      在这里插入图片描述
      在这里插入图片描述
      获取到 S F S_{F} SF 后,经过两个 residual conv block 和三个全连接层得到全局的 scale factor
  • Probabilistic Scale Regression Head

    • 按照上述的流程,直接将一个高维 feature map 映射到一个值上导致训练不稳定,所以参考立体匹配工作(Pyramid stereo matching network)中的 probabilistic scale regression head,将直接回归转换为分类任务进行训练
      在这里插入图片描述

Residual Pose Estimation

MonoIndoor - 针对室内场景优化的无监督深度估计方法_第3张图片

  • 迭代多次求取 camera pose,首先网络输入为 target image( I t I_{t} It ) 和 source image( I t ′ I_{t^{'}} It ),预测的 camara pose 将 I t ′ I_{t^{'}} It 映射为 I t 0 ′ → t I_{t_{0}^{'}\to{t}} It0t
    在这里插入图片描述
    然后网络输入为 target image( I t I_{t} It ) 和 I t 0 ′ → t I_{t_{0}^{'}\to{t}} It0t,预测得到合成的图片
    在这里插入图片描述
    反复多次迭代的表达形式为
    在这里插入图片描述
    最终通过累乘多次预测的 residual poses 得到最终的预测 pose
    在这里插入图片描述

实验结果

  • EuRoC 数据集实验结果,使用 MH 01, MH 02, MH 04 ,V1 01 and V1 02作为训练集,输入为 rectified 后的数据,输入尺寸为 512x256。使用 V2 01 作为测试集。
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第4张图片
    其中 ScaleCNN 是 resnet18 + Conv-BN-ReLU;ScaleNet 是 resnet18 + residual blocks;ScaleRegressor 是 a lightweight network with two residual blocks which shares the feature maps from the depth encoder as input,也就是说预测 global scale 的网络直接和 depthnet 公用 backbone 就行
  • 与 monodepth2 对比实验结果
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第5张图片
  • 可视化对比
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第6张图片
  • nyuv2 上的对比实验结果,在 302 个 sequences 上训练,33 个 sequences 上测试
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第7张图片
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第8张图片
  • nyuv2 数据集上的可视化对比
    MonoIndoor - 针对室内场景优化的无监督深度估计方法_第9张图片

Thoughts

  • 提出了针对室内场景深度估计进行无监督训练的优化方法,额外增加一个 depth 全局 scale 预测模块和 redidual pose 都是小幅增加训练耗时,对测试没有影响

你可能感兴趣的:(paper_reading,人工智能,深度学习)