0. 摘要
利用左右两个视角的视差信息是立体视差估计中至关重要的一步,左右一致性检测利用另一幅图像的信息能有效的提高视差估计效果。但传统的左右一致性检测是孤立的后处理步骤,并且是人工设计的。本篇论文提出一种新型的左右对比重复模型,将左右一致性检测与视差估计结合起来。在每个重复的步骤中,模型都生成左右两幅视差图,然后采用在线的左右对比来确定那些可能包含错误标签像素的误匹配区域。引入了一个柔性的注意力机制,用学习到的误差图更好地引导模型,使其在下一个重复步骤中,有选择性地关注于改善不可靠区域的视差计算。通过这种方法,得到的视差图可以逐步进行改善。
1. 介绍
利用左右两个视角下的视差信息去核对左右共同的一致性是确定不可靠区域的有效方式。在此基础上,立体视差估计可以有选择性的改善那些误匹配区域。传统的左右一致性检测是作为视差图生成后的离线的后处理步骤。不仅如此,它是高度人工设计的和方式固定的,他只能够通过插入固定的局部邻域内的像素来代替那些误差超过阈值的误匹配像素点。由于局部特征质量较低,并且代价计算中有潜在误差,因此这种方法的到的结果是不可靠的。
为了解决上述问题,我们提出了左右对比重复模型(LRCR)将左右一致性检测和视差生成整合在一个流程中,这使得它们可以相互促进,并且能够有效的解决离线左右一致性检测的缺点。按照重复神经网络(RNN)的模式搭建的LRCR模型,能够利用学习到的左右一致性来逐步改善视差估计结果。通过这种方式,左右两幅视差图都嫩顺利地得到稳定且精确的预测结果。LRCR 创造性的引入一种配合重复学习的注意力机制,同步地进行左右一致性检测和为视差优化选择合适的区域。具体来说,在每个重复步骤中,模型同步处理左右两幅图像,并得到它们各自的视差图和对应的误差图。误差图反映了获取到的视差的准确性,通过参考另一视角的视差图。将误差图作为柔性注意力引导图,模型在其引导下将更多地关注潜在的错误预测区域。这样的错误检测自我修正的机制使得该模型能够自动的改善视差估计结果,且不需要额外的对错误匹配区域进行监督。除此之外,将左右一致性检测整合到模型训练中,可以在训练和应用阶段达到令人满意的一致性。所以,LRCR 能够用一种更为直接的方式来改善视差图的估计结果。
本文提出的左右对比重复模型是基于卷积长短期记忆网络(ConvLSTM)设计的,考虑到其拥有较强的从多视差获取上下文信息的能力。除此之外,储存在LSTM记忆单元中的历史视差能够自动的流向下一步骤,并提供更好的视差估计,这又助于在下一阶段获得更高质量的视差图。
简言之,我们的贡献有如下几个方面:
- 我们提出了新型的深度重复模型为更好的解决立体视差估计问题。这个模型通过有效的学习和利用左右一致性来逐步得到一致性更好的视差图。据我们所知,这是第一个整合了左右一致性检测和视差估计的端到端网络。
- 引入一种柔性注意力机制来引导网络自动的关注不可靠区域,通过在估计过程中在线的左右对比来学习。
- 我们在各个数据集上做了大量实验来验证我们所提出的方法的有效性,结果显示其能够在这些排行榜中占据较前的位置。
2. 相关工作
传统方法…
深度学习的方法…Guney等人引入了带有目标物体分类的特殊的视差估计方法。Taniai 等人对局部视差平面上的每个像素进行超参数化,并建立了MRF来估算视差图。
端到端的学习网络…
CNN也利用局部信息来提高置信度预测的准确性。Haeusler 等人将不同的置信度测量方法与随机森林分类器(random forest classifier)来测算视差图的可靠性。Seki 和 Pollefeys 通过从左右视差图中提取图块来估算置信度图。 Poggi 和 Mattoccia 利用一个深度网络从一幅视差图中估计置信度。
有的方法考虑到了结合误差的分布和改善,也有方法将左右误匹配区域作为潜在的错误区域。然而这些方法只用于视差优化,并且需要额外的视差结果作为输入。与此相比,我们的方法是将视差估计与左右一致性检测结合到一起,而不需要额外的视差输入。
3. LRCR视差估计
本文关注对于给定的立体图像对生成对应的视差图。在给定左右输入图像的情况下,我们的目标是得到对应的视差结果。本文提出的左右对比重复模型将每个像素在所有视差可能范围之内的匹配代价卷作为输入。输出的视差图包含每个像素的视差值。匹配代价卷是一个三维的张量
H
×
W
×
d
m
a
x
H\times W\times d_{max}
H×W×dmax。匹配代价卷中的每一个像素表示左图中以点
p
=
(
x
,
y
)
p=(x,y)
p=(x,y)为中心的图块和右图中以
p
d
=
(
x
−
d
,
y
)
pd=(x-d,y)
pd=(x−d,y)为中心的图块之间的匹配代价,范围包括左图中的每一个点
p
p
p和所有的可能视差值
d
d
d。
我们采用恒定的高速网络来生成匹配代价卷作为我们LRCR模型的输入。这个恒定高速网络是由许多已知真实视差的小图块训练得到的。它采用了一个siamese结构,每个分支分别处理左右两幅图像并生成各自的描述向量。每个分支都包含几个权值共享的高速残差块。接下来,两个路径用于比较两个图块来获得匹配代价卷。第一个路径,两个特征向量级联为一个,通过几个全连接层利用交叉熵损失函数获得一个二元的结果。第二个路径使用绞链损失函数处理两个特征向量的点乘积。两条路径获得的匹配代价卷都可以输入到LRCR模型中获得视差估计。其中,全连接层由1*1的卷积层代替。将整幅图像作为输入,恒定高速网络的输出的匹配代价卷具有相同的空间维度。
3.1 LRCR模型
在匹配代价卷的基础上,传统的立体匹配流程采用几个常规的技术将邻域内像素点的信息结合起来获得平滑的匹配代价。然后利用简单的“赢家通吃”原则来计算每个像素点的视差。然而,这些流程是人为设计的,并且只用了浅层函数来从邻域像素中获得上下文信息。
相反,我们提出一个深层网络,可以自动的学习基于匹配代价卷的每个像素邻域内的局部环境信息。特别的,LRCR 通过学习去评估左右的一致性来同步提高两个视角的视差结果。按照RNN模式搭建的网络,LRCR 可以收到之前预测的视差结果并有选择性的学习左右图中潜在的误匹配区域来替改善视差结果。随着左右图像一致性增强,将有助于视差图的预测。
图1. LRCR模型的说明。在每一步中,都有左右两个堆叠的ConvLSTMs网络,输入的是对应的匹配代价卷和上一步得到的误差图(第一步只有匹配代价卷)。然后,计算得到的视差图进行比较得到每个视角下的误差图,将误差图输入下一步的模型中,作为一种柔性注意力机制引导模型有选择性的改善特定区域。
图1展示了本文提出的LRCR模型,其包含两个平行的堆叠ConvLSTM网络。左侧网络将左图到右图的匹配代价作为输入,生成左视角的视差图。相同的,右侧网络获得右视角的视差图。在每一个重复的步骤中,两个堆叠的ConvLSTM网络分别处理输入的两个匹配代价卷并生成对应的视差图。得到的两个视差图分别转换为对方的坐标系,用于相互比较。令
D
l
e
f
t
,
t
D_{left,t}
Dleft,t和
D
r
i
g
h
t
,
t
D_{right,t}
Dright,t分别表示第t步获得的左右视差图。
D
r
i
g
h
t
,
t
D_{right,t}
Dright,t可以被转换为左视角下的坐标,得到由右视角下转换的到的视差图
D
l
e
f
t
,
t
′
D_{left,t}^{'}
Dleft,t′。然后可以对
D
l
e
f
t
,
t
′
D_{left,t}^{'}
Dleft,t′和
D
l
e
f
t
,
t
D_{left,t}
Dleft,t的每个像素进行比较。在比较时,将
D
l
e
f
t
,
t
′
D_{left,t}^{'}
Dleft,t′和
D
l
e
f
t
,
t
D_{left,t}
Dleft,t输入到几个卷积层和池化层中,得到左视角下的视差误差图。将该误差图作为一个柔性注意力引导图输入到下一步骤中,LRCR 将在下一步中有选择性的关注左右误匹配区域。
学习生成误差图并不是一个简单的任务。另一个选择是将预测值与对应真实视差值之间差值作为目标进行有监督的回归。为了提高鲁棒性并解决前述问题,我们并未在生成误差图的过程中增加监督,为了防止左右对比分支只学习了简单的视差的差值。而是使网络学习到需要在下一步中更多关注的区域,这有助于捕捉邻域内视差值之间的潜在局部关系。不仅如此,我们还提供一个柔性的注意力引导图,它的值将作为下一步骤预测的置信度或注意力权重,这不能简单的理解为是两个视差图之间的差值。学习到的误差图可以提供可靠的由于重复纹理,遮挡像素和深度不连续导致的误匹配区域的检测结果(如图2所示)。对于右图来说,模型采用相同的处理过程,包括左视差图的转换图,右视角的误差图,并利用该误差图作为下一步右视差图预测的注意力引导图。
图2.从上到下依次是:输入的图像,预测视差图,学习到的注意力引导图和真实误差图
3.2 网络结构
我们详细介绍LRCR模型的结构,包括堆叠的ConvLSTM和左右对比分支。
3.2.1 堆叠的ConvLSTM网络
ConvLSTM 网络在编码上下文空间信息和减少模型冗余方向相对于传统的全卷积LSTM 网络具有一定优势。LRCR 模型包含两个平行的ConvLSTM网络,分别处理左右两个视角的输入。堆叠ConvLSTM 网络的输入包括匹配代价卷和上一步生成的对应的误差图。匹配代价卷是三维的张量
H
×
W
×
d
m
a
x
H\times W\times d_{max}
H×W×dmax,误差图是二维图
H
×
W
H\times W
H×W。首先将两者串联起来组成一个张量
H
×
W
×
(
d
m
a
x
+
1
)
H\times W\times (d_{max}+1)
H×W×(dmax+1)。ConvLSTM 与通常的全连接LSTM 相似,需要先对二维图像进行空间卷积来编码空间信息。细节计算过程如下:
此处,*表示空间卷积操作,
X
t
X_t
Xt是第t步中输入的由匹配代价卷和误差图构成的张量。
H
t
−
1
H_{t-1}
Ht−1和
C
t
−
1
C_{t-1}
Ct−1是分别第(t-1)步的隐藏状态和记忆单元。
i
t
i_t
it,
f
t
f_t
ft和
o
t
o_t
ot是ConvLSTM的门。将一个ConvLSTM的隐藏状态输入另一个ConvLSTM中就构成了堆叠的ConvLSTM网络。
最后一个ConvLSTM的隐藏状态张量经过一个简单的卷积层得到代价张量
H
×
W
×
d
m
a
x
H\times W\times d_{max}
H×W×dmax,对每个值取负数得到得分张量。对得分张量进行softmax正则化得到所有像素每个视差值可能性的概率张量。最终,利用一个可微分的argmin层通过对视差值与其概率的加权求和得到预测的视差。数学上的表示,预测视差值
d
∗
d^*
d∗,一个像素在每个可能的视差值上的代价为
c
d
c_d
cd
d
∗
=
∑
d
=
0
d
m
a
x
d
×
σ
(
c
d
)
d^*=\sum ^{d_{max}}_{d=0}d\times \sigma(c_d)
d∗=d=0∑dmaxd×σ(cd)
#####3.2.2 左右对比分支
图3. 左右对比分支网络图示。预测的视差图先经过坐标变换得到对应的视差图。然后
D
L
D_L
DL和
D
L
′
D^{'}_L
DL′输入到简单的网络中学习到左图的误差图
E
L
E_L
EL。对于右图作相同处理
图3展示了左右对比分支的结构。分别将ConvLSTM网络得到左右视差图输入左右对比分支网络。该网络首先将两幅视差图转换为对方的坐标系,接着初始视差图和转换得到的是视差图级联起来输入到一个由几个简单的卷积层和sigmoid转换层构成的分支网络中,来获得对应的误差图。该误差图在下一步骤中作为一个柔性注意力引导图为模型指引处需要注意的区域。
3.3 训练
在左右两个视角训练的每一步都利用真实视差图进行监督。预测视差值与真实视差值之间差值的
l
1
l_1
l1正则化结果作为训练损失。每个样本的所有标记像素的平均损失都达到最优化。损失函数的数学表达式如下:
L
=
1
N
∑
b
=
1
N
∥
d
n
−
d
n
∗
∥
1
L=\frac{1} N\sum ^N_{b=1}\left\|d_n-d^*_n \right\|_1
L=N1b=1∑N∥dn−dn∗∥1
式中,
N
N
N表示样本中标记像素的总数,
d
n
d_n
dn和
d
n
∗
d^*_n
dn∗分别表示第n个像素的预测视差值和真实视差值。
由于模型较为复杂,我们分成两个阶段来训练LRCR模型。我们让第一阶段训练模型生成可靠的初始视差图,第二阶段训练模型逐步改善初始估计值。在第一阶段,我们只训练一次堆叠ConvLSTM网络。实际上堆叠的ConvLSTM网络只是接受原始的匹配代价卷并通过空间卷积来池化局部环境信息来预测视差值。在这一级中,
H
t
−
1
H_{t-1}
Ht−1和
C
t
−
1
C_{t-1}
Ct−1设为零张量。因此只有
W
x
i
W_{xi}
Wxi,
W
x
f
W_{xf}
Wxf和
W
x
c
W_{xc}
Wxc在这一级中被训练,其余权重值未被训练。这一级是LRCR模型的无重复版本。第二级中,LRCR模型的无重复版本的训练过程作为完整模型的初始条件。在这一级中,所有的权重值都进行训练。
4. 实验
我们在KITTI2015,SceneFlow 和 Middlebury 三个最大且最具挑战性的数据集上评估了我们的LRCR模型。在所有实验中,通过LRCR模型的到的视差图都进行了中值滤波和双边滤波来改善结果。
####4.1 KITTI2015上的实验
实施细节。恒定的高速网络用于学习匹配代价卷,作为LRCR模型的输入。他有两个版本,混合版和快速版。混合版包括两个训练路径,交叉熵损失函数和绞链损失函数都用于匹配代价卷的学习。快速版只是用绞链损失函数处理两个路径的点乘积。最大视差值设置为228。在我们的LRCR模型中每个堆叠的ConvLSTM网络都包含四个ConvLSTM层,其输出通道数分别为
d
m
a
x
d_{max}
dmax,
2
d
m
a
x
2d_{max}
2dmax,
2
d
m
a
x
2d_{max}
2dmax,
d
m
a
x
d_{max}
dmax,卷积核为33,采用11的填充来保持特征图的尺寸。在四个ConvLSTM层之后,有额外的三个11的卷积层和一个可微分的argmin层.三个卷积层的输出通道数分别为
d
m
a
x
d_{max}
dmax,
d
m
a
x
d_{max}
dmax和
d
m
a
x
d_{max}
dmax。左右对比分支由两个33的带有1*1填充的卷积层构成。
我们第一步训练LRCR模型的无重复版本。这一级训练15个周期。初始学习率为0.01,每5个周期缩小10倍。第二级中,训练好的LRCR模型的无重复版本被用于权重的初始化。我们的重复模型包含5个重复的步骤。我们在这一级训练30个周期。初始学习率为0.01,每10个周期缩小10倍。
结果。在恒定高速网络获得的匹配代价卷的基础上,我们可以直接采取“赢家通吃”策略,或者寻测LRCR模型的不同版本来获得视差图。我们比较了WTA,全LRCR和他的多个变种包括无重复版本,无对比版本和无注意力版本。无重复版本就是3.3节提到的只有一步的网络。无对比版本在每个重复步骤中都不对左右视差图进行对比。而是,直接在每一步中根据左图的匹配代价卷来更新左侧视差图。无注意力版本不包含左右对比分支网络来学习注意力引导图。而是用两个视差图的差值来代替学习到的注意力引导图。
表1 LRCR模型的不同版本在KITTI2015数据集上的立体匹配结果
表1展示了LRCR模型在KITTI2015数据集上的表现。可以看到采取“赢家通吃”策略的方法闭锁有的深度网络表现都差。所有的重复版本最后一步的结果都比无重复版本要好。重复模型前几步的结果要略逊于无重复版本。原因可能是重复版本需要全步骤进行优化,后面几步的梯度要反向传递到前几步,使得前几步的视差预测精度较差。在三个重复版本中,完整的LRCR模型表现的最好。无对比版本由于缺少对方视角的引导信息所以结果最差。
图4 输入图像,预测视差图,真实误差图,学习到的注意力引导图
为了更好的说明本文提出的LRCR 模型的有效性,我们在图4中展示不同步骤中学习到的注意力引导图和真实误差图。真实误差图是预测视差图与真实视差图之间的差值。正如我们所见,学习到的注意力引导图与真实误差图之间有着较高的相关性。学习到的注意力引导图和真实视差图都突出了一些容易出错的区域,包括反光区域,遮挡物体和复杂边界地区。错误预测区域和左右误匹配区域之间的一致性对于LRCR模型的设计至关重要。这使得通过左右对比分支网络来定位错误标记像素成为了可能,而不需要利用对错误标记区域进行监督。随着重复次数增多,学习到的注意力引导图中高亮的区域越来越少,说明左右两个视角的视差图之间的一致性越来越强。
表2 LRCR模型和其他方法的匹配结果对比
我们也将本文的方法与其他优秀的方法进行比较 。排名较高的方法如表2所示。因为我们匹配代价卷的计算方法是基于
λ
−
R
e
s
M
a
t
c
h
\lambda-ResMatch
λ−ResMatch网络的,我们也展示了混合版本和快速版本的对比结果。从表2中可知,LRCR模型的表现要优于运行时间相近的
λ
−
R
e
s
M
a
t
c
h
\lambda-ResMatch
λ−ResMatch网络。有必要提及一下,主要的计算时间耗费在了所有视差可能的匹配代价计算上,尤其是当用全卷积层来生成匹配代价时。
端到端的模型要稍微优于LRCR模型,但是它们全部需要巨大的训练集。这种需求是由于它们要用非常深的网络来实现端到端的视差预测。例如CRL模型包含47个卷积层和74.95M个学习参数。相比之下,我们的LRCR模型只有30M个学习参数,包含用于生成匹配代价卷的混合版本的恒定高速网络和用于视差预测的堆叠的ConvLSTM网络。我们声明利用更好的网络来学习匹配代价将有可能使LRCR实现更好的视差预测结果,例如将LRCR模型嵌入到一个现有的端到端网络中。
5. 结论
在这篇论文中,我们提出了一个新型的左右对比重复模型(LRCR),它能够将左右一致性检测和视差估计结合起来。我们还引入了一个柔性注意力机制来更好的引导模型本身有选择性的关注不可靠的区域。通过这种方法,LRCR模型能够逐步改善视差估计效果。我们在KITTI2015,SceneFlow 和 Middlebury 上做了大量实验,表明LRCR模型要优于传统采用离线左右一致性检测的方法,并且得到了很有竞争力的结果。
原文链接:
代码链接:未开源