搜索
首页科技周边人工智能深入探讨自动驾驶中的2D和3D视觉感知算法

深入探讨自动驾驶中的2D和3D视觉感知算法

Apr 22, 2023 pm 10:40 PM
算法3d自动驾驶

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

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

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

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

聊聊自动驾驶2D和3D视觉感知算法

2D视觉感知

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

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的网络结构图。

聊聊自动驾驶2D和3D视觉感知算法

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

1.2 单阶段检测

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

聊聊自动驾驶2D和3D视觉感知算法

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

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

聊聊自动驾驶2D和3D视觉感知算法

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

1.4 Transformer检测

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

聊聊自动驾驶2D和3D视觉感知算法

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

聊聊自动驾驶2D和3D视觉感知算法

2.目标跟踪

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

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

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

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

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

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

聊聊自动驾驶2D和3D视觉感知算法

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

3.语义分割

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

聊聊自动驾驶2D和3D视觉感知算法

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

聊聊自动驾驶2D和3D视觉感知算法

3D视觉感知

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

1.单目3D感知

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

1.1 3D目标检测

聊聊自动驾驶2D和3D视觉感知算法

表示转换(伪激光雷达):视觉传感器对周围其他车辆等的检测通常会遇到遮挡、无法度量距离等问题,可以将透视图转换成鸟瞰图表示。这里介绍两种变换方法。一是逆透视图映射(IPM),它假定所有像素都在地面上,并且相机外参准确,此时可以采用Homography变换将图像转换到BEV,后续再采用基于YOLO网络的方法检测目标的接地框。二是正交特征变换(OFT),利用ResNet-18提取透视图图像特征。然后,通过在投影的体素区域上累积基于图像的特征来生成基于体素的特征。

然后将体素特征沿垂直方向折叠以产生正交的地平面特征。最后,用另一个类似于ResNet的自上而下的网络进行3D目标检测。这些方法只适应于车辆、行人这类贴地的目标。对于交通标志牌、红绿灯这类非贴地目标来说,可以通过深度估计来生成伪点云,进而进行3D检测。Pseudo-LiDAR先利用深度估计的结果生成点云,再直接应用基于激光雷达的3D目标检测器生成3D目标框,其算法流程如下图所示,

聊聊自动驾驶2D和3D视觉感知算法

关键点和3D模型:待检测目标如车辆、行人等其大小和形状相对固定且已知,这些可以被用作估计目标3D信息的先验知识。DeepMANTA是这个方向的开创性工作之一。首先,采用一些目标检测算法比如Faster RNN来得到2D目标框,同时也检测目标的关键点。然后,将这些2D目标框和关键点与数据库中的多种3D车辆CAD模型分别进行匹配,选择相似度最高的模型作为3D目标检测的输出。MonoGRNet则提出将单目3D目标检测分成四个步骤:2D目标检测、实例级深度估计、投影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位置。

聊聊自动驾驶2D和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卷积。前者具有空间不变性,后者将图像的行(Y坐标)分成多个组,每个组对应不同的场景深度,采用不同的卷积核来处理。上述这些稠密采样方法计算量非常大。SS3D则采用更为高效的单阶段检测,包括用于输出图像中每个相关目标的冗余表示以及相应的不确定性估计的CNN,以及3D边框优化器。FCOS3D也是一个单阶段的检测方法,回归目标额外增加了一个由3D目标框中心投影到2D图像得到的2.5D中心(X,Y,Depth)。

1.2 深度估计

不管是上述的3D目标检测还是自动驾驶感知的另一项重要任务——语义分割,从2D扩展到3D,都或多或少得应用到了稀疏或稠密的深度信息。单目深度估计的重要性不言而喻,其输入是一张图像,输出是相同大小的一张由每个像素对应的场景深度值组成的图像。输入也可以是视频序列,利用相机或者物体运动带来的额外信息来提高深度估计的准确度。相比于监督学习,单目深度估计的无监督方法无需构建极具挑战性的真值数据集,实现难度更小。单目深度估计的无监督方法可分为基于单目视频序列和基于同步立体图像对两种。

前者是建立在运动相机和静止场景的假设之上的。在后者的方法中,Garg等人首次尝试使用同一时刻立体校正后的双目图像对进行图像重建,左右视图的位姿关系通过双目标定得到,获得了较为理想的效果。在此基础上,Godard等人用左右一致性约束进一步地提升了精度,但是,在逐层下采样提取高级特征来增大感受野的同时,特征分辨率也在不断下降,粒度不断丢失,影响了深度的细节处理效果和边界清晰度。

为缓解这一问题,Godard等人引入了全分辨率多尺度的损失,有效减少了低纹理区域的黑洞和纹理复制带来的伪影。但是,这对精度的提升效果仍是有限的。最近,一些基于Transformer的模型层出不穷,旨于获得全阶段的全局感受野,这也非常适用于密集的深度估计任务。有监督的DPT中就提出采用Transformer和多尺度结构来同时保证预测的局部精确性和全局一致性,下图是网络结构图。

聊聊自动驾驶2D和3D视觉感知算法

2.双目3D感知

双目视觉可以解决透视变换带来的歧义性,因此从理论上来说可以提高3D感知的准确度。但是双目系统在硬件和软件上要求都比较高。硬件上来说需要两个精确配准的摄像头,而且需要保证在车辆运行过程中始终保持配准的正确性。软件上来说算法需要同时处理来自两个摄像头的数据,计算复杂度较高,算法的实时性难以保证。与单目相比,双目的工作相对较少。接下来也同样从3D目标检测和深度估计两方面进行简单介绍。

