前言

没怎么找到这篇论文的完整版,于是自己完整翻译了这篇论文。
中间主要借助百度翻译,并且参考了一些他人已经翻译过的片段。
相关学术名词我尽可能标准翻译了,如还有不当之处,望指出。

Computing the Stereo Matching Cost with a Convolutional Neural Network

摘要

​ 我们提取出了一种从矫正后的图像对提取深度信息的方法。我们训练一个卷积神经网络来预测两个图像块的匹配程度并计算立体匹配代价。匹配代价细化为基于交叉的代价聚合算法(cross-based cost aggregation)和半全局匹配算法(semiglobal matching),然后进行左右一致性检查(consistency check),消除遮挡区域的误差。我们的立体匹配算法在KITTI立体匹配数据集上实现2.61%的错误率,并且是该数据集上截止于2014年8月为止表现最好的算法。

1. 介绍

​ 考虑下列问题:给定两个从不同水平位置拍摄的图像,目的是计算左图中每个像素点的视差ddd。视差是指一个物体在左右图像中水平位置上的差距——左图中(x,y)(x, y)(x,y)处的物体出现在右图中(x−d,y)(x-d, y)(x−d,y)处。知道物体的视差ddd后,我们能通过以下关系计算它的深度zzz(即物体到相机的距离):
z=fBd,(1)z=\frac{fB}{d}, \tag{1} z=dfB​,(1)
其中fff是相机的焦距,BBB是两个相机光心的距离。所描述的问题是三维重建的子问题,目标是从一个或多个图像中提取三维形状。根据Scharstein和Szeliski[14]的分类,典型的立体算法由四个步骤组成:(1)(1)(1)匹配代价计算;(2)(2)(2)代价聚合;(3)(3)(3)视差计算;(4)(4)(4)视差优化。根据Hirschmuller和Scharstein[5],我们将步骤(1)(1)(1)和(2)(2)(2)称为计算匹配代价,步骤(3)(3)(3)和(4)(4)(4)称为立体方法。我们提出了在多对小图像块上训练一个卷积神经网络[9],其中真实视差是已知的(例如通过激光雷达获得)。网络的输出用于初始化图像块对之间的匹配代价。匹配代价是通过采用基于交叉的代价聚合在具有相似灰度的邻近像素点之间融合而成。平滑约束(smoothness constraints)通过半全局匹配算法加强,左右一致性检查用于检测和消除遮挡区域的误差。我们进行了亚像素增强,并应用中值滤波和双边滤波获得最终的视差图。图1描述了方法的输入和输出。

图1 输入是来自左右摄像头的一对图像。物体在这两个输入图像上的水平位置上差别很大。 注意距离相机较近的物体的视差比距离较远的物体视差大。 输出中较暖的颜色代表较大的视差值,即较小的深度值。

本文的两个贡献是:

  • 我们描述了卷积神经网络如何用于计算匹配代价。
  • 我们在KITTI数据集上实现了2.61%的错误率,优于以前的最佳结果2.83%。

2. 相关工作

​ 在大型数据集[2, 13]被引入之前,相对较少的立体匹配算法用基准真值(ground-truth)信息来学习模型的参数。在本节中,我们将回顾其中的一些算法。对立体匹配算法的概述参见[14]。Kong和Tao[6]的算法使用距离平方和来计算初始匹配代价。他们训练了一个预测三类概率分布的模型:初始视差正确,由于前景放大导致的初始视差错误,由于其他原因导致的视差错误。利用预测概率调整初始匹配代价。Kong和Tao[7]后来通过结合由计算不同窗口大小和中心的归一化相关匹配算法(normalized cross-correlation)获得的预测值,扩展了他们的工作。Peris等人[12]用AD-Census算法[11]初始化匹配代价,并使用多类线性鉴别分析(multiclass linear discriminant analysis)来学习从计算的匹配代价到最终视差的映射。

​ 基准真值数据也被用来学习图形模型的参数。Zhang和Seitz[22]使用交替优化算法(alternative optimization algorithm)来估计Markov随机场(Markov random field)超参数的最优值。Scharstein和Pal[13]构建了一个由30对立体对组成的新数据集,并用它来学习条件随机场的参数。Li和Huttenlocher[10]提出了一种具有非参数代价函数的条件随机场模型(conditional random field model),并利用结构化支持向量机学习模型参数。

​ 最近的工作[3, 15]侧重于估计计算出的匹配代价的置信度。Haeusler等人[3]使用随机决策树分类器组合多个置信度量。同样,Spyropoulos等人[15]训练了一个随机决策树分类器(a random forest classifier)来预测匹配代价的置信度,并将预测作为Markov随机场中的软约束,以减少立体方法的误差。

3. 匹配代价计算

