【论文学习笔记-7】Bi3D:Stereo Depth Estimation via Binary Classification(CVPR2020)

【论文学习笔记-7】Bi3D:Stereo Depth Estimation via Binary Classification(CVPR2020)

本文提出了Bi3D,通过一系列二元分类来进行深度估计。与已经存在的方法不同,本方法不是直接检测物体是否存在于一个特定的深度D,而是将物体分类为比D近/比D远。这种方法坚固了准确率和延迟,能够在很快速度(as little as a few milliseconds)的条件下检测比一个给定的距离更近的物体,或通过任意粗量化方法(arbitrarily coarse quantization)进行深度估计,同时只消耗与量化等级线性的复杂度。同时Bi3D也能通过给定的量化等级获得连续的深度。在普通的深度任务上,Bi3D能够达到与SOTA相近或同等的水平。

传统的方法不能只关注一个特定的深度范围,必须要将全图中所有的像素的深度都计算出来。这是因为已有的已有的方法的核心大多是检测一些候选时差值,在一些成本函数下选择最可能的点。这导致:

①这些方法需要把场景中所有物体都进行一个范围的搜索。

②视察的分划不能较粗,不然效果很差。

本文提出了一种平衡深度量化程度和计算预算的方法。不进行对真实深度的回归,而是在给予一个参考平面π后,对每个点进行二分类:在π平面的前面或是后面,π平面可以看作立体相机前的一个“地理围栏”(geo-fence),可用于检测物体是不是在一个安全距离之内。在通过多个这样的平面的分类之后,就可以通过估计像素的深度。通过调整这些平面就可以对深度估计的范围进行控制。

通过右图的图像缩放获得平面D,平面D前和后pixel的movement方向相反(在D和相机中间的方向不变,更远的方向相反)

Bi3D

①可以在段时间内判别一个物体比一个给定的距离更近还是更远,称为二元深度估计。

②如果时间的预算更多,Bi3D可以通过更细致的量化分类来提高精度,同时计算时间线性提升。这成为“量化的深度"(比如一个平面可以将像素分成两类,两个平面分成三类,n个分成n+1类等)

③或者,Bi3D也可以在两平面[π1,π2]间预测连续的深度。同时判断在这个范围之外的物体究竟是离π1更近还是π2更远,称为"选择性的深度估计"。

④最后Bi3D可以像普通方法那样预测部的深度同时达到与SOTA相匹配的效果。

Method

考虑一个立体图片对R和S,可以在每个视差d上建立一个Plane sweep volume(PSV),计算公式为:

在这里插入图片描述
其中W是在单应性矩阵H上的单应性变换, π d i \pi d_i πdi代表深度为di的平面。

在基于了一个计算匹配成本C的算法后,已有的计算视差的函数为:

在这里插入图片描述

其中N代表像素(x,y)的一个领域,C可以通过多种方式计算,但是对于任何视差计算方式都有:

在这里插入图片描述

显然视差值在 [ d 0 , d N ] [d_0, d_N] [d0,dN]范围之外的像素仍然会被映射到这个范围内,这是这种视差计算法的一个主要局限,本文展示了解决的方案。

Depth via binary classification

与直接预测视差值不同的,本文观察到视差向量的方向承载着有价值的信息。在通过单应性变化后,视差向量的方向会因与 π d i \pi d_i πdi平面的关系而影响其是否发生变化,如图:

在这里插入图片描述

R中下方的视差向量在图像经过单应性变化后发生了改变。

因此本文在此启发下训练一个二元分类器,输入R和PSV图,预测像素在平面的前/后。训练过程为标准二分类,使用交叉熵,分类的输出通过sigmoid映射到[0,1]:

在这里插入图片描述

其中o是网络的输出,C代表分类的置信度,当C接近0或1时,代表物体在平面前/后的置信度很高,本文设定C的阈值为0.5,二元分类的效果如图:

在这里插入图片描述

本文将其程为“二元深度”,虽然只依靠一个视差进行分类,但是仍然可以提供有价值的信息:一个物体离相机的距离大于/小于一个特定的距离。

之后,可以设定一系列深度平面重复这样的二元分类,然后将结果拼接成一个volume,称为Confidence volume

计算准确视差的公式:

在这里插入图片描述

这个公式的好处:

  1. 对一些错误的置信度值拥有容忍度,一个错误的分类只会让输出值偏移很小(不超过1)

  2. 输出的视差不一定要是参与分类的视差值,而且可以输出连续的值。

粗量化深度预测

