专栏名称: 新机器视觉
最前沿的机器视觉与计算机视觉技术
目录
相关文章推荐
西安头条  ·  陕西一学校拟晋升 ·  2 天前  
西安头条  ·  陕西一学校拟晋升 ·  2 天前  
896汽车调频  ·  陕西今年将建成1条高铁线! ·  3 天前  
51好读  ›  专栏  ›  新机器视觉

自动驾驶视觉感知算法

新机器视觉  · 公众号  ·  · 2024-12-01 21:15

正文


自动驾驶视觉感知算法(一)

环境感知是自动驾驶的第一环,是车辆和环境交互的纽带。一个自动驾驶系统整体表现的好坏,很大程度上都取决于感知系统的好坏。目前,环境感知技术有两大主流技术路线:

①以视觉为主导的多传感器融合方案,典型代表是特斯拉;

②以激光雷达为主导,其他传感器为辅助的技术方案,典型代表如谷歌、百度等。

我们将围绕着环境感知中关键的视觉感知算法进行介绍,其任务涵盖范围及其所属技术领域如下图所示。我们分为两节分别梳理了2D和3D视觉感知算法的脉络和方向。





本节我们先从广泛应用于自动驾驶的几个任务出发介绍2D视觉感知算法,包括基于图像或视频的2D目标检测和跟踪,以及2D场景的语义分割。近些年,深度学习渗透到视觉感知的各个领域,取得不错的成绩,因此,我们梳理了一些经典的深度学习算法。





0 1
目标检测

1.1 两阶段检测

两阶段指的是实现检测的方式有先后两个过程,一是提取物体区域;二是对区域进行CNN分类识别;因此,“两阶段”又称基于候选区域(Region proposal)的目标检测。代表性算法有R-CNN系列(R-CNN、Fast R-CNN、Faster R-CNN)等。

Faster R-CNN是第一个端到端的检测网络。第一阶段利用一个区域候选网络(RPN)在特征图的基础上生成候选框,使用ROIPooling对齐候选特征的大小;第二阶段用全连接层做细化分类和回归。这里提出了Anchor的思想,减少运算难度,提高速度。特征图的每个位置会生成不同大小、长宽比的Anchor,用来作为物体框回归的参考。Anchor的引入使得回归任务只用处理相对较小的变化,因此网络的学习会更加容易。下图是Faster R-CNN的网络结构图。

CascadeRCNN第一阶段和Faster R-CNN完全一样,第二阶段使用多个RoiHead层进行级联。后续的一些工作多是围绕着上述网络的一些改进或者前人工作的杂烩,罕有突破性提升。

1.2 单阶段检测

相较于两阶段算法,单阶段算法只需一次提取特征即可实现目标检测,其速度算法更快,一般精度稍微低一些。这类算法的开山之作是YOLO,随后SSD、Retinanet依次对其进行了改进,提出YOLO的团队将这些有助于提升性能的trick融入到YOLO算法中,后续又提出了4个改进版本YOLOv2~YOLOv5。尽管预测准确率不如双阶段目标检测算法,由于较快的运行速度,YOLO成为了工业界的主流。下图是YOLOv3的网络结构图。

1.3 Anchor-free 检测(无 Anchor 检测)

这类方法一般是将物体表示为一些关键点,CNN被用来回归这些关键点的位置。关键点可以是物体框的中心点(CenterNet)、角点 CornerNet 或者代表点(RepPoints)。CenterNet将目标检测问题转换成中心点预测问题,即用目标的中心点来表示该目标,并通过预测目标中心点的偏移量与宽高来获取目标的矩形框。Heatmap表示分类信息,每一个类别将会产生一个单独的Heatmap图。对于每张Heatmap图而言,当某个坐标处包含目标的中心点时,则会在该目标处产生一个关键点,我们利用高斯圆来表示整个关键点,下图展示了具体的细节。

RepPoints提出将物体表示为一个代表性点集,并且通过可变形卷积来适应物体的形状变化。点集最后被转换为物体框,用于计算与手工标注的差异。

1.4 Transformer 检测

