©作者|朝言

学校|香港科技大学 (HKUST)

研究方向|计算机视觉

我们提出了一个基于神经网络的端对端深度循环优化器,能够实时从视频中计算出视频流中每张图的深度和对应的相机轨迹,效果超越了之前所有的深度 SFM 方法,代码已经开源,欢迎大家试用。

Motivation

解决一个优化问题,常见的优化器比如梯度下降法,牛顿法等, 一般会先计算梯度------>再求出参数下一步更新的方向和步长。

我们提出 zero-order 的循环神经网络优化器(DRO), 不需要求解梯度, 直接利用神经网络来预测下次更新的方向和步长。将优化目标 cost,放入到神经网络中,每次迭代都会参考之前尝试的历史信息,从而给出更加精准的预测。也就是说,如果错误的预测值,就会使得 cost 变大,正确的预测值会使得 cost 变小,在不断尝试中,神经网络学习到了如何使得 cost 变小。

我们将 DRO 应用到了 Structure from Motion(SFM)这个问题中。目前利用深度学习求解 SFM,效果较好的有两种路线,第一种是基于梯度的优化方法,比如 BANet,设计出深度网络版本的 LM 算法,每次迭代中只有步长由深度网络预测。在 SFM 中,需要求解 depth 和 pose,其中 depth 参数量较大,会导致计算出的梯度会带有 noise,影响最终的效果。

我们的 DRO 不用计算梯度,简化问题,同时能提升效果。第二种是基于 cost-volume 的方法,比如 DeepSFM,将 depth 和 pose 的解空间,进行离散化,构建 cost-volume,再利用 3d 卷积做正则化进行预测。相比我们基于优化的方法,它在空间域上进行了大量的采样,占用显存较大,性能较低,我们的方法相当于从时间域上出发,利用时间域里的信息,来进行问题的求解。

实验结果证明我们 DRO,在室外 KITTI 和室内 Scannet 数据集上,都取得了超越以往所有算法的结果,同时计算消耗大大降低, 也使一些无法计算梯度的优化问题的求解成为可能。

论文标题:

DRO: Deep Recurrent Optimizer for Structure-from-Motion

论文链接:

https://arxiv.org/abs/2103.13201

代码链接:

https://github.com/aliyun/dro-sfm

简介

Structure from Motion(SfM)是一个经典的计算机三维视觉问题,有着广泛的应用。它的任务是从一系列不同位置拍摄的图片,估计出每张图片的深度信息和对应的摄像机位姿,恢复出一个场景的三维模型。

近年来,基于深度学习的稠密 SfM 方法兴起,相比于传统的基于优化的 SfM 方法展现了很多优势。早期的基于学习的方法是使用一个神经网络直接回归每张图片的深度和摄像机位姿,简单暴力,取得了一些成果,但是这类方法最明显的问题就是忽略了任务中的有用信息,如多视角几何约束。所以现在越来越多的方法开始尝试将神经网络与传统优化理论结合起来,利用几何约束构建优化目标函数 cost,然后结合优化理论、利用神经网络来优化这个 cost。

我们的方法就是后面一种——利用神经网络求解优化问题。之前的这类方法主要有两个问题,第一个是,很多方法需要显式地计算梯度,然后利用 Levenberg-Marquardt 或者 Gauss-Newton 法来最小化目标函数。这样就需要面对很多任务中梯度计算很困难、甚至根本无法计算梯度的问题,就算可以近似求解出梯度,在高维优化问题中也可能会有很多噪声,近似梯度的下降方向并不一定能将变量优化到全局最小值。

第二个问题是很多方法都需要构建 cost volume,cost volume 可以在所有变量的邻域内评估 cost,能够充分地考虑所有空间维度上的信息,已经被证明是很有效的手段。但是与它的有效性对应的,是它高昂的计算开销和空间占用。

为了解决这两个问题,我们提出了一个新的架构,一个不需要计算梯度也不需要构建 cost volume 的优化器——deep zeroth-order recurrent optimizer。我们认为,之前的方法之所以受困于以上两个问题,是因为它们只在空间域上求解,忽略了很重要的时间域信息。

