参考代码:depth_and_motion_learning

1. 概述

导读:这篇文章是在(Depth from Videos in the Wild)的基础上进行改进得到的,在之前的文章中运动区域/物体通过mask标注或是bounding box标注的形式确定,但是这样或多或少会存在对外依赖的问题。对此,文章从 刚性物体运动 在相机前运动的特性进行分析得出如下两个特性:
1)其在整幅图像中的占比是较少的,毕竟一般情况下不会运动的背景占据了较大的比例;
2)刚性运动的物体其内部运动特性是分段的常量值,也就是对应的梯度变化很小;
正是基于上述两点观察,文章在之前文章的基础上对运动物体区域构建了一个约束,从而减少了运动物体会深度估计带来的影响。

文章的方式是通过隐式约束的形式对刚性物体运动区域进行约束,从而避免了显示地对运动区域标注,因而文章的方法可以在输入2帧图像的情况下实现深度预测和物体运动感知,如下图所示:

2. 方法设计

2.1 网络结构

文章的网络结构如下图所示:

整体上这里网络结构与之前文章(Depth from Videos in the Wild)的网络结构类似,只是在一些细节上有所区别。这里深度估计网络的编解码结构是一致的,主要的不同点在相机位姿和内参估计网络上,在原本两帧图像输入基础上添加了深度估计结果作为输入

2.2 损失函数

