点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

文章导读

导读:随着计算机视觉技术的不断发展,特别是自动驾驶等一些前沿的研究中,图像的深度信息至关重要。而单目测距得益于低成本的特性,受到了研究者们的青睐。小编最近也在学习单目测距的知识,与大家分享一篇BTS的单目测距方法,让我们一起来学习一下。

Part 01

单目和双目测距原理的区别

单目和双目是二种不同形式的摄像头,他们都能够通过采集到的图像,经过计算,从而获得距离信息,但二者的测距原理截然不同。单目测距一般称为深度估计,精度相对较低。单目测距是通过图像匹配来实现目标识别,然后通过目标在图像中的大小来估计目标距离。而双目测距是通过二幅图像之间的视差图来实现距离的计算,该方法无需识别目标的类型,且精度相比单目测距要更准确。

Part 02

单双目测距的优缺点

单目测距的优势是成本较低,系统结构简单,且对计算量的需求不高。但其缺点在于需要更新和维护一个庞大的样本数据库,才能保证较高的识别率,整体的测距准确度较低。

双目测距的优势在于精度较高,其直接利用视差图的原理直接进行测距,无需维护样本数据库,且整理的测距精度较高。其缺点在于双目测距的成本要比单目高,同时双目系统对计算性能的要求非常高,通常需要配备专用的图像处理芯片。

Part 03

单目测距的难点

单目测距是一个不适定的问题,因为有无限多个3D场景可以投影到同一2D场景。为了从单幅图像中理解几何配置,人们不仅需要考虑局部线索,还需要考虑全局上下文。

注:适定问题(well-posed problem)和不适定问题(ill-posed problem)都是数学领域的术语。前者需满足三个条件,若有一个不满足则称为"ill-posed problem":

(1) a solution exists:解必须存在

(2) the solution is unique :解必须唯一

(3) the solution's behavior changes continuously with the initial conditions:解能根据初始条件连续变化,不会发生跳变,即解必须稳定

Part 04

 BTS方法的提出

卷积神经网络通常有2个部分组成,即用于密集特征提取的编码器和用于预测期望深度的解码器。在编解码器的方案中,重复的跨步卷积和空间池化层降低了过度输出的空间分辨率,并采用跳跃连接或多层反卷积网络技术将分辨率恢复到原始分辨率,从而实现有效的密集预测, 目前大部分网络恢复特征图到原始分辨率的方法都较为直接,会损失信息,这也是BTS论文中改进的核心内容。

BTS网络结构如下图所示:

2da111eb5168905d76ee4a22c5889e6d.png

BTS网络结构图

网络的结构包含:encoder结构、跳跃连接、多孔空间金字塔池化(ASPP)和LPG层。

BTS的创新点:提出了一种局部平面指导层的网络结构(local planar guidance layers),将解码阶段的不同尺度的特征与最终的深度预测关联起来。通常的编解码器都是在解码最终的输出中施加训练损失的约束以输出深度图,小编觉得,本文提出的LPG层网络结构有应该起到了在网络中施加约束的作用。

网络的性能表现:截至目前,BTS的方法在KITTI单目深度估计的榜单中排行第7,推理速度为60ms,实现了在精度和速度上的平衡。

Part 05

LPG层的具体实现

LPG网络层提出的核心思想: 区别于传统的方法简单的使用最近邻上采样和跳跃连接来恢复图像到原始的尺寸,BTS的方法以一种有效的方式(LPG layers)定义内部特征和最终输出之间直接和明确的关系,将特征引导到全局分辨率,并将他们结合起来得到最终的深度估计。

具体的做法: 给定一个空间分辨率为H/K的特征映射,所提出的LPG层对每个空间单元估计一个4D平面系数,平面的大小与特征分辨率对应。该系数适合全分辨率 H 上局部定义的 k × k patch,并且它们通过最后的卷积层连接在一起以进行最终预测。例如,输入特征分辨率是1/4时,每个位置输出的4D向量会拟合一个4*4的平面。简单来说,4D平面系数会拟合一个比输入特征分辨率更大的平面,这样,尽管输入的特征图分辨率不同,但最终都会输出大小相同的一张平面图。LPG层的示意图如下:

c680bb3290c440a2bce139e495a3fe81.png

(1)   使用1×1的卷积进行通道数的降低,每进行一次1×1的卷积通道数减少2倍,直至channel=3,因为彩色图像的通道数为3,至此得到一个H/K×H/K×3的特征映射。

(2)   Channel1和channel2的代表了平面法向量的2个自由度,分别是polar(θ)和azimuthal angles(φ),接下来将特征图的前二个通道视为角度,并使用如下的公式将他们转换为单位法向量。

8036d0ae0e986311a39763dd9d9e6998.png

Channel3代表 plane和origin的垂直距离(perpendicular distance)。

(3)   经过变换,每一个像素都会对应一组4D向量(n1,n2,n3,n4)。

(4)   为了使用局部平面假设来指导特征,使用射线平面相交的方法来将每个估计的4D平面系数转换为K×K局部深度线索。转换公式如下图所示,其中(ui, vi) 是像素 i 的 k × k 逐块归一化坐标,c是最终的拟合结果。

38bb72101685c47753c2a94c45314bb3.png

Part 06

实验

评价指标:

fda091899c4fae2cde9d216e759b86d0.png

实验结果:作者在2大公开的数据集:KITTI和NYU Depth V2上进行了实验,以下是具体的实验结果。

56d41873fc7b4a56be538608ffafbb68.png

9ddd1727e7b1b4363f1233f2e3984dd9.png

982e54a46e8cc2e9bbcc8df0e994ede6.png

8283e8a64c728f0960027e2ed99d5b93.png

8de4d6e4d7892111c27c8ef2096996f1.png

Part 07

总结

文中作者研究了enconde-decoder结构,分析了现有方法decoder部分进行暴力上采样的缺点。提出了LPG网络层的结构,通过将decoder阶段不同尺度的特征与最终的输出深度预测关联起来,实现了对特征的更充分和有效的利用,从而提升的网络的整体效果,小编觉得该模块可以迁移到其他的任务中进行使用,对网络的性能提升应该也有帮助。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