所以我们尝试在不使用梯度和 cost volume 的情况下,引入循环神经网络 GRU,利用时间维度上的信息、历史优化轨迹来迭代、交替优化深度图和摄像机位姿。实验结果证明,我们的方法是非常有效的,仅仅利用一个 feature-metric cost,我们的空域+时域优化器,在室内室外多个数据集上、在有监督和无监督两种设置下都取得了超越之前算法的结果。

深度循环优化器算法

▲ 深度循环优化器整体框架

整体来看,我们的框架以当前帧图像 和相邻帧图像 做为输入,经过特征提取网络提取到图像特征 ,然后接 depth head 和 pose head 得到初始深度图和摄像机位姿。基于当前估计的深度图和摄像机位姿我们可以计算一个 feature-metric error 作为我们的 cost。之后 GRU 启动,每次基于当前变量值、当前 cost、和图像特征,不断循环迭代优化深度图和摄像机位姿,优化到最优值。

2.1 特征提取和目标函数构建

我们基于 ResNet-18 来提取图像特征   ,然后基于图像特征和当前估计的深度。

 和摄像机位姿  构建一个 feature-metric cost map:

公式中的   是 3D 点到图像平面的投影,所以有了像素点 x 的深度  ,反投影  就将 x 反投成 3D 点,然后坐标转换矩阵  将这个 3D 点从  的相机空间转换到  的相机空间,最后投影  将 3D 点投射到图像  上。这样就找到了图像  和  间像素点的位置对应关系,在对应位置的特征图上作差即得到我们的 cost map。

当有多张相邻帧图片时,我们会计算一个平均 cost 作为 depth 的 cost:

而 post 的 cost 使用的就是 

2.2 迭代优化

与传统优化理论类似,我们也是迭代优化 cost 的,在每一步优化中,优化器都会输出更新增量,基于这增量我们不断更新当前值,这样一点一点地优化估计的深度图和摄像机位姿,直到最优值。

循环优化器我们采用了 GRU 结构,如图所示:

▲ 循环迭代优化器结构

在每一步优化中,我们交替优化 depth 和 pose,这样可以减少两个变量之间的相互影响,降低优化难度,提高优化稳定性。整个优化分为 m 个阶段,在每个优化阶段中我们首先固定住 pose 更新 depth, 迭代更新 n 次,然后固定住 depth 更新 pose,同样迭代更新 n 次,这样 d epth 和 pose 总共都是交替更新了 m*n 次。在所有的实验中,如果不加特殊说明,m 设为 3,n 设为 4。

为了看一下整个优化过程中优化器到底做了什么,我们可视化了随着迭代次数增加,cost 的变化和 depth、pose 的估计结果:

▲ Depth cost和Post cost曲线

▲ 随着迭代次数增加的变化: (1) Cost热力图 (2) 深度图 (3) 利用估计的深度和摄像机位姿将相邻帧投影到当前帧的重叠图

从这几张图像可以看出,随着迭代次数增多,cost 不断下降,depth 和 pose 的估计越来越准。

2.3 训练设置

无论是有监督学习,还是无监督学习,我们的优化器都可以应对。

a. 有监督

对于有监督训练,我们使用 L1 loss 来计算 depth loss:

b. 无监督

对于无监督训练,我们使用相邻帧之间的几何约束来构建监督信号,也是无监督算法中通常采用的 photometric loss,主要是参考 monodepthv2 设计的 loss。

实验

我们在室外数据集 KITTI 和室内数据集 ScanNet 上都进行了实验,在有监督和无监督两种设置下,我们都取得了最好的结果:

针对框架中的每个模块的 ablation study 也证明了每个模块的作用:

▲ Ablation Study实验

可以看出,虽然我们的优化器在训练过程中一直是更新 12 次的,但是在实际使用中可以更新任意多次,通过调节迭代次数,可以取得想要的效率和精度之间的平衡。迭代次数越多,精度越高,但是时间消耗越多;迭代次数越少,速度越快,精度会有一定程度的下降。

为了展示我们的算法相对于之前最好算法 DeepV2D(使用了 cost volume)的效率提升,我们测试了不同迭代次数下的时间开销和显存占用情况:

▲ 效率实验

可以看到还是有明显优势的:

▲ KITTI 数据集结果

▲ ScanNet数据集结果

广告时间

另外阿里云正在火热招聘深度学习算法工程师,2022 届实习,校招,或者有多年工作经验的社招都可以,简历请投递 zuozhuo.dzz@alibaba-inc.com

