基本情况

  • 论文:Unsupervised Learning of Depth and Ego-Motion from Video
  • 出处:Zhou T, Brown M, Snavely N, et al. Unsupervised learning of depth and ego-motion from video[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1851-1858.
  • 地址:https://openaccess.thecvf.com/content_cvpr_2017/html/Zhou_Unsupervised_Learning_of_CVPR_2017_paper.html
  • 代码:https://github.com/tinghuiz/SfMLearner

内容

这是一篇从一段视频中恢复场景深度和相机pose的论文。

他可能是第一篇用深度学习的方法从一段视频中恢复camera的pose的方法,它用两个网络(严格意义上是3个网络,下文赘述)分别/独自无监督地估计单帧的深度,和视频序列中的camera的pose变化。最终得到的深度达到state of art,pose的精度也与ORB-SLAM2的localization模式(即没有丢失后的重定位以及以关键帧的全局BA为核心力量的回环检测)效果相当。 

Q1:pose估计是怎么找到的? 
A1:在已知当前帧depth,以及当前帧poses转换到将一个图像序列(视频)中其他帧的情况下,我们知道,可以将当前帧的每一个像素映射到其他帧上,然后最小化当前帧和其他帧映射位对应位置的光度误差来求出这些pose. 
 
Q2:那么先验深度预测怎么求出? 
A2:本文的框架为联合训练depth和pose,因此我猜测是在分别给定depth和pose一个初始值下,然后联合训练整个网络得到最终的depth和pose。虽然是联合训练,但最终得到的是两个模型:一个depth模型,一个pose模型。

1.简介

所谓无监督,是指它利用的是一帧时间相邻的图像帧进行视图合成(View synthesis )——对于某一目标帧It,用视频所有其他剩余帧,将这些帧中像素位置映射到目标帧It中。

无监督地估计深度的网络采用和DispNet相似的架构,输入是某一单帧It,输出其对应的深度图(实际上这个过程需要用到pose网络得到的pose)。作者尝试用多张图像来联合恢复深度(方法和《DeMoN: Depth and Motion Network for Learning Monocular Stereo》相同),但发现对精度没有提升。

估计pose的网络的输入是一张目标图像,以及其(时间上)附近的图像序列Is(s=t-1,t+1,t-2,t+2,…),输出目标图像到附近的这些图像的位姿(欧拉角和位移(pose共6个自由度))。

利用以上得到的深度和位姿,将图像It上的图像块warp到Is,并通过卷积网络来最小化It与Is的总的光度误差,得到最终的pose。

2.价值函数

视频序列中的某单帧估计深度,用类似于于SLAM直接法的方式来获得帧A与帧B之间的像素灰度值差异: 

并对映射后的点进行双线性插值来获取灰度值。

由于光度一致性的假设是:图像中没有物体移动;图像图像没有遮挡;反射是漫反射(diffuse)。如果假设不成立,图像梯度会出现跳跃。这可能导致训练失败。 
为了避免这种情况,文章额外用了一个“解释性网络”来估计每个target和source图片对的mask,用这个mask(相当于target图像与每一个source图像组成的图像对都有一个mask)来降低弱纹理的图像部分的权重。其网络结构形似pose网络(如图1),与pose共享前4层网络,随后分开分别求解释性pose和mask(可认为得到的mask大小为层数x(N-1),即与其他所有帧,每两帧共享一层,Es就是每层中的数值。) 
于是上述的灰度差值的损失函数为: 

为了避免Es最终被优化为0,给Es添加了形如softmax的交叉熵的正则项LregLreg

综合视图监督

深度和姿态预测CNNs的核心的监督信息来源自novel view synthesis:给定场景的一个视图,合成一个相机在另一个不同姿态下的新图像。我们通过合成目标视图的深度图、这个时刻的pose和附近视角下的图像。而这个合成的步骤能通过CNNs的全可微操作实现。
令$$作为待训练图像序列的输入,其中  是目标视图,其他的图像序列为源视图  。那么视图生成目标函数能通过下式表示:

为了输出(不论是深度还是视差)在图像分布中平滑,特别为了解决低纹理或估计值离真值太远时会造成梯度为0或梯度错误的情况,大家一般会有两种思路:将周围的梯度传递给当前像素;和其他无监督方法一样用一个表征平滑度的正则化。本文受SfmNet启发,采用后一种方案。作者是用深度图的二阶梯度的L1的正则项来提取平滑信息。

所以最终的代价函数:

3.网络实现

depth估计如图:每层跟batch normalization和relu。 
训练时用了Adam。 
最终网络结构如图: 

4.试验结果

最后结果如图: 

如图,可见该网络不如Godard的左右一致性检查一文的结果。作者认为原因可能是由于Godard所谓的左右一致性本质上是已知两帧之间的pose,而当前的深度预测是基于预测的不精确的pose。

不过要想到,本文的深度其实是一个中间值(intermediate value),它的主要公用是用于pose估计。 
此外,作者提到他们的解释网络没有很好地表现,可能是因为测试集中图像大多是静态的图,中没有太多遮挡的情况(遮挡的情况大多3帧内就会消失),但发现他们的解释网络具有良好的预测图像动态部分能力。 
作者最后认为当前还可以从以下几个方面进步:

  • 没有考虑实际环境中可能出现的物体移动和遮挡。当然作者提到可以借鉴 motion segmentation的工作成果,这也是上次组会导师提到的参考方向。
  • 目前还需要内参已知,如果利用往上随处可获得的video来估计(内参不知)?
  • 用更加好的深度预测(我认为这也是pose估计一个很核心的任务。有了更好的三维点,就有更小的重投影误差),比如利用体素

参考:

  • 论文笔记-深度估计(6)-Unsupervised Learning of Depth and Ego-Motion from Video
  • SfMLearner学习笔记

论文笔记_S2D.49_2017-CVPR_从视频中无监督学习深度和运动估计(SFMLearner)相关推荐

  1. 论文笔记:使用区块链和智能合约打击深度假冒视频

    摘要 随着人工智能(AI)和深度学习技术的兴起,近年来虚假数字内容激增.假镜头.假图像.假音频和假视频(被称为深度假冒,Deepfake)可能是一种危险的现象,有可能改变真相,并通过伪造事实来侵蚀信任 ...

  2. 【论文-笔记】海防雷达仿真系统中PPI的设计与实现

    摘要 重点介绍: 仿真系统中的PPI. 提出了矩阵融合法,实现雷达余晖效果,通过衰减矩阵来控制位图中任一维颜色向量,相对于逐点消隐法的速度提升较大. 针对干扰模型进行研究,构造出适用于雷达的干扰模型. ...

  3. MPASNET:用于视频场景中无监督深度人群分割的运动先验感知SIAMESE网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  4. 【论文笔记:场景】边缘计算中分布式协作的动态卸载模型:森林火灾管理的一个用例

    [摘要]:随着物联网(IoT)的发展,数据量不断增长并变得更加多样化.将数据传输到云端时存在几个问题,例如网络带宽和延迟的限制.这引起了人们对边缘计算研究的极大兴趣,边缘计算处理和分析数据导致的网络终 ...

  5. 论文笔记——HDD算法:异构网络中信息扩散的深度学习方法

    HDD算法 发表在knowledge-Based Systems上的一篇文章.有许多现实世界的复杂系统与多类型相互作用的实体,可以被视为异构网络,包括人类连接和生物进化.这类网络的主要问题之一是预测信 ...

  6. 论文笔记_S2D.77_2013_TOR_使用RGBD相机的3D建图(RGBD SLAM V2)

    目录 基本情况 摘要 介绍 系统流程 特征提取 运动估计 EMM:Environment Measurement Model 回环检测 图优化 建图OctoMap 参考 基本情况 出处:Endres ...

  7. 【论文笔记】CIRNet:基于CycleGAN的无监督循环配准模型

    本文是论文<UNSUPERVISED THREE-DIMENSIONAL IMAGE REGISTRATION USING A CYCLE CONVOLUTIONAL NEURAL NETWOR ...

  8. 论文笔记:WORD TRANSLATION WITHOUT PARALLEL DATA

    引用文章 Facebook MUSE 无监督跨语言迁移学习任务 face - Word Translation without Parallel Data 文献阅读笔记:Word Translatio ...

  9. 【论文笔记】Sparse filtering

    论文来源:NIPS2011 相比于其它的无监督学习算法,Sparse filtering并不是去学习数据的分布,它是去分析特征的分布,良好的特征分布满足一定的特性,有了这个思想,只需要优化简单的目标函 ...

  10. 深度 | 一篇文章带你进入无监督学习:从基本概念到四种实现模型(附论文)

    作者:Eugenio Culurciello 机器之心编译 参与:李亚洲.武竞 微信公众号:(almosthuman2014)授权转载,禁止二次转载,点此为原文链接 这是今年 6 月份普渡大学副教授 ...

最新文章

  1. 皮尔逊相关系数 定义+python代码实现 (与王印讨论公式)
  2. 清华大学「天机」芯片登上Nature封面:类脑加传统计算融合实现通用人工智能...
  3. 使用Raphael实现html中绘图
  4. Dubbo使用启动时检查 check=“true“
  5. Java Swing专栏订阅须知《必读》
  6. r语言将百分数化为小数_「淮南师出」教师资格/招聘小学数学:《百分数与小数的互化》...
  7. 【操作系统】进程与线程
  8. 【java学习之路】(mysql篇)003.mysql中limit、表的创建、删除、约束
  9. 补码,反码,原码的范围总结
  10. 怎么让背景铺满整个页面_PPT背景太单调,教你这3种实用的技巧!
  11. oracle数据库答辩,数据库课程设计答辩.ppt
  12. 数字化转型:中国企业数字化转型趋势
  13. 无线网为何显示无法上网络连接服务器,wlan显示已连接不可上网怎么办_wlan显示已连接但无法访问互联网怎么解决...
  14. SDRAM内存驱动 的学习
  15. 《Spring Boot极简教程》附录2 编程的本质
  16. Apollo6.0 + lgSVL 联合仿真平台搭建
  17. mysql phpwind_php+mysql及phpwind和wordpress的安装配置
  18. Kria K26 SOM 在 KV260 开发板上的使用
  19. 推荐系统实践——什么是推荐系统
  20. ES7和ES8常见新特性

热门文章

  1. [2019杭电多校第一场][hdu6579]Operation(线性基)
  2. 2 分支语句——《Swift3.0 从入门到出家》
  3. [Javascript]把html内容复制到剪贴板
  4. css3的clip-path方法剪裁实现(三角形,多边形,圆,椭圆)
  5. vue控制台报错Duplicate keys detected: 'xxxxx'. This may cause an update error.解决方案
  6. VS2013使用NuGet下载资源时提示“Newtonsoft.Json”已拥有为“Microsoft.CSharp”定义的依赖项的错误
  7. IO多路复用之select、poll、epoll介绍
  8. linux面试题线程与进程,​一道面试题:说说进程和线程的区别
  9. procedure mysql_所有子节点、Procedure、MySQL
  10. data spring 指定时区_听说过spring-data-jdbc么?来个最佳实践