2.1 3D目标检测

3DOP是一个两阶段的检测方法,是Fast R-CNN方法在3D领域的拓展。首先利用双目图像生成深度图,将深度图转化为点云后再将其量化为网格数据结构,再以此为输入来生成3D目标的候选框。与之前介绍的Pseudo-LiDAR类似,都是将稠密的深度图(来自单目、双目甚至低线数LiDAR)转换为点云,然后再应用点云目标检测领域的算法。DSGN利用立体匹配构建平面扫描体,并将其转换成3D几何体,以便编码3D几何形状和语义信息,是一个端到端的框架,可提取用于立体匹配的像素级特征和用于目标识别的高级特征,并且能同时估计场景深度和检测3D目标。Stereo R-CNN扩展了 Faster R-CNN 用于立体输入,以同时检测和关联左右视图中的目标。在RPN之后增加额外的分支来预测稀疏的关键点、视点和目标尺寸,并结合左右视图中的2D边界框来计算粗略的3D目标边界框。然后,通过使用左右感兴趣区域的基于区域的光度对齐来恢复准确的3D边界框,下图是它的网络结构。

聊聊自动驾驶2D和3D视觉感知算法

2.2 深度估计

双目深度估计的原理很简单,就是根据左右视图上同一个3D点之间的像素距离d(假设两个相机保持同一高度,因此只考虑水平方向的距离)即视差,相机的焦距f,以及两个相机之间的距离B(基线长度),来估计3D点的深度,公式如下,估计出视差就可以计算出深度。那么,需要做的就是为每个像素点在另一张图像上找出与之匹配的点。

聊聊自动驾驶2D和3D视觉感知算法

对于每一个可能的d,都可以计算每个像素点处的匹配误差,因此就得到了一个三维的误差数据Cost Volume。通过Cost Volume,我们可以很容易得到每个像素处的视差(对应最小匹配误差的d),从而得到深度值。MC-CNN用一个卷积神经网络来预测两个图像块的匹配程度,并用它来计算立体匹配成本。通过基于交叉的成本汇总和半全局匹配来细化成本,然后进行左右一致性检查以消除被遮挡区域中的错误。PSMNet提出了一个不需要任何后处理的立体匹配的端到端学习框架,引入金字塔池模块,将全局上下文信息纳入图像特征,并提供了一个堆叠沙漏3D CNN进一步强化全局信息。下图是其网络结构。

聊聊自动驾驶2D和3D视觉感知算法

以上是深入探讨自动驾驶中的2D和3D视觉感知算法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
外推指南外推指南Apr 15, 2025 am 11:38 AM

介绍 假设有一个农民每天在几周内观察农作物的进展。他研究了增长率,并开始思考他的植物在几周内可以生长的高度。从Th

软AI的兴起及其对当今企业的意义软AI的兴起及其对当今企业的意义Apr 15, 2025 am 11:36 AM

软AI(被定义为AI系统,旨在使用近似推理,模式识别和灵活的决策执行特定的狭窄任务 - 试图通过拥抱歧义来模仿类似人类的思维。 但是这对业务意味着什么

为AI前沿的不断发展的安全框架为AI前沿的不断发展的安全框架Apr 15, 2025 am 11:34 AM

答案很明确 - 只是云计算需要向云本地安全工具转变,AI需要专门为AI独特需求而设计的新型安全解决方案。 云计算和安全课程的兴起 在

生成AI的3种方法放大了企业家:当心平均值!生成AI的3种方法放大了企业家:当心平均值!Apr 15, 2025 am 11:33 AM

企业家,并使用AI和Generative AI来改善其业务。同时,重要的是要记住生成的AI,就像所有技术一样,都是一个放大器 - 使得伟大和平庸,更糟。严格的2024研究O

Andrew Ng的新简短课程Andrew Ng的新简短课程Apr 15, 2025 am 11:32 AM

解锁嵌入模型的力量:深入研究安德鲁·NG的新课程 想象一个未来,机器可以完全准确地理解和回答您的问题。 这不是科幻小说;多亏了AI的进步,它已成为R

大语言模型(LLM)中的幻觉是不可避免的吗?大语言模型(LLM)中的幻觉是不可避免的吗?Apr 15, 2025 am 11:31 AM

大型语言模型(LLM)和不可避免的幻觉问题 您可能使用了诸如Chatgpt,Claude和Gemini之类的AI模型。 这些都是大型语言模型(LLM)的示例,在大规模文本数据集上训练的功能强大的AI系统

60%的问题 -  AI搜索如何消耗您的流量60%的问题 - AI搜索如何消耗您的流量Apr 15, 2025 am 11:28 AM

最近的研究表明,根据行业和搜索类型,AI概述可能导致有机交通下降15-64%。这种根本性的变化导致营销人员重新考虑其在数字可见性方面的整个策略。 新的

麻省理工学院媒体实验室将人类蓬勃发展成为AI R&D的核心麻省理工学院媒体实验室将人类蓬勃发展成为AI R&D的核心Apr 15, 2025 am 11:26 AM

埃隆大学(Elon University)想象的数字未来中心的最新报告对近300名全球技术专家进行了调查。由此产生的报告“ 2035年成为人类”,得出的结论是,大多数人担心AI系统加深的采用

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。