一个典型的立体匹配算法是计算出考虑范围中的所有视差d在每个位置p的匹配成本C(p, d)。一个简单的例子是SAD(Sum of Absolute Differences,绝对差和):
CAD(p,d)=∑q∈Np∣IL(q)−IR(qd)∣,(2)C_{AD}(\textbf{p},d) = \sum_{\textbf{q}\in{\mathcal{N}_{\textbf{p}}}}|I^{L}(\textbf{q})-I^{R}(\textbf{qd})|, \tag{2} CAD​(p,d)=q∈Np​∑​∣IL(q)−IR(qd)∣,(2)
其中,IL(q)I^{L}(\textbf{q})IL(q)和IR(qd)I^{R}(\textbf{qd})IR(qd)是左右图像位置点p\textbf{p}p处的图像强度,Np\mathcal{N}_{\textbf{p}}Np​是以p\textbf{p}p为中心的固定矩形窗口的一组位置集。我们使用粗体小写(p,q,r)(\textbf{p},\textbf{q},\textbf{r})(p,q,r)表示实数对。附加一个小写的d\textbf{d}d的含义是:如果p=(x,y)\textbf{p}=(x,y)p=(x,y),那么pd=(x−d,y)\textbf{pd}=(x-d,y)pd=(x−d,y)。

方程(2)(2)(2)可以解释为计算左图中以p\textbf{p}p为中心的图像块与右图中以pd\textbf{pd}pd为中心的图像块的相关匹配代价。由于可以从公开数据集(如Kitti[2]和Middlebury[14])中获取匹配结果好的样本和匹配结果差的样本,因此我们可以尝试通过有监督的学习方法来解决匹配问题。在卷积神经网络成功应用于视觉问题[8]的启发下,我们使用它们来评估两个图像块的匹配程度。

3.1 建立数据集

训练集包含两个图像块,分别来自左图和右图:
<P9×9L(p),P9×9R(q)>,(3)<\mathcal{P}_{9×9}^{L}(\textbf{p}),\mathcal{P}_{9×9}^{R}(\textbf{q})>,\tag{3} <P9×9L​(p),P9×9R​(q)>,(3)
其中,P9×9L(p)\mathcal{P}_{9×9}^{L}(\textbf{p})P9×9L​(p)表示左图上以位置p=(x,y)\textbf{p}=(x,y)p=(x,y)为中心的9×9图像块。当视差d已知的条件下,我们提取一个正样本和一个负样本。负样本的获得可通过设置右图像块的中心q\textbf{q}q为
q=(x−d+oneg,y),(4)\textbf{q}=(x-d+o_{neg},y), \tag{4} q=(x−d+oneg​,y),(4)
onego_{neg}oneg​是破坏匹配的偏移量,随机选自集合{−Nhi,...,−Nlo.Nlo,...,Nhi}\{-N_{hi},...,-N_{lo}.N_{lo},...,N_{hi}\}{−Nhi​,...,−Nlo​.Nlo​,...,Nhi​}。同样的,正样本的获得可通过设置
q=(x−d+opos,y),(5)\textbf{q}=(x-d+o_{pos},y), \tag{5} q=(x−d+opos​,y),(5)
oposo_{pos}opos​随机选自集合{−Phi,...,Phi}\{-P_{hi},...,P_{hi}\}{−Phi​,...,Phi​}。将OposO_{pos}Opos​包括在内,而不是设置为000的原因与稍后使用的立体方法有关。特别的,我们发现当网络将低匹配代价分配给好的匹配样本时,和相邻匹配样本一样,其基于十字交叉的代价聚合算法会表现得更好。

Nhi,Nlo,PhiN_{hi},N_{lo},P_{hi}Nhi​,Nlo​,Phi​和图像块的大小nnn是该方法的超参数。

3.2 神经网络结构

图2 我们的卷积神经网络的结构

我们使用图2所示的结构。这个网络由八层组成,从L1L1L1到L8L8L8。第一层是卷积层,而其他所有层都是全连接层。网络的输入是两个9×99×99×9的灰度图像块。第一层卷积层由32个5×5×15×5×15×5×1大小的卷积核组成。L2L2L2层和L3L3L3层是各自拥有200个神经元的全连接层。在L3L3L3层后两个200维向量连接成400维向量,并通过从L4L4L4到L7L7L7四个各自拥有300个神经元的全连接层。最后一层,L8L8L8,将输出投影到两个实数,然后作为SoftMax函数的输入,最后在好匹配和坏匹配两个分类上产生分布。左右图像块在网络L1L1L1、L2L2L2和L3L3L3层的权重是绑定的。除了L8L8L8层外,每层都有线性整流函数(Rectified Linear Unit, ReLU)。我们的网络结构没有使用池化层,包含了近60万个参数。该结构适合处理灰度图,但可以通过在L1L1L1层中学习5×5×35×5×35×5×3而不是5×5×15×5×15×5×1的滤波器来轻松处理RGB图像。网络的最佳超参数(例如层数、每层神经元数和输入的图像块的大小)将因数据集而异。我们选择这种结构是因为它在KITTI立体数据集上表现良好。

