一、GC-Net
主要有两个创新点
1、使用三维卷积对匹配代价卷进行滤波
2、提出了soft argmin对代价进行回归
先看网络结构
经典三大块式结构
第一部分 Unary features extracting
先用5x5的卷积核,以步长2获取较大视野特征并快速降低图片尺寸
然后用8个残差块提取特征
第二部分 代价卷生成
第三部分 3D-UNet代价卷滤波
先下采样到1/32,再上采样回到1/2,每次上采样下采样中间隔着2次三位卷积,同时每次将下采样前一步的代价卷加在上采用后的map上,最后用一个三维卷积使1/2Dx1/2Hx1/2WxF 的代价卷变成DxHxW的代价卷,用于最后的代价计算
第四部分 视差回归 soft argmin
传统的argmin函数又两个问题
(1)计算出来的视差是离散的,不能计算亚像素的视差,因此精度受到限制
(2)不可导,因此不能用逆向传播算法进行训练
提出了soft argmin 可微且计算亚像素视差
第五部分 loss
就是将L1视差loss在图上求个均值
二、PSMNet
在GC-Net的基础上,提出了两个模块的创新
1、spp模块,其目的是在gc-net使用的特征提取模块感受野较小的问题,无法获得较大的语义特征,其主要是通过不同尺寸(64x64,32x32,16x16,8x8)
的平均池化来获取多尺度的语义信息,再将这些语义信息和局部特征信息拼接起来合成既具有较大语义特征又具有精确局部特征的特征map
2、对三维卷积的U-net的改进,将多个UNet串连起来
网络结构
结构和GCNet基本相似
第一部分 仍然是unary features extracting
PSMNet在特征提取模块第一层将GCnet 5x5的大卷核卷积(主要作用:(1)感受野大,获得的特征具有比较大的scale,(2)快速降低刚输入图片的尺寸)
换为了3个3x3的卷积,其实这里两个3x3的卷积就已经相当于一个5x5的卷积了,这里三个相当于7x7的卷积,这样用多小的卷积核去代替大的卷积核有几个好处
(1)整合了三个非线性激活层,代替单一非线性激活层,增加了判别能力
(2)减少了网络参数。以3个33的级联卷积代替1个77的卷积为例:可以减少77-333=22个参数,减少了45%的参数
(3)减少了计算量,以3个33的级联卷积代替1个77的卷积为例:可以减少77L-333L=22*L次计算,减少了45%的计算量。
这里以供使用了25个残差模块,其中常规残差模块19个,空洞卷积的残差模块6个,加上空洞卷积也是为了扩大感受野,更好的提取语义特征
第二部分是SPP模块
这个模块就是使用不同尺寸(64x64,32x32,16x16,8x8)的平均池化操作来提取语义特征,再将池化后得到的特征上采样后与上面特征提取层的结构连接起来,合成既具有较大语义特征又具有精确局部特征的特征map
第三部分 匹配代价生成
第四部分 三维UNet
这一部分有两个特点
(1)这一个改进的代价卷滤波结构主要由三个三维UNet串联组成,每一个UNet的输出都会进行视差回归,并计算loss。
(2)每个UNet都会收到原始输入的代价卷,每个下采样前的代价卷不仅用于这个UNet的上采样,还用于后面UNet的上采样,UNet上采样后的代价卷会加在下一次下采样前的代价卷上。
第五部分 代价回归 和gcNet一样,采用soft argmin
第六部分 loss
三、GANet
解决的问题:解决了前面的网络,GC-Net、PSMNet在面对遮挡、低纹理、高反光区域时效果不理想的问题。并且使用GA层代替了3D卷积大大的提高了计算效率。
先上他的效果图
文章亮点:
(1)基于传统SGM、LGM算法提出了可用于端到端网络训练的SGA层和LGA层,并运用SGA层代替3D-UNet进行代价聚合,相较于3DUNet的方法,在计算精度和计算效率上都有较大提升
(2)在主网络外加了一个子网络,用于学习SGA层的惩罚项参数
结构介绍
结构还是经典的三段式结构
第一部分 特征提取,这里与前面的使用残差模块进行特征提取的方式有所不同了,换成了使用两个2D Unet的方式,Unet对于提取语义特征比较有益。
第二部分 代价空间生成
第三部分 代价聚合,使用了多个SGA层在4个方向上进行代价聚合。然后使用LGA层恢复使用encoder-decoder造成的薄、窄特征和边缘特征
第四部分 soft argmin代价回归
第五部分 延续了PSM的loss
另外有个子网络,和主网络一起学习SGA和LGA的加权权重
SGA层
关于传统的SGM算法可以看这一篇文章链接: SGM/LGA.
作者提出的新的半全局代价聚合步骤
在路径p-r上,对
改变如下
1)是原来的惩罚项参数P1、P2变为可学习的权重参数,这样的参数面对不同位置、不同情况的视差跃变惩罚更加灵活
2)将原来求平滑项(第二项)的最小值计算变为加权求和计算(为了实现逆向传播训练),并且没有造成精度损失
3)不再计算匹配代价,换成计算真实的深度可能性,将第二项内部的最后一项计算最小代价换为计算最大值
4)与SGM中从16个方向进行聚合不同,为了提高计算效率,作者从仅仅四个方向进行聚合,左、上、右、下,最后选择聚合值最大的那个方向作为最终结果
为了避免计算出来值太大,造成很大的计算内存开销,将这个权重值进行归一化
LGA层
LGA层主要是用于解决较薄的目标(电线、电线杆等)效果不理想的问题,
在目标点P的KxK领域Np上,使用三个KxK的卷积核分别对三个视差层的代价进行卷积
未完待续