无论是单阶段还是两阶段目标检测,无论采用Anchor与否,都没有很好地利用到注意力机制。针对这种情况,Relation Net和DETR利用Transformer将注意力机制引入到目标检测领域。Relation Net利用Transformer对不同目标之间的关系建模,在特征之中融入了关系信息,实现了特征增强。DETR则是基于Transformer提出了全新的目标检测架构,开启了目标检测的新时代,下图是DETR的算法流程,先采用CNN提取图像特征,然后用Transformer对全局的空间关系进行建模,最后得到的输出通过二分图匹配算法与手工标注进行匹配。

下表中的准确度采用MSCOCO数据库上的mAP作为指标,而速度则采用FPS来衡量,对比了上述部分算法,由于网络的结构设计中存在很多不同的选择(比如不同的输入大小,不同的Backbone网络等),各个算法的实现硬件平台也不同,因此准确率和速度并不完全可比,这里只列出来一个粗略的结果供大家参考。

0 2
目标跟踪

在自动驾驶应用中,输入的是视频数据,需要关注的目标有很多,比如车辆,行人,自行车等等。因此,这是一个典型的多物体跟踪任务(MOT)。对于MOT任务来说,目前最流行的框架是Tracking-by-Detection,其流程如下:

由目标检测器在单帧图像上得到目标框输出;

②提取每个检测目标的特征,通常包括视觉特征和运动特征;

③根据特征计算来自相邻帧的目标检测之间的相似度,以判断其来自同一个目标的概率;

④将相邻帧的目标检测进行匹配,给来自同一个目标的物体分配相同的ID。

深度学习在以上这四个步骤中都有应用,但是以前两个步骤为主。在步骤1中,深度学习的应用主要在于提供高质量的目标检测器,因此一般都选择准确率较高的方法。SORT是基于Faster R-CNN的目标检测方法,并利用卡尔曼滤波算法+匈牙利算法,极大提高了多目标跟踪的速度,同时达到了SOTA的准确率,也是在实际应用中使用较为广泛的一个算法。在步骤2中,深度学习的应用主要在于利用CNN提取物体的视觉特征。DeepSORT最大的特点是加入外观信息,借用了ReID模块来提取深度学习特征,减少了ID switch的次数。整体流程图如下:

此外,还有一种框架Simultaneous Detection and Tracking。如代表性的CenterTrack,它起源于之前介绍过的单阶段无Anchor的检测算法CenterNet。与CenterNet相比,CenterTrack增加了前一帧的RGB图像和物体中心Heatmap作为额外输入,增加了一个Offset分支用来进行前后帧的Association。与多个阶段的Tracking-by-Detection相比,CenterTrack将检测和匹配阶段用一个网络来实现,提高了MOT的速度。

0 3
语义分割

在自动驾驶的车道线检测和可行驶区域检测任务中均用到了语义分割。代表性的算法有FCN、U-Net、DeepLab系列等。DeepLab使用扩张卷积和ASPP(Atrous Spatial Pyramid  Pooling)结构,对输入图像进行多尺度处理。最后采用传统语义分割方法中常用的条件随机场(CRF)来优化分割结果。下图是DeepLab v3+的网络结构。

近些年的STDC算法采用了类似FCN算法的结构,去掉了U-Net算法复杂的decoder结构。但同时在网络下采样的过程中,利用ARM模块不断地去融合来自不同层特征图的信息,因此也避免了FCN算法只考虑单个像素关系的缺点。可以说,STDC算法很好的做到了速度与精度的平衡,其可以满足自动驾驶系统实时性的要求。算法流程如下图所示。

自动驾驶视觉感知算法(二)

上一节我们介绍了2D视觉感知算法,本节我们将介绍自动驾驶中必不可少的3D场景感知。因为深度信息、目标三维尺寸等在2D感知中是无法获得的,而这些信息才是自动驾驶系统对周围环境作出正确判断的关键。想得到3D信息,最直接的方法就是采用激光雷达(LiDAR)。但是,LiDAR也有其缺点,比如成本较高,车规级产品量产困难,受天气影响较大等等。因此,单纯基于摄像头的3D感知仍然是一个非常有意义和价值的研究方向,接下来我们梳理了一些基于单目和双目的3D感知算法。
01
单目3D感知