3.3 匹配代价

​ 匹配代价CCNN(p,d)C_{CNN}(\textbf{p},d)CCNN​(p,d)直接由神经网络的输出计算得来:
CCNN(p,d)=fneg(<P9×9L(p),P9×9R(pd)>)C_{CNN}(\textbf{p},d)=f_{neg}(<\mathcal{P}_{9×9}^{L}(\textbf{p}),\mathcal{P}_{9×9}^{R}(\textbf{pd})>) CCNN​(p,d)=fneg​(<P9×9L​(p),P9×9R​(pd)>)
其中,fneg(<PL,PR>)f_{neg}(<\mathcal{P}^{L},\mathcal{P}^{R}>)fneg​(<PL,PR>)是负类在网络输入图像块PL,PR\mathcal{P}^{L},\mathcal{P}^{R}PL,PR上运行的输出。单纯来讲,我们必须考虑对图像的每个位置ppp和每个视差ddd执行正向传播。以下三个实现细节能使得运行可控:

  1. 每个位置ppp只需要计算一次L1L1L1、L2L2L2和L3L3L3层的输出,不需要为每个视差ddd重新计算。
  2. 通过向网络提供全分辨率图像进行传递而非9×99×99×9图像块,可以计算出一次正向传播中所有位置的L3L3L3层输出。为了实现这一点,我们将L2L2L2层和L3L3L3层卷积,在L2L2L2层中使用尺寸为5×5×325×5×325×5×32的过滤器,在L3L3L3层中使用尺寸为1×1×2001×1×2001×1×200的过滤器,两者都输出200200200个特征映射。
  3. 同样,可以使用尺寸为1×11×11×1的卷积滤波器替换L4L4L4到L8L8L8,以计算单个正向传播中所有位置的输出。不幸的是,对于每个考虑的视差,我们仍然要进行正向传播。

4. 立体方法

为了有意义地评估匹配代价,我们需要把它与一种立体方法配对。我们所使用的立体方法受Mei等人的影响[11]。

4.1 基于交叉的代价聚合

​ 通过平均固定窗口的匹配代价来融合邻近像素的信息。在接近深度不连续的情况下,由于违反了窗内深度不变的假设,这种方法会失败。我们更倾向于一种自适应地为每个像素选择领域的方法,这样支撑窗口只从视差相似的像素收集组成。在基于交叉的成本聚合[21]中,我们围绕每个位置构建一个局部邻域,其中包含具有相似图像强度值的像素。基于交叉的代价聚合首先需要在每个位置构建一个垂直交叉。只要满足以下两个条件,以位置p\textbf{p}p为起点左臂pl\textbf{p}_{l}pl​可以一直延伸:

  • ∣I(p)−I(pl)∣<τ|I(\textbf{p})-I(\textbf{p}_{l})|<\tau∣I(p)−I(pl​)∣<τ 位置p\textbf{p}p和pl\textbf{p}_{l}pl​的图像强度值的绝对差值小于τ\tauτ。
  • ∣∣p−pl∣∣<η||\textbf{p}-\textbf{p}_{l}||<\eta∣∣p−pl​∣∣<η 位置p\textbf{p}p和pl\textbf{p}_{l}pl​的物理水平距离(在上臂和下臂的情况下,是垂直距离)小于η\etaη

右臂,下臂,上臂的构造也相似。一旦四臂已知,我们可以将支撑平面U(p)U(\textbf{p})U(p)定义为所以放置在p\textbf{p}p的垂直臂上的位置q\textbf{q}q的水平臂的集合。

图3

Zhang等人[21]提议聚合需要考虑一个立体对的两幅图像的支撑平面。令ULU^{L}UL和URU^{R}UR表示左图和右图的支撑平面。我们定义结合的支撑平面UdU_{d}Ud​为
Ud(p)={q∣q∈UL(p),qd∈UR(pd)}.(7)U_{d}(\textbf{p})=\{\textbf{q}|\textbf{q}\in{U^{L}}(\textbf{p}),\textbf{qd}\in{U^{R}}(\textbf{pd})\}.\tag{7} Ud​(p)={q∣q∈UL(p),qd∈UR(pd)}.(7)
匹配代价结合支撑平面取平均:
CCBCA0(p,d)=CCNN(p,d),(8)C^{0}_{CBCA}(\textbf{p},d)=C_{CNN}(\textbf{p},d),\tag{8} CCBCA0​(p,d)=CCNN​(p,d),(8)

