3D视觉感知之双目深度估计PSMNet: Pyramid Stereo Matching Network
论文地址: [1] Pyramid Stereo Matching Network (arxiv.org)
代码地址: JiaRenChang/PSMNet: Pyramid Stereo Matching Network (CVPR2018) (github.com)
Git链接: 计算机知识汇总
课程来源 : 深蓝学院-环境感知
1. 背景
3D感知任务相比于2D感知任务的情况更为复杂,而相比于单目相机双目相机的感知能力拥有以下几个特点:
- 优点
- 双目感知无需依赖强烈的先验知识和几何约束
- 能够解决透视变化带来的歧义性(通俗的讲就是照片是由3D真实世界投影到2D图像然后再转换成3D,由于深度信息的丢失本身就十分困难)
- 无需依赖物体检测的结果,对任意障碍物均有效
- 缺点
- 硬件: 摄像头需要精确配准,车辆运行过程中同样需要保持
- 软件: 算法需要同时处理来自两个摄像头的数据,计算复杂度较高
而双目相机是如何实现3D视觉感知的呢?如下图:
B : 两个相机之间的距离
f : 相机的焦距
d: 视差(左右两张图象上同一个3d点之间的距离)
z: 物体相对于相机的深度,也是我们需要求解的值。

根据几何的知识我们可以得到 视差d 与 深度z是成反比的,所以双目相机的3D感知其实就是基于视差的估计来的,那么接下来核心来了,我们应该怎么得到每个像素点的视差呢?PSMNet 横空出世,它是一个利用端到端的卷积神经网络学习如何从输入的pair图像中获取每个像素点的视差

PSMNet 在原文中提到了以下几个亮点:
- 端到端无需后处理的双目深度估计方法
- 利用空间金字塔池化模块(SPP)和空洞卷积有效地整合全局上下文信息,从而提高了深度估计的准确性。
- 采用三维卷积神经网络(3D CNN)stacked hourglass 对cost map进行正则化处理,进一步提高了深度估计的精度。
- 使用堆叠多个hourglass网络,并结合中间监督,进一步优化了3D CNN模块的性能。
2. 网络结构

整体的网络结构如上图所示,首先网络的输入是成对的双目相机拍摄出来的左右片,通过一系列权重共享的特征提取网络提取特征,然后叠加构建costmap,然后经过一个3D卷积最后通过上采样恢复到原始输入大小的特征图即可。此文将网络结构分成4个模块然后会分别进行介绍
2.1 特征提取
第一个CNN模块,比较简单就是一个带残差模块和空洞卷积的卷积神经网络,将原始的H * W * 3 (kitti数据集里是375 X 1242 * 3)的图像下采样至 H/4 * W/4 * 128。所以整体的分辨率降低了4倍。

第二个是SPP模块,这里可以看到下面有4个branch这里用的就是4个不同大小尺度的averagepooling,去收集不同分辨率下的局部的信息,然后通过双线性插值恢复到原始图像的1/4大小,然后与输出进SPP网络的原始输入进行拼接,这样SPP网络最后的输出就整合了全局(CNN网络的输出)以及局部(4个branch的pooling)的信息。

PS: 这里查了查相关资料有关于AveragePooli

PSMNet是一种端到端的双目深度估计方法,通过空间金字塔池化和3DCNN正则化提高准确性。网络包括特征提取、CostVolume构建、三维卷积和视差匹配四个模块。使用该网络可以从输入图像中直接估计每个像素的深度信息,尤其在处理视差和深度计算时表现优秀。损失函数采用了平滑L1损失,训练时考虑了不同输出的加权平均损失。尽管有局限性,如硬件配准要求和计算复杂度,PSMNet在处理3D感知任务时提供了有效解决方案。
最低0.47元/天 解锁文章
3850

被折叠的 条评论
为什么被折叠?