基于单摄像头图像来感知3D环境是一个不适定问题,但是可以通过几何假设(比如像素位于地面)、先验知识或者一些额外信息(比如深度估计)来辅助解决。本次将从实现自动驾驶的两个基本任务(3D目标检测和深度估计)出发进行相关算法介绍。

1.1 3D目标检测
表示转换(伪激光雷达): 视觉传感器对周围其他车辆等的检测通常会遇到遮挡、无法度量距离等问题,可以将透视图转换成鸟瞰图表示。这里介绍两种变换方法。一是逆透视图映射(IPM),它假定所有像素都在地面上,并且相机外参准确,此时可以采用Homography变换将图像转换到BEV,后续再采用基于YOLO网络的方法检测目标的接地框。二是正交特征变换(OFT),利用ResNet-18提取透视图图像特征。然后,通过在投影的体素区域上累积基于图像的特征来生成基于体素的特征。然后将体素特征沿垂直方向折叠以产生正交的地平面特征。最后,用另一个类似于ResNet的自上而下的网络进行3D目标检测。这些方法只适应于车辆、行人这类贴地的目标。对于交通标志牌、红绿灯这类非贴地目标来说,可以通过深度估计来生成伪点云,进而进行3D检测。Pseudo-LiDAR先利用深度估计的结果生成点云,再直接应用基于激光雷达的3D目标检测器生成3D目标框,其算法流程如下图所示,

关键点和3D模型: 待检测目标如车辆、行人等其大小和形状相对固定且已知,这些可以被用作估计目标3D信息的先验知识。DeepMANTA是这个方向的开创性工作之一。首先,采用一些目标检测算法比如Faster RNN来得到2D目标框,同时也检测目标的关键点。然后,将这些2D目标框和关键点与数据库中的多种3D车辆CAD模型分别进行匹配,选择相似度最高的模型作为3D目标检测的输出。MonoGRNet则提出将单目3D目标检测分成四个步骤:2D目标检测、实例级深度估计、投影3D中心估计和局部角点回归,算法流程如下图所示。这类方法都假设目标有相对固定的形状模型,对于车辆来说一般是满足的,对于行人来说就相对困难一些。

2D/3D几何约束: 对3D中心和粗略实例深度的投影进行回归,并使用这二者估算粗略的3D位置。 开创性的工作是Deep3DBox,首先用2D目标框内的图像特征来估计目标大小和朝向。 然后,通过一个2D/3D的几何约束来求解中心点3D位置。 这个约束就是3D目标框在图像上的投影是被2D目标框紧密包围的,即2D目标框的每条边上都至少能找到一个3D目标框的角点。 通过之前已经预测的大小和朝向,再配合上相机的标定参数,可以求解出中心点的3D位置。 2D和3D目标框之间的几何约束如下图所示。 Shift R-CNN在Deep3DBox的基础上将之前得到的2D目标框、3D目标框以及相机参数合并起来作为输入,采用全连接网络预测更为精确的3D位置。

直接生成3DBox: 这类方法从稠密的3D目标候选框出发,通过2D图像上的特征对所有的候选框进行评分,评分高的候选框即是最终的输出。 有些类似目标检测中传统的滑动窗口方法。 代表性的Mono3D算法首先基于目标先验位置(z坐标位于地面)和大小来生成稠密的3D候选框。 这些3D候选框投影到图像坐标后,通过综合2D图像上的特征对其进行评分,再通过CNN再进行二轮评分得到最终的3D目标框。 M3D-RPN是一种基于Anchor的方法,定义了2D和3D的Anchor。 2D Anchor通过图像上稠密采样得到,3D Anchor是通过训练集数据的先验知识(如目标实际大小的均值)确定的。 M3D-RPN还同时采用了标准卷积和Depth-Aware卷积。 前者具有空间不






请到「今天看啥」查看全文