CCBCAi(p,d)=1∣Ud(p)∣CCNNi−1(p,d),(9)C^{i}_{CBCA}(\textbf{p},d)=\frac{1}{|U_{d}(\textbf{p})|}C^{i-1}_{CNN}(\textbf{p},d),\tag{9} CCBCAi​(p,d)=∣Ud​(p)∣1​CCNNi−1​(p,d),(9)

其中iii是迭代次数。我们重复该平均过程四次;基于交叉的代价聚合的输出为CCBCA4C_{CBCA}^{4}CCBCA4​ 。

4.2 半全局匹配

​ 我们通过对视差图添加平滑约束来优化匹配代价。根据Hirschmuller[4],我们定义了一个取决于视差DDD能量函数E(D)E(D)E(D):
E(D)=∑p(CCBCA4(p,D(p))+∑q∈NpP1×1{∣D(p)−D(q)∣=1}+∑q∈NpP2×1{∣D(p)−D(q)∣>1}),(10)E(D)=\sum_{\textbf{p}}{\Bigg(C_{CBCA}^{4}(\textbf{p},D(\textbf{p})) \\+\sum_{\textbf{q}\in{N_{\textbf{p}}}}P_{1}×1\{|D(\textbf{p})-D(\textbf{q})|=1\}\\ +\sum_{\textbf{q}\in{N_{\textbf{p}}}}P_{2}×1\{|D(\textbf{p})-D(\textbf{q})|>1\}\Bigg)},\tag{10} E(D)=p∑​(CCBCA4​(p,D(p))+q∈Np​∑​P1​×1{∣D(p)−D(q)∣=1}+q∈Np​∑​P2​×1{∣D(p)−D(q)∣>1}),(10)
其中1{.}1\{.\}1{.}表示指标函数。第一个式子用来惩罚具有高匹配代价的视差D(p)D(\textbf{p})D(p)。第二个式子在相邻像素视差为1时添加一个惩罚P1P_{1}P1​,视差大于1时则如第三个式子添加一个更大的惩罚P2P_{2}P2​。比起在二维层面上最小化能量函数E(D)E(D)E(D),我们采用动态规划(Dynamic Programming,DP)进行单方向最小化。这种解决方案引入了不必要的条纹效应(streaking effects),因此在我们不打算优化的方向上不需要对视差图进行平滑约束。在半全局匹配中,我们将多个方向的能量E(D)E(D)E(D)最小化,并且取平均获得最终结果。虽然Hirschmuller[4]建议选择16个方向,但我们只沿着两个水平方向和两个垂直方向进行优化;添加对角线方向并不能提高我们系统的精度。为了最小化r\textbf{r}r方向的能量函数E(D)E(D)E(D) ,我们用如下的递推关系定义了一个匹配代价Cr(p,d)C_{\textbf{r}}(\textbf{p},d)Cr​(p,d):
Cr(p,d)=CCBCA4(p,d)−min⁡kCr(p−r,k)+min⁡{Cr(p−r,d),Cr(p−r,d−1)+P1,Cr(p−r,d+1)+P1,min⁡kCr(p−r,k)+P2}.(11)C_{\textbf{r}}(\textbf{p},d)=C_{CBCA}^{4}(\textbf{p},d)-\min_{k}C_{r}(\textbf{p}-\textbf{r},k)\\ +\min\Bigg\{C_{r}(\textbf{p}-\textbf{r},d),C_{r}(\textbf{p}-\textbf{r},d-1)+P_{1},\\C_{r}(\textbf{p}-\textbf{r},d+1)+P_{1},\min_{k}C_{r}(\textbf{p}-\textbf{r},k)+P_{2}\Bigg\}. \tag{11} Cr​(p,d)=CCBCA4​(p,d)−kmin​Cr​(p−r,k)+min{Cr​(p−r,d),Cr​(p−r,d−1)+P1​,Cr​(p−r,d+1)+P1​,kmin​Cr​(p−r,k)+P2​}.(11)
第二个式子避免Cr(p,d)C_{\textbf{r}}(\textbf{p},d)Cr​(p,d)过大,并且不影响最优视差图。根据图像梯度设置参数P1P_{1}P1​和P2P_{2}P2​,使视差中的跳跃部分和图像中的边缘是一致的。令D1=∣IL(p)−IL(p−r)∣D_{1}=|I^{L}(\textbf{p})-I^{L}(\textbf{p}-\textbf{r})|D1​=∣IL(p)−IL(p−r)∣,D2=∣IR(pd)−IR(pd−r)∣D_{2}=|I^{R}(\textbf{pd})-I^{R}(\textbf{pd}-\textbf{r})|D2​=∣IR(pd)−IR(pd−r)∣。我们根据以下规则设定P1P1P1和P2P2P2:
P1=Π1,P2=Π2ifD1<τSO,D2<τSO,P1=Π1/4,P2=Π2/4ifD1≥τSO,D2<τSO,P1=Π1/4,P2=Π2/4ifD1<τSO,D2≥τSO,P1=Π1/10,P2=Π2/10ifD1≤τSO,D2≥τSO;\begin{aligned} P_{1}=\Pi_{1},\quad &P_{2}=\Pi_{2} &if\ D_{1}<\tau_{SO},D_{2}<\tau_{SO},\\ P_{1}=\Pi_{1}/4,&P_{2}=\Pi_{2}/4 &if\ D_{1}\geq \tau_{SO},D_{2}<\tau_{SO},\\ P_{1}=\Pi_{1}/4,&P_{2}=\Pi_{2}/4 &if\ D_{1}<\tau_{SO},D_{2}\geq\tau_{SO},\\ P_{1}=\Pi_{1}/10,&P_{2}=\Pi_{2}/10 &if\ D_{1}\leq\tau_{SO},D_{2}\geq\tau_{SO}; \end{aligned} P1​=Π1​,P1​=Π1​/4,P1​=Π1​/4,P1​=Π1​/10,​P2​=Π2​P2​=Π2​/4P2​=Π2​/4P2​=Π2​/10​if D1​<τSO​,D2​<τSO​,if D1​≥τSO​,D2​<τSO​,if D1​<τSO​,D2​≥τSO​,if D1​≤τSO​,D2​≥τSO​;​
其中Π1\Pi_{1}Π1​,Π2\Pi_{2}Π2​和τSO\tau_{SO}τSO​是超参数。P1P_{1}P1​值在最小化垂直方向时减半。最终的代价CSGM(p,d)C_{SGM}(\textbf{p},d)CSGM​(p,d)通过取四个方向的平均值计算获得:
CSGM(p,d)=14∑rCr(p,d).(12)C_{SGM}(\textbf{p},d)=\frac{1}{4}\sum_{\textbf{r}}C_{\textbf{r}}(\textbf{p},d).\tag{12} CSGM​(p,d)=41​r∑​Cr​(p,d).(12)
在半全局匹配后我们重复基于交叉的代价融合,如前一节所述。

