没怎么找到这篇论文的完整版,于是自己完整翻译了这篇论文。
中间主要借助百度翻译,并且参考了一些他人已经翻译过的片段。
相关学术名词我尽可能标准翻译了,如还有不当之处,望指出。
我们提取出了一种从矫正后的图像对提取深度信息的方法。我们训练一个卷积神经网络来预测两个图像块的匹配程度并计算立体匹配代价。匹配代价细化为基于交叉的代价聚合算法(cross-based cost aggregation)和半全局匹配算法(semiglobal matching),然后进行左右一致性检查(consistency check),消除遮挡区域的误差。我们的立体匹配算法在KITTI立体匹配数据集上实现2.61%的错误率,并且是该数据集上截止于2014年8月为止表现最好的算法。
考虑下列问题:给定两个从不同水平位置拍摄的图像,目的是计算左图中每个像素点的视差 d d d。视差是指一个物体在左右图像中水平位置上的差距——左图中 ( x , y ) (x, y) (x,y)处的物体出现在右图中 ( x − d , y ) (x-d, y) (x−d,y)处。知道物体的视差 d d d后,我们能通过以下关系计算它的深度 z z z(即物体到相机的距离):
z = f B d , (1) z=\frac{fB}{d}, \tag{1} z=dfB,(1)
其中 f f f是相机的焦距, B B B是两个相机光心的距离。所描述的问题是三维重建的子问题,目标是从一个或多个图像中提取三维形状。根据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描述了方法的输入和输出。
本文的两个贡献是:
在大型数据集[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随机场中的软约束,以减少立体方法的误差。
一个典型的立体匹配算法是计算出考虑范围中的所有视差d在每个位置p的匹配成本C(p, d)。一个简单的例子是SAD(Sum of Absolute Differences,绝对差和):
C A D ( p , d ) = ∑ q ∈ N p ∣ I L ( q ) − I R ( 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)
其中, I L ( q ) I^{L}(\textbf{q}) IL(q)和 I R ( qd ) I^{R}(\textbf{qd}) IR(qd)是左右图像位置点 p \textbf{p} p处的图像强度, N p \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]的启发下,我们使用它们来评估两个图像块的匹配程度。
训练集包含两个图像块,分别来自左图和右图:
< P 9 × 9 L ( p ) , P 9 × 9 R ( 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)
其中, P 9 × 9 L ( 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 + o n e g , y ) , (4) \textbf{q}=(x-d+o_{neg},y), \tag{4} q=(x−d+oneg,y),(4)
o n e g o_{neg} oneg是破坏匹配的偏移量,随机选自集合 { − N h i , . . . , − N l o . N l o , . . . , N h i } \{-N_{hi},...,-N_{lo}.N_{lo},...,N_{hi}\} {−Nhi,...,−Nlo.Nlo,...,Nhi}。同样的,正样本的获得可通过设置
q = ( x − d + o p o s , y ) , (5) \textbf{q}=(x-d+o_{pos},y), \tag{5} q=(x−d+opos,y),(5)
o p o s o_{pos} opos随机选自集合 { − P h i , . . . , P h i } \{-P_{hi},...,P_{hi}\} {−Phi,...,Phi}。将 O p o s O_{pos} Opos包括在内,而不是设置为 0 0 0的原因与稍后使用的立体方法有关。特别的,我们发现当网络将低匹配代价分配给好的匹配样本时,和相邻匹配样本一样,其基于十字交叉的代价聚合算法会表现得更好。
N h i , N l o , P h i N_{hi},N_{lo},P_{hi} Nhi,Nlo,Phi和图像块的大小 n n n是该方法的超参数。
我们使用图2所示的结构。这个网络由八层组成,从 L 1 L1 L1到 L 8 L8 L8。第一层是卷积层,而其他所有层都是全连接层。网络的输入是两个 9 × 9 9×9 9×9的灰度图像块。第一层卷积层由32个 5 × 5 × 1 5×5×1 5×5×1大小的卷积核组成。 L 2 L2 L2层和 L 3 L3 L3层是各自拥有200个神经元的全连接层。在 L 3 L3 L3层后两个200维向量连接成400维向量,并通过从 L 4 L4 L4到 L 7 L7 L7四个各自拥有300个神经元的全连接层。最后一层, L 8 L8 L8,将输出投影到两个实数,然后作为SoftMax函数的输入,最后在好匹配和坏匹配两个分类上产生分布。左右图像块在网络 L 1 L1 L1、 L 2 L2 L2和 L 3 L3 L3层的权重是绑定的。除了 L 8 L8 L8层外,每层都有线性整流函数(Rectified Linear Unit, ReLU)。我们的网络结构没有使用池化层,包含了近60万个参数。该结构适合处理灰度图,但可以通过在 L 1 L1 L1层中学习 5 × 5 × 3 5×5×3 5×5×3而不是 5 × 5 × 1 5×5×1 5×5×1的滤波器来轻松处理RGB图像。网络的最佳超参数(例如层数、每层神经元数和输入的图像块的大小)将因数据集而异。我们选择这种结构是因为它在KITTI立体数据集上表现良好。
匹配代价 C C N N ( p , d ) C_{CNN}(\textbf{p},d) CCNN(p,d)直接由神经网络的输出计算得来:
C C N N ( p , d ) = f n e g ( < P 9 × 9 L ( p ) , P 9 × 9 R ( 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)>)
其中, f n e g ( < P L , P R > ) f_{neg}(<\mathcal{P}^{L},\mathcal{P}^{R}>) fneg(<PL,PR>)是负类在网络输入图像块 P L , P R \mathcal{P}^{L},\mathcal{P}^{R} PL,PR上运行的输出。单纯来讲,我们必须考虑对图像的每个位置 p p p和每个视差 d d d执行正向传播。以下三个实现细节能使得运行可控:
为了有意义地评估匹配代价,我们需要把它与一种立体方法配对。我们所使用的立体方法受Mei等人的影响[11]。
通过平均固定窗口的匹配代价来融合邻近像素的信息。在接近深度不连续的情况下,由于违反了窗内深度不变的假设,这种方法会失败。我们更倾向于一种自适应地为每个像素选择领域的方法,这样支撑窗口只从视差相似的像素收集组成。在基于交叉的成本聚合[21]中,我们围绕每个位置构建一个局部邻域,其中包含具有相似图像强度值的像素。基于交叉的代价聚合首先需要在每个位置构建一个垂直交叉。只要满足以下两个条件,以位置 p \textbf{p} p为起点左臂 p l \textbf{p}_{l} pl可以一直延伸:
右臂,下臂,上臂的构造也相似。一旦四臂已知,我们可以将支撑平面 U ( p ) U(\textbf{p}) U(p)定义为所以放置在 p \textbf{p} p的垂直臂上的位置 q \textbf{q} q的水平臂的集合。
Zhang等人[21]提议聚合需要考虑一个立体对的两幅图像的支撑平面。令 U L U^{L} UL和 U R U^{R} UR表示左图和右图的支撑平面。我们定义结合的支撑平面 U d U_{d} Ud为
U d ( p ) = { q ∣ q ∈ U L ( p ) , qd ∈ U R ( 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)
匹配代价结合支撑平面取平均:
C C B C A 0 ( p , d ) = C C N N ( p , d ) , (8) C^{0}_{CBCA}(\textbf{p},d)=C_{CNN}(\textbf{p},d),\tag{8} CCBCA0(p,d)=CCNN(p,d),(8)
C C B C A i ( p , d ) = 1 ∣ U d ( p ) ∣ C C N N i − 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)∣1CCNNi−1(p,d),(9)
其中 i i i是迭代次数。我们重复该平均过程四次;基于交叉的代价聚合的输出为 C C B C A 4 C_{CBCA}^{4} CCBCA4 。
我们通过对视差图添加平滑约束来优化匹配代价。根据Hirschmuller[4],我们定义了一个取决于视差 D D D能量函数 E ( D ) E(D) E(D):
E ( D ) = ∑ p ( C C B C A 4 ( p , D ( p ) ) + ∑ q ∈ N p P 1 × 1 { ∣ D ( p ) − D ( q ) ∣ = 1 } + ∑ q ∈ N p P 2 × 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时添加一个惩罚 P 1 P_{1} P1,视差大于1时则如第三个式子添加一个更大的惩罚 P 2 P_{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) ,我们用如下的递推关系定义了一个匹配代价 C r ( p , d ) C_{\textbf{r}}(\textbf{p},d) Cr(p,d):
C r ( p , d ) = C C B C A 4 ( p , d ) − min k C r ( p − r , k ) + min { C r ( p − r , d ) , C r ( p − r , d − 1 ) + P 1 , C r ( p − r , d + 1 ) + P 1 , min k C r ( p − r , k ) + P 2 } . (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)−kminCr(p−r,k)+min{Cr(p−r,d),Cr(p−r,d−1)+P1,Cr(p−r,d+1)+P1,kminCr(p−r,k)+P2}.(11)
第二个式子避免 C r ( p , d ) C_{\textbf{r}}(\textbf{p},d) Cr(p,d)过大,并且不影响最优视差图。根据图像梯度设置参数 P 1 P_{1} P1和 P 2 P_{2} P2,使视差中的跳跃部分和图像中的边缘是一致的。令 D 1 = ∣ I L ( p ) − I L ( p − r ) ∣ D_{1}=|I^{L}(\textbf{p})-I^{L}(\textbf{p}-\textbf{r})| D1=∣IL(p)−IL(p−r)∣, D 2 = ∣ I R ( pd ) − I R ( pd − r ) ∣ D_{2}=|I^{R}(\textbf{pd})-I^{R}(\textbf{pd}-\textbf{r})| D2=∣IR(pd)−IR(pd−r)∣。我们根据以下规则设定 P 1 P1 P1和 P 2 P2 P2:
P 1 = Π 1 , P 2 = Π 2 i f D 1 < τ S O , D 2 < τ S O , P 1 = Π 1 / 4 , P 2 = Π 2 / 4 i f D 1 ≥ τ S O , D 2 < τ S O , P 1 = Π 1 / 4 , P 2 = Π 2 / 4 i f D 1 < τ S O , D 2 ≥ τ S O , P 1 = Π 1 / 10 , P 2 = Π 2 / 10 i f D 1 ≤ τ S O , D 2 ≥ τ S O ; \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=Π2P2=Π2/4P2=Π2/4P2=Π2/10if 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和 τ S O \tau_{SO} τSO是超参数。 P 1 P_{1} P1值在最小化垂直方向时减半。最终的代价 C S G M ( p , d ) C_{SGM}(\textbf{p},d) CSGM(p,d)通过取四个方向的平均值计算获得:
C S G M ( p , d ) = 1 4 ∑ r C r ( 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)=41r∑Cr(p,d).(12)
在半全局匹配后我们重复基于交叉的代价融合,如前一节所述。
视差图 D D D通过胜者为王策略(Winner-Take-All ,WTA )计算,即通过找出视差 d d d来最小化 C ( p , d ) C(\textbf{p},d) C(p,d),
D ( p ) = arg min d C ( p , d ) . (13) D(\textbf{p})=\arg\min_{d}C(\textbf{p},d).\tag{13} D(p)=argdminC(p,d).(13)
让 D L D^{L} DL表示将左图作为参考图像得到的视差图——到目前为止我们也是这样做的,即让 D L ( p ) = D ( p ) D^{L}(\textbf{p})=D(\textbf{p}) DL(p)=D(p)。然后按 D R D^{R} DR表示将右图作为参考图像得到的视差图。 D L D^{L} DL和 D R D^{R} DR在遮挡区域都有错误。我们通过使用左右一致性检查来检测到这些错误。我们将每个位置 p p p标记为以下任一:
c o r r e c t i f ∣ d − D R ( pd ) ∣ ≤ 1 f o r d = D L ( p ) , m i s m a t c h i f ∣ d − D R ( pd ) ∣ ≤ 1 f o r a n y o t h e r d , o c c l u s i o n o t h e r w i s e . \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.
对于标记为 o c c l u s i o n occlusion occlusion(遮挡)的位置,我们想要从背景中获得新的视差值。我们通过向左移动直到我们找到一个标记为 c o r r e c t correct correct(正确)的的位置并且使用该位置的视差值。对于标记为 d i s m a t c h dismatch dismatch(未匹配)的位置,我们在十六个不同的方向上寻找最接近的正确像素,并使用他们视差的中位数进行插值。我们将插值视差图称作 D I N T D_{INT} DINT。
亚像素增强提供一种简单方法来提升立体算法的分辨率。我们通过相邻代价拟合二次曲线,得到一个新的视差图像:
D S E ( p ) = d − C + − C − 2 ( C + − 2 C + 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 = D I N T ( p ) d=D_{INT}(\textbf{p}) d=DINT(p), C − = C S G M ( p , d − 1 ) C_{-}=C_{SGM}(\textbf{p},d-1) C−=CSGM(p,d−1), C = C S G M ( p , d ) C=C_{SGM}(\textbf{p},d) C=CSGM(p,d), C + = C S G M ( p , d + 1 ) C_{+}=C_{SGM}(\textbf{p},d+1) C+=CSGM(p,d+1)。
有卷积的边界效应,视差图 D S E D_{SE} DSE比原始图像小。通过复制边界像素的视差来扩大视差图,从而匹配输入的大小。我们采用5×5中值滤波器和以下双边滤波器:
D B F ( p ) = 1 W ( p ) ∑ q ∈ N p D S E ( q ) ⋅ g ( ∣ ∣ p − q ∣ ∣ ) ⋅ 1 { ∣ I L ( p ) − I L ( q ) ∣ < τ B F } , (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)1q∈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 ∈ N q g ( ∣ ∣ p − q ∣ ∣ ) ⋅ 1 { ∣ I L ( p ) − I L ( q ) ∣ < τ B F } . (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)
τ B F \tau_{BF} τBF和 σ \sigma σ是超参数。 D B F D_{BF} DBF是我们立体方法的最终输出。
由于需要大规模训练集去学习神经网络中的权重,我们选择在KITTI立体数据集上评估我们的方法。
KITTI立体数据集[2]是一组灰度图像对,来自安装在车顶上的相距约54厘米的两个摄像头。这些图像是在白天,晴天和多云天气下,在Karlsruhe市及其周围行驶时拍摄的。数据集包括194个训练和195个测试的分辨率为1240×376的图像对。每个图像对都经过校正,使得一个物体出现在两个图像中的同一垂直位置上。一个旋转的激光扫描仪,安装在左摄像头的后面,提供地面真实深度。保留测试集的真实视差,并提供一个在线排行榜,以便研究人员在测试集上评估他们的方法。每三天只允许提交一次。KITTI立体数据集的目标是预测左图像上每个像素的视差。误差以实际视差和预测视差相差超过三个像素的像素百分比来衡量。将视差转换为深度,例如,距离相机2米的对象的误差公差为±3厘米,距离相机10米的对象的误差公差为±80厘米。
利用随机梯度下降(stochastic gradient descent,SGD)训练网络,使交叉熵损失函数(cross-entropy loss)最小化。批处理大小设置为128。我们训练了16轮,学习率最初设置为0.01,并在12次和15次迭代中减少至十分之一。在进行学习之前,我们会打乱训练集。从194个训练图像对中,我们提取了4500万样本。一半属于正类,一半属于负类。我们对每幅图像进行预处理,减去平均值,再除以其像素强度值的标准差。立体方法在CUDA
中实现,而神经网络的训练在Torch7
环境中完成。立体方法的超参数如下:
我们的立体方法在KITTI立体数据集上实现了 2.61 2.61% 2.61的错误率,目前在线上排行榜排名第一。表1比较了该数据集上错误率表现得最好的几个算法。
我们选择了一组示例,以及我们方法的预测结果,展示在图5:
我们使用Nvidia Geforce GTX Titan GPU
在计算机上测量实现的运行时间。训练需要5个小时。预测单个图像对需要100秒。从表2可以明显看出,预测过程中的大部分时间都花在卷积神经网络的正向传播上。
我们想要知道是否更多的数据集可以使得立体方法表现更好。为了回答这个问题,我们在改变训练集大小的同时,在KITTI立体数据集的许多实例上训练我们的卷积神经网络。实验结果如图4所示。
我们观察到训练集大小和测试集上的误差几乎呈线性关系。这些结果说明我们的方法会随着将来更大的数据集的出现而改进。
我们在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.