深度图平滑损失:
这部分损失是为了给深度估计结果带来平滑作用,减少噪声的产生,其损失函数描述为:
Lreg,dep=αdep∬(∣∂ud(u,v)e−∂uI(u,v)+∂vd(u,v)e−∂vI(u,v)∣dudvL_{reg,dep}=\alpha_{dep}\iint(|\partial_ud(u,v)e^{-\partial_uI(u,v)}+\partial_vd(u,v)e^{-\partial_vI(u,v)}|d_ud_vLreg,dep​=αdep​∬(∣∂u​d(u,v)e−∂u​I(u,v)+∂v​d(u,v)e−∂v​I(u,v)∣du​dv​

循环一致性损失:
首先是变换矩阵的循环一致性约束,其描述为:
Lcyc=αcyc∣∣RRinv−1∣∣2∣∣R−1∣∣2+∣∣Rinv−1∣∣2+βcyc∬∣∣RinvT(u,v)+Tinv(uwarp,vwarp)∣∣2∣∣T(u,v)∣∣2+∣∣Tinv(uwarp,vwarp)∣∣2dudvL_{cyc}=\alpha_{cyc}\frac{||RR_{inv}-\mathbf{1}||^2}{||R-\mathbf{1}||^2+||R_{inv}-\mathbf{1}||^2}+\beta_{cyc}\iint\frac{||R_{inv}T(u,v)+T_{inv}(u_{warp},v_{warp})||^2}{||T(u,v)||^2+||T_{inv}(u_{warp},v_{warp})||^2}d_ud_vLcyc​=αcyc​∣∣R−1∣∣2+∣∣Rinv​−1∣∣2∣∣RRinv​−1∣∣2​+βcyc​∬∣∣T(u,v)∣∣2+∣∣Tinv​(uwarp​,vwarp​)∣∣2∣∣Rinv​T(u,v)+Tinv​(uwarp​,vwarp​)∣∣2​du​dv​
图像域的循环一致性约束,描述为:
Lrgb=αrgb∬∣I(u,v)−Iwarp(u,v)∣1Du,v>Dwarp(u,v)dudv+βrgb1−SSIM(I,Iwarp)2L_{rgb}=\alpha_{rgb}\iint|I(u,v)-I_{warp}(u,v)|\mathbf{1}_{D_{u,v}\gt D_{warp}(u,v)}d_ud_v+\beta_{rgb}\frac{1-\mathcal{SSIM(I,I_{warp})}}{2}Lrgb​=αrgb​∬∣I(u,v)−Iwarp​(u,v)∣1Du,v​>Dwarp​(u,v)​du​dv​+βrgb​21−SSIM(I,Iwarp​)​

物体移动约束损失:
这部分损失主要是完成下面的两个作用:

  • 1)根据上文提到的稀疏特性,对运动场做稀疏化约束,这里使用的L12L{\frac{1}{2}}L21​,文章指出该函数具有更好的稀疏特性;
  • 2)基于刚性物体运动的分析,对刚性物体运动场施加梯度损失,使其在分布呈现分段的常量值特性;

首先对于常量值特性,添加梯度约束:
Lg1[T(u,v)]=∑i∈{x,y,z}∬(∂uTi(u,v))2+(∂vTi(u,v))2dudvL_{g1}[T(u,v)]=\sum_{i\in \{x,y,z\}}\iint \sqrt{(\partial_uT_i(u,v))^2+(\partial_vT_i(u,v))^2}d_ud_vLg1​[T(u,v)]=i∈{x,y,z}∑​∬(∂u​Ti​(u,v))2+(∂v​Ti​(u,v))2​du​dv​

接下来对稀疏化添加约束:
L12[T(u,v)]=2∑i∈{x,y,z}⟨∣Ti∣⟩∬(1+∣Ti(u,v)∣⟨∣Ti∣⟩dudvL_{\frac{1}{2}}[T(u,v)]=2\sum_{i\in \{x,y,z\}}\langle|T_i|\rangle\iint \sqrt{(1+\frac{|T_i(u,v)|}{\langle|T_i|\rangle}}d_ud_vL21​​[T(u,v)]=2i∈{x,y,z}∑​⟨∣Ti​∣⟩∬(1+⟨∣Ti​∣⟩∣Ti​(u,v)∣​​du​dv​

则这部分整体的损失函数描述为:
Lreg,motαmotLg1[Tobj(u,v)]+βmotL12[Tobj(u,v)]L_{reg,mot}\alpha_{mot}L_{g1}[T_{obj}(u,v)]+\beta_{mot}L_{\frac{1}{2}}[T_{obj}(u,v)]Lreg,mot​αmot​Lg1​[Tobj​(u,v)]+βmot​L21​​[Tobj​(u,v)]
则对应的损失函数实现可以参考:

# losses/loss_aggregator.py#L283
normalized_trans = regularizers.normalize_motion_map(residual_translation, translation)
self._losses['motion_smoothing'] += scale_w * regularizers.l1smoothness(  # 对应公式2,分段常量值约束normalized_trans, self._weights.motion_drift == 0)
self._losses['motion_drift'] += scale_w * regularizers.sqrt_sparsity(  # 对应公式3,稀疏性约束normalized_trans)

上面提到的几点约束的消融实验结果:

3. 实验结果

Cityscapes数据集上性能对比:

KITTI数据集上性能对比:

《Unsupervised Monocular Depth Learning in Dynamic Scenes》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. 常见问题_空指针异常
  2. 面对女人的喋喋不休时,男人内心的真实想法
  3. raspberry pi 家族
  4. Leetcode--128. 最长连续序列
  5. emacs shell插件_Windows 下 Emacs 中的 zsh shell 使用方法
  6. RDL(C) Report Design Step by Step 3: Mail Label
  7. Android Studio(五):修改Android Studio项目包名
  8. Atitit pagging翻页与按需加载图像 vue lazyload懒加载目录1.1. 翻最好就是不翻页直接加载一千数据咯 11.2. 使用VueLazyload 11.3. 五.更加方
  9. 第八章第二层交换和生成树协议(STP)
  10. blender 上一步 下一步_下一步是模拟宇宙
  11. Office 2007 SP3 正试版补丁包下载
  12. python写整数逆位运算_整数逆位运算
  13. flink 出现反压场景, 异常场景造成Exceeded checkpoint tolerable failure threshold.
  14. 【主板上各种接口和附属部件科普】
  15. 精通RPM之--制作篇(上)
  16. 阿里G2插件——柱状统计图,长变量值显示设置
  17. 【C语言】利用for循环来创建一个金字塔
  18. 学python推荐的10本豆瓣高分书单,小白到大佬,不看后悔一辈子
  19. CodeForces - 332B  Maximum Absurdity   前缀和
  20. jeecgboot初学习疑问与总结--2021-05-11

热门文章

  1. vscode中的maven_在VSCode中使用Maven进行JUnit测试
  2. Technorati 推出博客广告媒体
  3. 阿里巴巴服务器泡进“水里”液冷服务器技术
  4. cass等距离等分线段的命令键_cass线段怎么等分命令是什么
  5. WiFi模块种类二:单WiFi功能双频WiFi模块
  6. bitcscs计算机系统,深入理解计算机系统CSAPP-美-布莱恩特
  7. Android钢琴滑动代码,如何使用Kotlin构建Android旋转旋钮以帮助儿子练习钢琴
  8. [转]ubuntu常用软件
  9. 查询昌吉州二中2021年高考成绩,2017新疆、昌吉州文理状元分数出炉!昌吉州这所中学喜摘文理状元桂冠!...
  10. 【光通信】单模与多模区别