实际应用中,二元分类可能不够用,而全深度预测可能没必要,比如自动驾驶时我可能更希望知道一个物体是否离我足够近,而不是计算他的具体视差(这样往往需要计算所有的视差candidates,有延迟),已有的方法通过softargmax等函数计算亚像素视差。本文通过一个累计分布函数可以判断物体的粗略位置:

在这里插入图片描述

故:

在这里插入图片描述

这个公式可以让本算法进行粗量化级别的视差预测。
现有算法处理视差范围之外的物体会强制映射到视差范围内,一些方法如GA-Net则在计算视差范围外的物体表现挣扎,而本文提出的方法则可以无缝检测这些物体。

和GA-Net对比的效果图:

在这里插入图片描述

自适应的算法

本算法可以根据应用进行自适应,比如在自动导航可以在近处使用更细致精确的深度划分,而远处实行粗分类,效果如图:
在这里插入图片描述

网络结构

在这里插入图片描述

首先经过一个特征网络(简化版的PSMNet),输出32通道,1/3分辨率,然后将左图特征和变化后的右图特征放入SegNet,这是一个标准的2Dencoder-decoder 网络,包含了skip-connection。其中通过stride=2下采样了5次然后再接上采样的deconv,最后再接双线性插值上采样回复原有的分辨率,然后经过一个三层的轻量级卷积模块(SegRefine),这里同时接受左图作为guidance。

要预测特定量化的深度,或是连续的深度,只需要反复运行Bi3D,对于量化深度,叠加每个平面的Cost,然后最大公式:

在这里插入图片描述

实验

训练:交叉熵,SmoothL1loss。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cd C:\Program Files\FlightGear fgfs --fg-root=C:\Program Files\FlightGear\data --aircraft=ufo --in-air --fdm=null --telnet=5501 --telnet=5502 --telnet=5503 --disable-ai-traffic --disable-real-weather-fetch --disable-random-objects --disable-terrasync --disable-clouds --disable-sound --disable-panel --disable-hud --disable-specular-highlight --timeofday=noon --prop:/sim/rendering/multi-sample-buffers=1 --prop:/sim/rendering/multi-samples=2 --prop:/sim/rendering/draw-mask-clouds=false --prop:/sim/rendering/draw-mask-terrain=true --prop:/sim/rendering/draw-mask-objects=true --prop:/sim/rendering/draw-mask-lights=true --prop:/sim/rendering/draw-mask-internal=true --prop:/sim/rendering/draw-mask-cockpit=true --prop:/sim/rendering/draw-mask-effects=true --prop:/sim/rendering/draw-mask-overlay=true --prop:/sim/rendering/draw-mask-world=true --prop:/sim/rendering/draw-mask-panel=true --prop:/sim/rendering/draw-mask-vr=true --prop:/sim/rendering/draw-mask-2d=true --prop:/sim/rendering/draw-mask-3d=true --prop:/sim/rendering/draw-mask-sky=true --prop:/sim/rendering/draw-mask-shadows=true --prop:/sim/rendering/draw-mask-cabin=true --prop:/sim/rendering/draw-mask-weather=true --prop:/sim/rendering/draw-mask-stereo=true --prop:/sim/rendering/draw-mask-internal-cockpit=true --prop:/sim/rendering/draw-mask-internal-windows=true --prop:/sim/rendering/draw-mask-internal-instruments=true --prop:/sim/rendering/draw-mask-internal-overlay=true --prop:/sim/rendering/draw-mask-internal-effects=true --prop:/sim/rendering/draw-mask-internal-lights=true --prop:/sim/rendering/draw-mask-internal-world=true --prop:/sim/rendering/draw-mask-internal-panel=true --prop:/sim/rendering/draw-mask-internal-3d=true --prop:/sim/rendering/draw-mask-internal-sky=true --prop:/sim/rendering/draw-mask-internal-cabin=true --prop:/sim/rendering/draw-mask-internal-weather=true --prop:/sim/rendering/draw-mask-internal-stereo=true --prop:/sim/rendering/draw-mask-internal-shadow=true --prop:/sim/rendering/draw-mask-internal-stall=true --prop:/sim/rendering/draw-mask-internal-aoa=true --prop:/sim/rendering/draw-mask-internal-thermal=false --prop:/sim/rendering/draw-mask-internal-ice=false --prop:/sim/rendering/draw-mask-internal-glass=true --prop:/sim/rendering/draw-mask-internal-dead=true --prop:/sim/rendering/draw-mask-internal-reflection=true程序显示错误unknown command-line option: enable-hud-2d怎么解决
05-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值