论文《Group-wise Correlation Stereo Network》的完整翻译,如有不当之处,敬请评论指出!蟹蟹!~
发表:CVPR2019
代码:https://github.com/xy-guo/GwcNet
立体匹配估计矫正过的图像对之间的视差,这对深度感测,自动驾驶和其他相关任务非常重要。先前的工作建立了在所有视差水平上具有交叉相关或串联左右特征的代价量,然后利用2D或3D卷积神经网络来回归视差图。在本文中,我们建议通过分组相关来构建代价量。左边特征和右边特征沿着通道维度被分成组,并且在每个组之间计算相关图以获得多个匹配代价提议,然后将其打包到代价量中。分组相关为测量特征相似性提供了有效的表示,并且不会丢失过多的信息,如完全相关。与以前的方法相比,它在减少参数时也能保持更好的性能。在先前的工作中提出的3D堆叠沙漏网络被改进以提高性能并降低推理计算成本。实验结果表明,我们的方法在Scene Flow,KITTI 2012和KITTI 2015数据集上优于以前的方法。该代码可从https://github.com/xy-guo/GwcNet获得
精确的深度感应是许多计算机视觉应用的核心,例如自动驾驶,机器人导航和浅景深图像合成。 立体匹配属于被动深度感测技术,其通过匹配由两个相机捕获的矫正过的图像对的像素来估计深度。 可以通过Fl / d将像素的视差d转换为深度,其中F表示相机镜头的焦距,并且l是两个相机中心之间的距离。 因此,深度精度随着视差预测的精度而提高。
传统的立体声流水线通常包括以下四个步骤的全部或部分,匹配代价计算,代价聚合,视差优化和后处理[18]。 匹配代价计算为左图像块和可能的对应右图像块提供初始相似性度量,这是立体匹配的关键步骤。 一些常见的匹配代价包括绝对差值(SAD),平方差和(SSD)和归一化互相关(NCC)。 代价聚合和优化步骤结合了上下文匹配代价和正则化项,以获得更强大的视差预测。
基于学习的方法探索用于匹配代价的不同特征表示和聚合算法。 DispNetC [14]从左右图像特征计算相关体积,并利用CNN直接回归视差图。 GC-Net [6]和PSMNet [2]构建基于串联的特征量,并结合3D CNN来聚合上下文特征。 还有一些作品[1,19]试图汇总来自多个手工制作的匹配代价提案的证据。 然而,上述方法有几个缺点。 完全相关[14]提供了一种测量特征相似性的有效方法,但它丢失了很多信息,因为它只为每个视差水平产生一个单通道相关图。 级联卷[6,2]在以下聚合网络中需要更多参数来从头开始学习相似性度量函数。 [1,19]剧照利用传统的匹配代价,无法进行端到端的优化。
在本文中,我们提出了一种简单而有效的操作,称为组相关,以解决上述缺点。提取并连接多级一元特征以形成左右图像对的高维特征表示fl,fr。然后,沿着通道维度将特征分成多个组,并且在所有视差水平上将第i个左特征组与对应的第i个右特征组互相关,以获得分组相关图。最后,打包所有相关图以形成最终的4D代价量。一元特征可以被视为结构化向量组[25],因此特定组的相关图可以被视为匹配代价提议。这样,与[6,2]相比,我们可以利用传统互相关匹配代价的功率,为后续的3D聚合网络提供更好的相似性度量。多重匹配代价建议也避免了信息丢失,如完全相关[14]。
PSMNet [2]中提出的3D堆叠沙漏聚合网络经过修改,以进一步提高性能并降低推理计算成本。 在每个沙漏模块内的快捷连接中采用1×1×1个3D卷积,而不会增加太多的计算成本。
我们的主要贡献可归纳如下。 1)我们提出分组相关性来构建代价量以提供更好的相似性度量。 2)修改堆叠的3D沙漏细化网络,以在不增加推理时间的情况下提高性能。 3)我们的方法在Scene Flow,KITTI 2012和KITTI 2015数据集上实现了比以前方法更好的性能。 4)实验结果表明,在限制3D聚合网络的计算成本时,我们提出的网络的性能降低比以前的PSMNet小得多,这使得分组相关成为在实时立体网络中实现的有价值的方式。
通常,传统的立体匹配包括以下四个步骤的全部或部分:匹配代价计算,代价聚合,视差优化和一些后处理步骤[18]。在第一步中,针对所有可能的视差计算所有像素的匹配代价。常见匹配代价包括绝对差之和(SAD),平方差之和(SSD),归一化互相关(NCC)等。本地方法[30,27,15]探索了将匹配代价与邻居像素聚合的不同策略,并且通常利用赢者通吃(WTA)策略来选择具有最小匹配代价的视差。相比之下,全局方法最小化目标函数以求解最优视差图,其通常考虑匹配代价和平滑先验,例如置信传播[23,9]和图切割[11]。半全局匹配(SGM)[4]用动态规划近似全局优化。可以组合本地和全局方法以获得更好的性能和稳健性。
除了手工制作的方法,研究人员还提出了许多学到的匹配代价[29,13,21]和代价聚合算法[1,19]。 Zbontar和Lecun [29]首先提出使用神经网络计算匹配代价。 然后使用传统的基于交叉的代价聚合和半全局匹配来处理预测的匹配代价以预测视差图。 通过关联一元特征,在[13]中加速了匹配代价计算。 Batsos等。 建议CBMV [1]结合来自多个基本匹配代价的证据。 Schonberger等。 [19]提出用随机森林分类器对扫描线匹配代价候选进行分类。 Seki等人。 建议SGM-Nets [20]为SGM提供学术上的处罚。 Knobelreiter等。 [10]提出结合CNN预测的相关匹配代价和CRF来整合远程交互。
在DispNetC之后(Mayer等人[14]),有很多工作直接从相关代价量中回归差异图[17,12,22,26]。 给定左和右特征图fl和fr,计算每个视差水平d的相关代价量,
其中h·,·i是两个特征向量的内积,Nc表示通道数。 CRL [17]和iResNet [12]遵循DispNetC的思想,使用堆栈细化子网络来进一步提高性能。 还有一些工作集成了边缘特征[22]和语义特征[26]等附加信息。
最近的工作采用了基于串联的特征量和3D聚合网络,以实现更好的上下文聚合[6,2,28]。 肯德尔等人。 提出了GC-Net [6]并且是第一个使用3D卷积网络来汇总代价量的背景的人。 左侧和右侧特征fl,fr不是直接给出代价量,而是连接在一起形成4D特征量,
从邻居像素和具有3D卷积网络的视差聚合上下文特征以预测视差概率量。 继GC-Net之后,Chang等人。 [2]提出了金字塔立体匹配网络(PSMNet),其具有空间金字塔池模块和堆叠的3D沙漏网络,用于代价量细化。 Yu等人。 [28]建议生成并选择多个代价聚合提案。 钟等人。 [31]提出了一种自适应递归立体模型来处理开放世界的视频数据。
LRCR [5]利用左右一致性检查和循环模型来汇总从[21]预测的代价量和精确的不可靠视差预测。 还有其他工作专注于实时立体声匹配[7]和应用友好的立体声[24]。
我们提出了分组相关立体网络(GwcNet),它扩展了PSMNet [2],具有分组相关代价量和改进的3D堆叠沙漏网络。 在PSMNet中,必须通过3D聚合网络从头开始学习级联特征的匹配代价,这通常需要更多的参数和计算成本。 相比之下,完全相关[14]提供了一种通过点积测量特征相似性的有效方法,但它丢失了很多信息。 我们提出的分组相关性克服了这两个缺点,并为相似性度量提供了良好的特征。
所提出的分组相关网络的结构如图1所示。该网络由四部分组成,一元特征提取,代价量构建,三维聚合和视差预测。 表1列出了代价量,堆积沙漏和输出模块的详细结构。
图1:所提出的分组相关网络的流水线。 整个网络由四部分组成,一元特征提取,代价量构建,三维卷积聚合和视差预测。 代价量分为两部分,级联量(Cat)和分组相关量(Gwc)。 连接卷是通过连接压缩的左右特征构建的。 分组相关体积在3.2节中描述。
表1:模块的结构细节。 H,W表示输入图像的高度和宽度。 S1 / 2表示卷积步幅。 如果未指定,则每个3D卷积都具有批量归一化和ReLU。 *表示不包括ReLU。 **仅表示卷积。
对于特征提取,我们采用PSMNet [2]中使用的类似ResNet的网络,具有半扩张设置,没有空间金字塔池模块。 conv2,conv3和conv4的最后一个特征映射被连接起来形成320通道一元特征映射。
cost-volume由两部分组成,连接volume和分组相关volume。 级联volume与PSMNet [2]相同,但通道较少,在此之前,一元特征被压缩为12个通道,带有两个卷积。 所提出的的分组相关volume将在3.2节中详细描述。 然后将这两个volume连接作为3D聚合网络的输入。
3D聚合网络用于聚合来自相邻差异和像素的特征以预测精炼的cost-volume。 它由一个预沙漏模块和三个堆叠的3D沙漏网络组成,以规范feature volume。 如图2所示,预沙漏模块由四个3D卷积组成,具有批量归一化和ReLU。 遵循三个堆叠的3D沙漏网络以通过编码器 - 解码器结构来细化低纹理模糊度和遮挡部分。 与[2]的3D聚合网络相比,我们有几个重要的修改,以提高性能和提高推理速度,详见第3.3节。
图2:我们提出的3D聚合网络的结构。 该网络包括一个沙漏前模块(开始时为四个卷积)和三个堆叠的3D沙漏网络。 与PSMNet [2]相比,我们删除了不同沙漏模块和输出模块之间的快捷连接,因此在推理过程中可以删除输出模块0,1,2以节省时间。 1×1×1 3D卷积被添加到沙漏模块内的快捷方式连接中。
预沙漏模块和三个堆叠的3D沙漏网络连接到输出模块。 每个输出模块预测视差图。 输出模块的结构和损耗函数在3.4节中描述。
左一元特征和右一元特征由具有Nc通道的fl和fr表示,并且是原始图像的1/4。 在先前的工作[14,1,6,2]中,左和右特征在不同的视差水平上相关或连接以形成cost-volume。 但是,相关量和连接量都有缺点。 完全相关提供了一种测量特征相似性的有效方法,但它丢失了很多信息,因为它只为每个视差水平产生单通道相关图。 级联量不包含有关特征相似性的信息,因此在以下聚合网络中需要更多参数来从头开始学习相似性测量功能。 为了解决上述问题,我们通过结合级联量和相关量的优点来提出分组相关。
分组相关背后的基本思想是将特征分成组并逐组计算相关图。 我们将一元特征的通道表示为Nc。 所有通道沿通道维度均匀分为Ng组,因此每个特征组具有Nc / Ng个通道。 第g个特征组 由原始特征fl和fr的 第 个通道组成。 然后将分组相关计算为
其中<,>是内积。 注意,针对所有特征组g和所有视差水平d计算相关性。 然后,将所有相关图打包成形状 的cost-volume,其中Dmax表示最大视差,Dmax / 4对应于特征的最大视差。 当Ng = 1时,分组相关变为完全相关。
可以将分组相关量Cgwc视为Ng成本量提议,并且从相应的特征组计算每个提议。 紧跟着3D聚合网络聚合多个候选者以回归视差图。 群组关联成功地利用了传统相关匹配代价的功能,并为3D聚合网络提供了丰富的相似性度量特征,从而减轻了参数需求。 我们将在4.5节中展示我们探索减少3D聚合网络的信道,并且我们提出的网络的性能降低远小于[2]。 我们提出的分组相关体积需要较少的3D聚合参数以获得有利的结果。
为了进一步提高性能,可以将组相关cost-volume与连接volume进行组合。 实验结果表明,分组相关volume和连接volume相互补充。
在PSMNet [2]中,提出了一种堆叠沙漏架构来学习更好的上下文特征。 基于网络,我们应用了几个重要的修改,使其适合我们提出的群组相关性并提高推理速度。 所提出的3D聚合的结构如图2和表1所示。
首先,我们为前沙漏模块的功能添加一个辅助输出模块(输出模块0,参见图2)。 额外的辅助损耗使网络在较低层学习更好的特征,这也有利于最终预测。
其次,去除了不同输出模块之间的剩余连接,因此在推理期间可以移除辅助输出模块(输出模块0,1,2)以节省计算成本。
第三,将1×1×1 3D卷积添加到每个沙漏模块内的快捷方式连接中(参见图2中的虚线),以在不增加计算成本的情况下提高性能。 由于1×1×1 3D卷积与3×3×3卷积相比仅具有1/27乘法运算,因此运行速度非常快,时间可以忽略不计。
对于每个输出模块,采用两个3D卷积来输出1通道4D体积,然后对体积进行上采样并将其转换为沿着视差维度具有softmax函数的概率体积。 详细结构如表1所示。对于每个像素,我们有一个Dmax长度向量,其中包含所有视差水平的概率p。 然后,由软argmin函数[6]给出的视差估计d *,
其中k和pk表示可能的视差水平和相应的概率。 来自四个输出模块的预测视差图表示为 。 最后的损失是由,
其中λi表示第i个视差预测的系数,d *表示ground truth视差图。 平滑的L1损失计算如下,
在本节中,我们将评估我们在SceneFlow数据集[14]和KITTI数据集[3,16]上提出的立体模型。 我们提出消融研究来比较不同的模型和不同的参数设置。 数据集和实现细节在4.1节和4.2节中描述。 第4.3节探讨了分组相关性的有效性和最佳设置。 第4.4节讨论了新型叠层沙漏模块的性能改进。 当计算成本在第4.5节中受到限制时,我们还探讨了分组相关的性能。
SceneFlow数据集是合成立体数据集的数据集集合,由Flyingthings3D,Driving和Monkaa组成。 数据集提供35,454次训练和4,370次测量大小为960×540的图像,并具有准确的ground truth。 我们使用SceneFlow数据集的Finalpass,因为它包含更多的运动模糊和散焦,更像真实世界的图像而不是Cleanpass。 KITTI 2012和KITTI 2015正在推动场景数据集。 KITTI 2012提供194个训练图像对和195个测试图像对,KITTI 2015提供200个训练图像对和200个测试图像对。 两个数据集都为训练图像提供稀疏的LIDAR ground truth视差图。
对于SceneFlow数据集,评估度量通常是终点误差(EPE),即以像素为单位的平均视差误差。 对于KITTI 2012,报告了非遮挡(Noc)和所有(所有)像素的错误像素和平均终点误差的百分比。 对于KITTI 2015,针对背景,前景和所有像素评估视差异常值D1的百分比。 异常值被定义为其视差误差大于max(3px,0.05d *)的像素,其中d *表示ground truth。
我们的网络是用PyTorch实现的。 我们使用Adam [8]优化器,β1= 0.9,β2= 0.999。 批量大小固定为16,我们使用8个Nvidia TITAN Xp GPU训练所有网络,每个GPU上有2个训练样本。 四个输出的系数设定为λ0= 0.5,λ1= 0.5,λ2= 0.7,λ3= 1.0。
对于SceneFlow数据集,我们总共训练16个周期的立体网络。 初始学习率设定为0.001。 它在周期10,12,14后各缩小2倍,最后结束于0.000125。 为了测试SceneFlow数据集,将大小为960×540的完整图像输入到网络以进行视差预测。 我们在SceneFlow数据集的PSMNet [2]之后将最大视差值设置为Dmax = 192。 为了评估我们的网络,我们删除了测试集中有效像素小于10%(0≤d 对于KITTI 2015和KITTI 2012,我们微调了在SceneFlow数据集上预训练的网络需要额外的300个周期。 初始学习率为0.001,并且在第200个周期之后缩小10倍。为了在KITTI数据集上进行测试,我们首先在图像的顶部和右侧填充零以使输入大小为1248×384。 在本节中,我们将探讨分组相关性的有效性和最佳设置。 为了证明所提出的分组相关体积的有效性,我们在Base模型上进行了几次实验,该模型去除了堆叠的沙漏网络,并且仅保留了沙漏前模块和输出模块0. Cat-Base,Gwc- Base和Gwc-Cat-Base是仅具有连接卷,仅有组相关卷或两个卷的基本模型。 表2中的实验结果表明,Gwc Base网络的性能随着组数的增加而增加。 当组号大于40时,性能改善变得很小,终点误差保持在1.2px左右。 考虑到内存使用和计算成本,我们选择40个组,每个组有8个通道作为我们的网络结构,这对应于表2中的Gwc40-Base模型。 除Gwc1-Base外的所有Gwc-Base模型都优于使用连接volume的Cat-Base模型,后者显示了分组相关性的有效性。 Gwc40模型将终点误差减少0.1px,将3像素误差率减少0.75%,时间消耗几乎相同。 通过将分组相关volume与级联volume相结合,可以进一步提高性能(参见表2中的Gwc40-Cat24 Base模型)。 分组相关可以提供准确的匹配特征,并且级联volume提供互补的语义信息。 在本文中,我们对[2]中提出的堆叠沙漏网络进行了若干修改,以提高代价量聚合的性能。 从表2和表3中我们可以看出,与Cat64-original-hg模型(带沙漏模块)相比,具有建议沙漏网络(Cat64)的模型在SceneFlow数据集上增加了7.8%,在KITTI 2015上增加了5.8% 在[2])。 单个Nvidia TITAN Xp GPU上640×480输入的推理时间也减少了42.7ms,因为辅助输出模块可以在推理期间被移除以节省时间。 我们探索通过减少3D聚合网络中的通道来限制计算成本,以验证所提出的分组组相关性的有效性。结果显示在图3中。通道的基本数量从原来的32修改为2,并且成本量和所有3D卷积的通道以相同的因子减少。随着通道数量的减少,我们的具有分组相关volume(Gwc-Cat)的模型比仅具有连接volume(Cat)的模型表现更好。随着更多通道的减少,性能增益会扩大。其原因在于,群组相关性为3D聚合网络提供了良好的匹配代价表示,而仅具有连接volume作为输入的聚合网络需要从头开始学习匹配相似度函数,这通常需要更多的参数和计算成本。结果,所提出的分组相关可能是在计算成本有限的实时立体网络中实现的有价值的方法。 对于KITTI stereo 2015 [16],我们将训练集分为180个训练图像对和20个验证图像对。 由于验证集上的结果不稳定,我们对预训练模型进行了3次微调,并选择具有最佳验证性能的模型。 从表3中,Gwc40-Cat24和Gwc40的性能优于没有分组相关的模型(Cat64,Cat64-original-hg)。 我们将Gwc40模型(没有连接卷)和最低验证错误提交给评估服务器,测试集上的结果如表4所示。我们的模型超过PSMNet [2] 0.21%和SegStereo [26] D1全部为0.14%。 对于KITTI 2012 [3],我们将训练集分为180个训练图像和14个验证图像对。 验证集上的结果如表3所示。我们将验证集上的最佳Gwc40-Cat24模型提交给评估服务器。 测试集的评估结果如表5所示。我们的方法超过PSMNet [2],3像素误差为0.19%,平均差异误差为0.1px。 在本文中,我们建议GwcNet估计立体匹配的视差图,其中包含分组相关以建立代价量。 分组关联卷为3D聚合网络提供了良好的匹配特性,提高了性能,降低了聚合网络的参数要求。 我们发现,当计算成本有限时,我们的模型比以前的基于串联体积的立体声网络获得更大的增益。 我们还改进了堆叠沙漏网络,以进一步提高性能并缩短推理时间。 实验证明了我们提出的方法对SceneFlow数据集和KITTI数据集的有效性。 图4:SceneFlow[14],KITTI 2012 [3]和KITTI 2015 [16]数据集的测试集上的深度可视化结果。 从左到右,输入左图像,预测视差图和误差图。4.3、组相关的有效性
表2:在SceneFlow数据集的最终通过中提出的网络的消融研究结果[14]。 Cat,Gwc,Gwc-Cat仅表示连接volume,仅表示组相关volume,或两者都有。 Base表示没有堆叠沙漏网络的网络变体。 时间是单个Nvidia TITAN Xp GPU上480×640输入的推理时间。 PSMNet [2]的结果是使用我们的批量大小,评估设置的公布代码进行训练,以进行公平比较。4.4、改进的堆叠沙漏
表3:我们的网络在KITTI 2012和KITTI 2015验证集上的消融研究结果。4.5、限制3D网络的计算成本
图3:我们的模型当通道数量减少时,Gwc-Cat的性能比Cat高得多。 具有32个基本通道的模型对应于Cat64模型(连接volume)和Gwc40-Cat24模型(分组相关volume和连接volume)。 cost-volume和所有3D卷积的通道减少与基本通道相同的因子。4.6、KITTI2012和KITTI2015
表4:KITTI 2015测试集结果。 该数据集包含200个用于训练的图像和200个用于测试的图像。
表5:KITTI 2012测试集结果。 该数据集包含194个用于训练的图像和195个用于测试的图像。5、结论
(a) SceneFlow数据集的可视化结果。