4.3 计算视差图

​ 视差图DDD通过胜者为王策略(Winner-Take-All ,WTA )计算,即通过找出视差ddd来最小化C(p,d)C(\textbf{p},d)C(p,d),
D(p)=arg⁡min⁡dC(p,d).(13)D(\textbf{p})=\arg\min_{d}C(\textbf{p},d).\tag{13} D(p)=argdmin​C(p,d).(13)

4.3.1 插值

​ 让DLD^{L}DL表示将左图作为参考图像得到的视差图——到目前为止我们也是这样做的,即让DL(p)=D(p)D^{L}(\textbf{p})=D(\textbf{p})DL(p)=D(p)。然后按DRD^{R}DR表示将右图作为参考图像得到的视差图。DLD^{L}DL和DRD^{R}DR在遮挡区域都有错误。我们通过使用左右一致性检查来检测到这些错误。我们将每个位置ppp标记为以下任一:
correctif∣d−DR(pd)∣≤1ford=DL(p),mismatchif∣d−DR(pd)∣≤1foranyotherd,occlusionotherwise.\begin{aligned} &correct \quad \quad \ \ if\ |d-D^{R}(\textbf{pd})|\leq1\ for\ d=D^{L}(\textbf{p}),\\ &mismatch \quad if\ |d-D^{R}(\textbf{pd})|\leq1\ for\ any\ other\ d,\\ &occlusion \quad \ otherwise. \end{aligned} ​correct  if ∣d−DR(pd)∣≤1 for d=DL(p),mismatchif ∣d−DR(pd)∣≤1 for any other d,occlusion otherwise.​
对于标记为occlusionocclusionocclusion(遮挡)的位置,我们想要从背景中获得新的视差值。我们通过向左移动直到我们找到一个标记为correctcorrectcorrect(正确)的的位置并且使用该位置的视差值。对于标记为dismatchdismatchdismatch(未匹配)的位置,我们在十六个不同的方向上寻找最接近的正确像素,并使用他们视差的中位数进行插值。我们将插值视差图称作DINTD_{INT}DINT​。

4.3.2 亚像素增强

​ 亚像素增强提供一种简单方法来提升立体算法的分辨率。我们通过相邻代价拟合二次曲线,得到一个新的视差图像:
DSE(p)=d−C+−C−2(C+−2C+C−),(14)D_{SE}(\textbf{p})=d-\frac{C_{+}-C_{-}}{2(C_{+}-2C+C_{-})},\tag{14} DSE​(p)=d−2(C+​−2C+C−​)C+​−C−​​,(14)
其中d=DINT(p)d=D_{INT}(\textbf{p})d=DINT​(p),C−=CSGM(p,d−1)C_{-}=C_{SGM}(\textbf{p},d-1)C−​=CSGM​(p,d−1),C=CSGM(p,d)C=C_{SGM}(\textbf{p},d)C=CSGM​(p,d),C+=CSGM(p,d+1)C_{+}=C_{SGM}(\textbf{p},d+1)C+​=CSGM​(p,d+1)。

