第7章 视觉感知算法
结合第4章的算法基础以及第6章提出的智能驾驶各类感知任务与思路,本章将详细介绍面向量产的智能驾驶视觉感知算法。本章将分别介绍
- 目标分类、
- 目标检测、
- 深度估计、
- 语义分割、
- 车道线检测、
- BEV感知、
- 占用网络、
- 高程网络、
- 雷达感知
- 视觉多任务算法。
这里需要注意的是,本章介绍的算法大都在量产研发中得到了验证,但在实际落地时还要根据场景与CornerCase进行优化。
其次,上述算法与第6章介绍的感知任务是一对多的关系。
例如目标检测算法会用于检测第6章介绍的多种动静态元素的感知任务中,如图7-1~图7-3所示。



7.3 深度估计
深度估计的相关概念及基础理论已在本书4.2.4节进行了介绍,对于单目有监督深度估计任务来说,需要大量准确的标注作为训练真值,因此获得较好质量的训练真值的成本较大。
单目无监督深度估计仅靠相邻帧作为监督信号,通过相邻帧进行图像重建作为训练监督,从而无需标注数据。
单目无监督深度估计算法
面对智能驾驶量产场景,本书以经典的MonoDepth2为例,介绍单目无监督深度估计算法。
具体来说,MonoDepth2根据SFM(Structure from Motion)模型原理在卷积神经网络中同时训练两组网络:深度网络和位姿网络。训练网络的输入为一段视频序列的连续多帧图片,深度网络输入目标视图,位姿网络输入目标视图和上一帧视图,深度网络经过卷积神经网络处理输出对应的深度图像,位姿网络计算出相机运动姿态的变化,根据两组网络的输出结果共同构建重投影图像,计算重投影误差引入至损失函数中,通过损失函数来反向传播更新模型参数,优化训练网络模型。
如图7-8所示,MonoDepth2深度估计网络基于U-Net架构,这种网络架构能够实现更精确的分割。U-Net网络架构的收缩路径和扩展路径对称。深度网络的收缩和扩展分别通过下采样过程和上采样过程来实现,下采样过程可缩小图像生成图像的缩略图,可以用来表示环境特征信息,上采样过程可放大图像,并且结合下采样各层信息对细节信息进行还原,可以很好地提高输出图像的精度。深度估计网络整体流程为编码过程和解码过程,图7-8中左侧部分为编码过程,右侧部分为解码过程。解码过程即将编码器网络中尺寸相同的特征信息进行特征融合后输入至上采样层。深度网络的编码器与解码器细节为:

1)编码器:编码器可以进行特征提取,在深度估计网络中使用残差网络ResNet18作为深度编码器。编码器网络的输入为单目相机所拍摄的彩色RGB图像,彩色图像首先进入卷积层和BN层进行处理,然后进入ReLU激活函数和最大池化层,最大池化层对提取特征压缩。之后进入Layer1,Layer1由两个残差块组成,残差块内部使用的激活函数为ELU激活函数,Layer2、Layer3、Layer4与Layer1是相同的结构,在跨越不同层次的时候,采用加大步长的卷积核进行卷积操作来代替下采样过程,特征图的尺寸逐倍缩小。
2)解码器:解码器需要对编码器输出图像特征进行整合解析,深度估计网络使用上采样层和卷积层结合的方式作为深度解码器。解码器网络包括4个相同的Upconv结构,Upconv中包括特征图融合、多个卷积层和上采样过程,每个Upconv的输入为上一层网络的输出和编码器网络中相同尺度的特征图,将相同尺寸的特征图融合后,进行卷积操作、上采样操作,最后Upconv4输出的图像尺寸与输入图像尺寸相同。在解码器中,使用反射填充来代替零填充,当需要对输入矩阵进行扩充时,扩充值使用附近的像素值,这样可以减少边界处模糊的情况,提高特征图的清晰度。
如图 7-9 所示, MonoDepth2 位姿估计网络的输入为上一帧图像和当前帧图像, 这是一对彩色图像, 所以位姿网络可以接收六通道作为输入。这是因为单张彩色图片是无法获取场景下的三维信息的, 所以使用单目相机拍摄视频的连续前后两帧才可以获得相机相对于场景中角度和位置的变化。位姿网络与深度网络整体流程类似, 网络中也包括编码过程和解码过程。左侧为编码过程, 右侧为解码过程, 网络最终输出轴角变化矩阵和平移变化矩阵。位姿网络的编码器与解码器细节为:
1)编码器:编码器网络中同样使用ResNet18结构,并且在位姿编码器中使用预训练权重模型。将预训练模型中第一个卷积核的维度进行扩展,使网络可以接收六通道作为输入,将扩展后的卷积核中的权重除以2,保证卷积操作结束后与单张图像进入残差网络的数值范围相同。编码器网络中最终输出提取到的图像特征。
2)解码器:解码器网络将编码器所提取的图像特征进行整合。首先使用Squeeze操作对图像特征进行降维,然后将图像特征按照行并排起来,进行多次卷积操作,将矩阵缩放0.01,最终输出轴角矩阵和平移矩阵。使用预测得到的矩阵代表相机位置变化的平移运动和旋转运动。

此模型的损失函数将重投影误差和像素平滑度结合。MonoDepth2 很突出的一个贡献就是采用最小化重投影误差来代替平均化误差,平均化处理会导致重投影误差过大,从而使得损失函数的值过大,使得深度图边缘模糊。使用最小重投影误差损失仅将每个像素与可见的视图进行匹配,提高遮挡边界的清晰度。具体来说,MonoDepth2 的损失函数由两部分组成,分别是光度损失(Photometric Error)pe 和像素平滑损失(Edge-aware Smoothness Error) LsL_{s}Ls 。pe 定义为
pe(Ia,Ib)=α2(1−SSIM(Ia,Ib))+(1−α)∥Ia−Ib∥1 \operatorname {p e} \left(I _ {a}, I _ {b}\right) = \frac {\alpha}{2} \left(1 - \operatorname {S S I M} \left(I _ {a}, I _ {b}\right)\right) + (1 - \alpha) \left\| I _ {a} - I _ {b} \right\| _ {1} pe(Ia,Ib)=2α(1−SSIM(Ia,I

】&spm=1001.2101.3001.5002&articleId=158285410&d=1&t=3&u=d0a7b92c523e4fbf85d112d4a2a37c1d)
4082

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



