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

代码、论文地址:在公众号「计算机视觉工坊」,后台回复「DRO」,即可直接下载。

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数据集上,都取得了超越以往所有算法的结果,同时计算消耗大大降低, 也使一些无法计算梯度的优化问题的求解成为可能。

简介

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、和图像特征,不断循环迭代优化深度图和摄像机位姿,优化到最优值

1. 特征提取和目标函数构建

我们基于ResNet-18来提取图像特征,然后基于图像特征和当前估计的深度和摄像机位姿构建一个feature-metric cost map:

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

2. 迭代优化

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

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

循环迭代优化器结构

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

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

Depth cost和Post cost曲线

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

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

3. 训练设置

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

a. 有监督

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

b. 无监督

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

实验

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

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

Ablation Study实验

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

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

效率实验

备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值