传统的立体匹配算法多围绕损失计算和视差优化进行研究:
设计良好的度量函数来计算匹配损失;
使用局部或全局的方法为每个像素分配视差值。
这些算法均采用人工设计的浅函数,对于病态区域(如纹理少的区域等)往往不能得到正确的结果。
基本思路:
网络结构主要由4个部分组成(特征提取、空间金字塔特征融合、匹配损失计算和视差回归)
•使用CNN分别对左右视角图像进行特征提取,并融合多尺度特征;
•连接左视角特征和平移的右视角特征,构建视差维度上稀疏的损失体,再使用3DCNN 学习并根据几何上下文信息计算匹配损失;
•重采样损失体到原始图片尺寸,用Softmax函数将损失值转化为视差概率分布,并通过视差回归函数输出亚像素的预测视差。
注:3D卷积的理解(https://www.jianshu.com/p/1bb8618dd7ae )
Code(https://github.com/JiaRenChang/PSMNet)
•创新点1(红框)-- 引入了空间金字塔池化模块(spatial pyramid pooling,SPP)。用SPP聚合多尺度的信息。
•创新点2(黄匡)-- 堆叠漏斗网络(stacked hourglass networks),用3D卷积做的encoder-decoder结构。降低算力,融合多级特征。
Error Rate-3 | Cost_time | device |
---|---|---|
2.32 | 0.41s | Nvidia GTX Titan Xp |
网络不仅能够预测视差图,还训练一个边缘子网络预测边缘图,将边缘信息整合到主网络中,指导视差学习。
Error Rate-3 | Cost_time | device |
---|---|---|
2.08 | 0.32s | Nvidia GTX Titan Xp |
Code(https://github.com/xy-guo/GwcNet )
提出了“组相关”。所谓“Group-wise”就是对多通道的特征图沿着通道分组。比如文中实验部分提到的左右特征图是320通道的,就分为了40组,每组8个通道。组相关的计算是按照向量内积的方式,但是因为一组有多个通道,又不会丢失很多信息。
Error Rate-3 | Cost_time | device |
---|---|---|
2.11 | 0.32s | GPU @ 2.0 Ghz |
Code(https://github.com/feihuzhang/GANet )
本文主要针对立体匹配中的代价聚合(从得到cost volume到softmax回归计算视差这一部分)进行优化,传统方法就是堆叠的3D卷积,3D卷积的参数量是很高的。而本文中提出了两种网络层,用更少的参数就可以达到相同的效果。一种是对半全局匹配的修改,称为半全局聚合层(semi-global aggregation layer),另一种是局部指导的聚合层(local guided aggregation layer),也是借鉴传统立体匹配方法的代价滤波策略(后面会稍微具体地解释)。前者聚合全图多个方向的代价,使得在遮挡区域、低纹理区域也有较好的估计;后者聚合局部代价来处理那些较细的结构和物体边缘。
Error Rate-3 | Cost_time | device |
---|---|---|
1.81 | 1.8s | GPU @ 2.5 Ghz |
•加入语义分割任务
•构建多个不同尺度的cost volume
•针对多个cost volume,提出一种融合方式
Error Rate-3 | Cost_time | device |
---|---|---|
2.11 | – | – |
Code (https://github.com/wyf2017/WSMCnet )
提出一种在视差维度上使用稀疏损失体进行立体匹配的方法。采用宽步长平移右视角特征图构建稀疏的三维损失体,使三维卷积模块所需的显存和计算资源均降低数倍。采用多类别输出的方式对匹配损失在视差维度上进行非线性上采样,并结合两种损失函数训练模型,在保证运行效率的同时提高算法精度。在KITTI测试集上,与基准算法相比,所提算法不仅提高了精度,而且运行时间缩短了约40%。
Error Rate-3 | Cost_time | device |
---|---|---|
2.13 | 0.39s | GTX 1070 |
测试数据集:kitti2015-train
测试网络:GA-Net;WSM-Net
网络名称 | 分辨率: W*H | EPE: 复现 | ER-1: 复现/BenchMark | ER-3: 复现/BenchMark | device: 复现/BenchMark | CostTime: 复现/BenchMark |
---|---|---|---|---|---|---|
GA-Net-deep | 1248*384 | 0.35 | 4.27/8.7 | 0.48/1.81 | 2080ti 11G /GPU @ 2.5 Ghz | 2.34/1.8 |
GA-Net-11 | 1248*384 | 1.16/0.95 | 54.31 | 1.85 | 2080ti 11G /GPU @ 2.5 Ghz | 1.60/0.95 |
WSMCnetEB_S2C3F32 | 768*384 | 0.74 | 5.85 | 2.08/2.13 | 2080ti 11G /GTX 1070 | 0.33/0.39 |
WSMCnetEB_S3C3F32 | 768*384 | 0.84 | 7.39 | 2.61 | 2080ti 11G /GTX 1070 | 0.26 |
WSMCnet | 768*384 | 0.73 | 5.83 | 2.13 | 2080ti 11G /GTX 1070 | 0.57 |
EEP表示预测视差与真值之间的差值绝对值。
ED1表示每组图像对评价区域的错误像素百分比,其中EEP小于3或者1pixel或EEP小于真值5%时,认为是正确像素,否则为错误像素。
GA-Net-n:n为3D卷积的数量。
*_SmCnF32:m为3D卷积稀疏步长;n为每个平移步长内,对匹配损失进行多类别预测的数。
数据:Middleburry stereo Evaluationv3–Adirondack
模型:GA-Net-deep
模型分辨率:960*672
Kitti性能:
EPE Error:0.35
Error Rate1: 0.087
Error Rate3: 0.0181
…
结论:模型的鲁棒性不强,在新场景下,性能下降严重。
device:TESLA P40 GPU
分辨率:1000*300
帧率:15-20
参考:https://www.zhihu.com/people/spade-66-82/posts(总结的非常到位)