4.3.3 改良

有卷积的边界效应,视差图DSED_{SE}DSE​比原始图像小。通过复制边界像素的视差来扩大视差图,从而匹配输入的大小。我们采用5×5中值滤波器和以下双边滤波器:
DBF(p)=1W(p)∑q∈NpDSE(q)⋅g(∣∣p−q∣∣)⋅1{∣IL(p)−IL(q)∣<τBF},(15)D_{BF}(\textbf{p})=\frac{1}{W_{(\textbf{p})}}\sum_{\textbf{q}\in{\mathcal{N}_{\textbf{p}}}}D_{SE}(\textbf{q})\cdot \ g(||\textbf{p}-\textbf{q}||)\\ \cdot 1\{|I^{L}(\textbf{p})-I^{L}(\textbf{q})|<\tau_{BF}\},\tag{15} DBF​(p)=W(p)​1​q∈Np​∑​DSE​(q)⋅ g(∣∣p−q∣∣)⋅1{∣IL(p)−IL(q)∣<τBF​},(15)
其中g(x)g(x)g(x)是均值零,标准差为$\sigma 的正态分布的概率密度函数,的正态分布的概率密度函数,的正态分布的概率密度函数,W_{(\textbf{p})}$是归一化常数:
W(p)=∑q∈Nqg(∣∣p−q∣∣)⋅1{∣IL(p)−IL(q)∣<τBF}.(16)W_{(\textbf{p})}=\sum_{\textbf{q}\in\mathcal{N}_{\textbf{q}}}g(||\textbf{p}-\textbf{q}||) \cdot 1\{|I^{L}(\textbf{p})-I^{L}(\textbf{q})|<\tau_{BF}\}.\tag{16} W(p)​=q∈Nq​∑​g(∣∣p−q∣∣)⋅1{∣IL(p)−IL(q)∣<τBF​}.(16)
τBF\tau_{BF}τBF​和σ\sigmaσ是超参数。DBFD_{BF}DBF​是我们立体方法的最终输出。

5. 实验结果

由于需要大规模训练集去学习神经网络中的权重,我们选择在KITTI立体数据集上评估我们的方法。

5.1 KTTI立体数据集

​ KITTI立体数据集[2]是一组灰度图像对,来自安装在车顶上的相距约54厘米的两个摄像头。这些图像是在白天,晴天和多云天气下,在Karlsruhe市及其周围行驶时拍摄的。数据集包括194个训练和195个测试的分辨率为1240×376的图像对。每个图像对都经过校正,使得一个物体出现在两个图像中的同一垂直位置上。一个旋转的激光扫描仪,安装在左摄像头的后面,提供地面真实深度。保留测试集的真实视差,并提供一个在线排行榜,以便研究人员在测试集上评估他们的方法。每三天只允许提交一次。KITTI立体数据集的目标是预测左图像上每个像素的视差。误差以实际视差和预测视差相差超过三个像素的像素百分比来衡量。将视差转换为深度,例如,距离相机2米的对象的误差公差为±3厘米,距离相机10米的对象的误差公差为±80厘米。

5.2 学习中的细节

​ 利用随机梯度下降(stochastic gradient descent,SGD)训练网络,使交叉熵损失函数(cross-entropy loss)最小化。批处理大小设置为128。我们训练了16轮,学习率最初设置为0.01,并在12次和15次迭代中减少至十分之一。在进行学习之前,我们会打乱训练集。从194个训练图像对中,我们提取了4500万样本。一半属于正类,一半属于负类。我们对每幅图像进行预处理,减去平均值,再除以其像素强度值的标准差。立体方法在CUDA中实现,而神经网络的训练在Torch7环境中完成。立体方法的超参数如下:

5.3 结果

​ 我们的立体方法在KITTI立体数据集上实现了2.612.61%2.61的错误率,目前在线上排行榜排名第一。表1比较了该数据集上错误率表现得最好的几个算法。

表1 2014年11月KITTI立体数据集排行榜

我们选择了一组示例,以及我们方法的预测结果,展示在图5:

图5 左侧展示输入的左图,右侧展示我们立体算法的输出。从上到下,示例难度逐渐增加。较难的示例中有如反射面、遮挡物以及视差中跳跃区域等困难,例如栅栏和灌木丛。底部选用较难的示例来凸显我们方法中的缺陷,并说明在现实图像中立体匹配的固有困难。

5.4 运行时间

​ 我们使用Nvidia Geforce GTX Titan GPU在计算机上测量实现的运行时间。训练需要5个小时。预测单个图像对需要100秒。从表2可以明显看出,预测过程中的大部分时间都花在卷积神经网络的正向传播上。