更多阅读

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

深度循环优化器DRO:从视频流估计深度和相机轨迹相关推荐

  1. DRO:SFM任务中的深度循环优化器(阿里巴巴AI Lab)

    代码.论文地址:在公众号「3D视觉工坊」,后台回复「DRO」,即可直接下载. Motivation: 解决一个优化问题,常见的优化器比如梯度下降法, 牛顿法等, 一般会先计算梯度------>再 ...

  2. 【深度学习】新的深度学习优化器探索(协同优化)

    [深度学习]新的深度学习优化器探索(协同优化) 文章目录 1 RAdam VS Adam 2 自适应优化 3 LookAhead3.1 "侵入式"优化器3.2 LookAhead ...

  3. 基于语言模型的少样本学习 / 深度学习优化器基准测试 | 本周值得读

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考.在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果.如果你也希望让自己的科研成果被更多人看到, ...

  4. 使用什么优化器_新的深度学习优化器Ranger:RAdam + LookAhead强强结合

    [导读]给大家介绍一个新的深度学习优化器,Ranger,同时具备RAdam和LookAhead的优点,一行代码提升你的模型能力. Ranger 优化器结合了两个非常新的发展(RAdam + Looka ...

  5. 深度学习优化器演化史

    <深度学习优化器演化史>   不同深度学习的优化器有时候对于训练模型来说可能会有很大的差异,有时候选对了优化器就能够有事半功倍的效果,那么如果选择各种优化器呢,本文来简单剖析一下深度学习优 ...

  6. 深度学习优化器中的变形金刚:Ranger21

    论文题目:RANGER21: A SYNERGISTIC DEEP LEARNING OPTIMIZER 论文链接:https://arxiv.org/pdf/2106.13731.pdf 1 Ran ...

  7. adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器

    Meet AdaMod: a new deep learning optimizer with memory by Less Wright https://medium.com/@lessw/meet ...

  8. 如何选择深度学习优化器

    作者:不会停的蜗牛 CSDN AI专栏作家 在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器,  https://www.t ...

  9. 深度学习优化器 optimizer 的选择

    在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器,  https://www.tensorflow.org/api_guid ...

最新文章

  1. 一场实验室意外爆炸事故,解决了58年量子难题,让科学家意外发现“核电共振”...
  2. java排序算法总结_排序算法总结及Java实现
  3. 37 个 MySQL 数据库小技巧,不看别后悔!
  4. 九九乘法表-九九乘法表数据输出
  5. JDK8新特性:函数式接口@FunctionalInterface的使用说明
  6. 【2018.4.14】模拟赛之四-ssl2394 剪草【dp】
  7. html:(16):a标签
  8. for in / for of 要会用
  9. Android 弹出有确认按键的对话
  10. 可以自定义公式的计算器_Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果...
  11. 11连胜!绝艺横扫中美日韩对手,称霸围棋AI世界大战
  12. 单台服务器最大支持多少连接数
  13. geany怎么创建文件夹_在visual studio中创建win32应用程序
  14. 使用java自带的方式调用打印机打印图片
  15. 『Python学习笔记』ZipFile解压中文路径乱码[以及rar、7z解压方法]
  16. 小程序登录问题--登录函数getUserInfo()写在app.js中,首次加载无法获取后台处理过的用户的信息,刷新一次后就可以获取的解决
  17. 阿里M8每天肝到凌晨,竟是只为一份文档把分布式到微服务讲清楚
  18. 精品分享:解决ES集群状态为yellow,原因(cannot allocate because allocation is not permitted to any of the nodes)
  19. 错误集(大概会持续更新)
  20. ETC通行费9折活动

热门文章

  1. IDEA安装Go代码插件gofmt、gometalinter、goimports
  2. JavaFX鼠标拖拽移动图片
  3. Java斗地主小游戏代码
  4. 读取excel A列重复的B列值相加
  5. 思科CCNA入门实验操作实战视频课程-李云鹏-专题视频课程
  6. iOS 获取公历、农历日期的年月日
  7. 大神之路-起始篇 | 第15章.计算机科学导论之【数据压缩】学习笔记
  8. 将日期类型数据写入到数据库中
  9. vue 项目的屏幕自适应方案
  10. 腾讯qq2010下载