表2 预测包含的每个部分所需要的时间

5.5 训练集大小

​ 我们想要知道是否更多的数据集可以使得立体方法表现更好。为了回答这个问题,我们在改变训练集大小的同时,在KITTI立体数据集的许多实例上训练我们的卷积神经网络。实验结果如图4所示。

图4 训练集上的误差和训练集中的立体对数量的函数

我们观察到训练集大小和测试集上的误差几乎呈线性关系。这些结果说明我们的方法会随着将来更大的数据集的出现而改进。

6. 结论

我们在KITTI立体数据集上的研究结果似乎表明,卷积神经网络是一种很好的计算立体匹配代价的方法。对于更大的数据集,错误率将会进一步降低。在立体方法中使用有监督的学习本身也是有益的。我们的方法还不适用于机器人导航等实时应用。未来的工作将会集中在提高网络的运行时性能上。

参考

[1] Collobert, R., Kavukcuoglu, K., and Farabet, C. (2011).Torch7: A matlab-like environment for machine learning. In BigLearn, NIPS Workshop, number EPFL-CONF-192376.

[2] Geiger, A., Lenz, P., Stiller, C., and Urtasun, R. (2013).Vision meets robotics: The KITTI dataset. International Journal of Robotics Research (IJRR).

[3] Haeusler, R., Nair, R., and Kondermann, D. (2013). Ensemble learning for confidence measures in stereo vision.In Computer Vision and Pattern Recognition (CVPR),2013 IEEE Conference on, pages 305–312. IEEE.

[4] Hirschmuller, H. (2008). Stereo processing by semiglobal matching and mutual information. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 30(2):328–341.

[5] Hirschmuller, H. and Scharstein, D. (2009). Evaluation of stereo matching costs on images with radiometric differences. Pattern Analysis and Machine Intelligence,IEEE Transactions on, 31(9):1582–1599.

[6] Kong, D. and Tao, H. (2004). A method for learning matching errors for stereo computation. In BMVC, pages 1–10.

[7] Kong, D. and Tao, H. (2006). Stereo matching via learning multiple experts behaviors.In BMVC, pages 97-106.

[8] Krizhevsky, A., Sutskever, I., and Hinton, G. (2012). Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages 1106–1114.

[9] LeCun, Y., Bottou, L., Bengio, Y., and Haffner, P.(1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324.

[10] Li, Y. and Huttenlocher, D. P. (2008). Learning for stereo vision using the structured support vector machine. In Computer Vision and Pattern Recognition,2008. CVPR 2008. IEEE Conference on, pages 1–8.IEEE.

[11] Mei, X., Sun, X., Zhou, M., Wang, H., Zhang, X., et al. (2011). On building an accurate stereo matching system on graphics hardware. In Computer Vision Workshops (ICCV Workshops), 2011 IEEE International Conference on, pages 467–474. IEEE.

[12] Peris, M., Maki, A., Martull, S., Ohkawa, Y., and Fukui, K. (2012). Towards a simulation driven stereo vision system. In Pattern Recognition (ICPR), 2012 21st International Conference on, pages 1038–1042. IEEE.

[13] Scharstein, D. and Pal, C. (2007). Learning conditional random fields for stereo. In Computer Vision and Pattern Recognition, 2007. CVPR’07. IEEE Conference on, pages 1–8. IEEE.

[14] Scharstein, D. and Szeliski, R. (2002). A taxonomy and evaluation of dense two-frame stereo correspondence algorithms. International journal of computer vision, 47(1-3):7–42.

[15] Spyropoulos, A., Komodakis, N., and Mordohai, P. (2014). Learning to detect ground control points for improving the accuracy of stereo matching. In Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on, pages 1621–1628. IEEE.

[16] Vogel, C., Roth, S., and Schindler, K. (2014). View-consistent 3d scene flow estimation over multiple frames. In Computer Vision–ECCV 2014, pages 263–278. Springer.

[17] Vogel, C., Schindler, K., and Roth, S. (2013). Piecewise rigid scene flow. In Computer Vision (ICCV), 2013 IEEE International Conference on, pages 1377–1384. IEEE.

[18] Yamaguchi, K., Hazan, T., McAllester, D., and Urtasun, R. (2012). Continuous markov random fields for robust stereo estimation. In Computer Vision–ECCV 2012, pages 45–58. Springer.

[19] Yamaguchi, K., McAllester, D., and Urtasun, R. (2013). Robust monocular epipolar flow estimation. In Computer Vision and Pattern Recognition (CVPR), 2013 IEEE Conference on, pages 1862–1869. IEEE.

[20] Yamaguchi, K., McAllester, D., and Urtasun, R. (2014). Efficient joint segmentation, occlusion labeling, stereo and flow estimation. In Computer Vision–ECCV 2014, pages 756–771. Springer.

[21] Zhang, K., Lu, J., and Lafruit, G. (2009). Cross-based local stereo matching using orthogonal integral images. Circuits and Systems for Video Technology, IEEE Transactions on, 19(7):1073–1079.

[22] Zhang, L. and Seitz, S. M. (2007). Estimating optimal parameters for mrf stereo from a single image pair. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 29(2):331–342.

【MC-CNN论文翻译】Computing the Stereo Matching Cost with a Convolutional Neural Network相关推荐

  1. 【农业害虫识别论文一】Crop pest classification based on deep convolutional neural network and transfer learning

    本论文发布于2019年,主要基于三个数据集进行农业害虫的识别.文章不是简单的翻译,而是类似自己的读书笔记,基本记录了下,做后续回顾所用.望各位看官不要吐槽 哈哈! 论文题目 Crop pest cla ...

  2. 论文翻译:LP-3DCNN: Unveiling Local Phase in 3D Convolutional Neural Networks

    引言 传统的3D卷积神经网络(CNN)计算成本高,内存密集,容易过度拟合,最重要的是,需要改进其特征学习能力.为了解决这些问题,我们提出了整流局部相位体积(ReLPV)模块,它是标准3D卷积层的有效替 ...

  3. 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)

    [翻译论文]An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) ...

  4. 卷积神经网络Convolutional Neural Network (CNN)

    卷积神经网络 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/41596663 自今年七月份以来,一直在实验室负责卷积神经网络(Convol ...

  5. 论文笔记(三):PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes 文章概括 摘要 1. ...

  6. 《Improved Crowd Counting Method Based onScale-Adaptive Convolutional Neural Network》论文笔记

    <Improved Crowd Counting Method Based onScale-Adaptive Convolutional Neural Network>论文笔记 论文地址 ...

  7. 【读论文】Loop Closure Detection for Visual SLAM Systems Using Convolutional Neural Network

    [读论文]Loop Closure Detection for Visual SLAM Systems Using Convolutional Neural Network 发表于2017年,作者是南 ...

  8. 读后感-论文Patch-based Convolutional Neural Network for Whole Slide Tissue Image Classification

    读后感背景 工作中要对高分辨率图像(至少1024 \(\times\) 1024)进行分类,而且ground-truth分类的标准一般都是取决于像素级别的精细local feature(e.g. te ...

  9. Paper翻译:《A Novel Convolutional Neural Network Based Model for Recognition and Classification of App》

    论文名称:<A Novel Convolutional Neural Network Based Model for Recognition and Classification of Appl ...

  10. 【读点论文】PP-LCNet: A Lightweight CPU Convolutional Neural Network,面向CPU级的技巧结合下的低延迟,较高精度模型

    PP-LCNet: A Lightweight CPU Convolutional Neural Network 提出了一个基于MKLDNN加速策略的轻量级CPU网络,命名为PP-LCNet,它提高了 ...

最新文章

  1. iOS面试题整理---关键字!!!
  2. android软件安全权威指南 pdf_AV-TEST 发布 2019 最佳 Android 安全软件榜单
  3. 好程序员web前端分享javascript枚举算法
  4. BlackBerry 开发笔记入门 控件简介
  5. 2018【比特杯】编程大赛
  6. 下一代网络安全将全部基于行为识别
  7. java动态数组的实现的_Java实现数据结构之【动态数组】
  8. bat for 循环中定义变量(变量值不显示,通过使用「延期变量扩展」方式解决)
  9. php 数据导出到excel文件,PHP - 如何将数据动态导出到Excel文件(.xls)?
  10. 日期操作类--Date类
  11. 苹果cmsV10资源站模板
  12. linux 服务器时钟同步设置
  13. matlab求两向量夹角_MATLAB图形的标注与修饰
  14. 简单介绍公有云、私有云、混合云
  15. Windows安装 choco
  16. 拿去吧!27款MacBook软件推荐给你
  17. ChatGPT提问指令大全
  18. 中间件小师妹 de 年度工作总结
  19. 4. 数据统计分析基础知识
  20. STM32F407输入捕获-拨开云雾见青天

热门文章

  1. 通过Shell命令-监视一个进程或端口,挂掉后自动重启,并自定义日志
  2. JRebel进行热部署时修改的mapper.xml或者mapper的注解不生效
  3. Hive_数据建模工具EZDML
  4. 佛说爱情二:前生500次的回眸才换得今生的一次擦肩而过
  5. Result的类型分析和总结
  6. 手机评论文本挖掘与数据分析(Python)
  7. 1024程序员节:技术大神齐聚直播间,等你来互动!
  8. HTML签名生成图片+可加水印
  9. 基于微信视频点播小程序系统设计与实现 开题报告
  10. 基于UDP的网络聊天室