1 背景
在阐述Occupancy之前,先理解为什么要使用Occupancy?
如果自动驾驶车辆在行驶过程中看到的物体不是数据集的一部分,这个时候容易出现误判。
而在基于激光雷达的系统中,由于检测到点云,可以确定障碍物的存在,但是在相机系统中,必须首先使用神经网络检测物体,仅凭这一点就可能会造成不少事故。
注意上图中列出的几个问题:
- 对水平线上的深度非常敏感,只有2个左右的像素决定了一个大区域的深度。
- 不可能透过遮挡物进行检测,也不可能驶过车辆。
- 所提供的结构是二维的,但世界是三维的。
- 对于悬挂的障碍物,通常会进行分类,然后设置成固定的矩形障碍物。
- 可能存在裂缝、坑等非标注的场景,无法检测。
2 Occupancy Network介绍
2.1 概念及特点
自动驾驶感知的OCC技术,即Occupancy Network(占用网络)技术,是自动驾驶领域中的一项重要技术,尤其在"纯视觉"自动驾驶方案中占据核心地位。以下是对OCC技术的详细介绍:
(1)定义与原理
- 定义:OCC技术是一种基于深度学习的三维重建方法,它以多视角相机为核心,生成Bird's Eye View(BEV,鸟瞰图)特征,并通过级联结构和时间体素解码器重建,生成3D占用特征。
- 原理:OCC技术通过产生3D体素,并与3D重建体素(通常由Nerf离线训练得到)进行比较,实现感知识别。这种技术能够精确地识别和定位道路上的各种障碍物,为驾驶者提供精准的驾驶辅助信息。
(2)技术特点
- 高精度:OCC技术能够对障碍物进行3D精细刻画,模型精度可达厘米级。
- 高速度识别精度:对于运动障碍物的速度识别精度能达到0.1米/秒误差范围,提升了车辆对动态环境的适应能力。
- 多模态融合:OCC感知模型可以实现摄像头数据和其它传感器数据(毫米波雷达或者机关雷达)的融合,提取道路环境中的各种特征,实现更全面的环境感知。
- 实时性与鲁棒性:基于Transformer架构和多模态融合技术,OCC感知模型具有强大的实时性和鲁棒性,能够应对复杂道路环境和各种天气条件。
(3)应用场景
- 城市道路:识别道路上的车辆、行人、交通标志牌等障碍物,并制定合理的避让策略。
- 高速公路:识别道路上的车辆、障碍物以及道路施工区域,保证车辆的安全行驶。
- 复杂环境:应对雨雪天气、隧道、夜间等复杂环境,确保车辆的安全行驶。
(4)竞争与优势
- 与激光雷达的竞争:与激光雷达相比,OCC技术依赖的摄像头成本更低,易于安装和维护。同时,摄像头可以实现更高的分辨率和更广的视野,对于特殊路况的处理也更加准确。
- 作为激光雷达的迭代方案:纯视觉方案可以在行驶过程中不断学习和优化,提高其自动驾驶的性能,成为激光雷达的有力迭代方案。
2.2 详细介绍
(1)基本原理
占用网络是一种不同的算法,基于机器人的思想命名为占用网格映射;它包括将世界划分为一个网格单元,然后定义哪个单元被占用,哪个单元是安全的(有点像三维的grid map)。
首先,Occupancy Network的工作原理是将来自多视图图像的输入数据转换为一个三维特征空间。然后,它使用深度神经网络来学习这个特征空间中的占用概率。最后,Occupancy Network将这些占用概率转换为一个三维占用网格,这个网格可以精确地表示车辆周围环境中的障碍物和其它元素。
参照下图所示,整个Occupancy的过程如下描述(参考特斯拉公布的方案):
- 首先,摄像头数据被发送到由Regnets和BiFPN组成的主干网。
- 然后,注意力机制模块进行位置图像编码(这里起始就是Transformer神经网络),并使用关键字、值和固定查询(汽车与非汽车、公共汽车与非公共汽车、交通标志与非交通标志)来生成占用特征量。
- 接着产生了一个占用特征体,然后将其与之前的占用体(t-1、t-2等)融合,以获得4D占用网格。
- 最后,使用去卷积来检索原始大小,并获得两个输出:占用体和占用流。
(2)Occupancy Flow
占用体比较容易理解,占用流似乎不是那么容易理解,这里其实也涉及到预测的概念了,一辆车在摄像头视频数据里的移动,是如何体现到像素的变化里。
为了做到这一点,使用了"光流"的技术。如果熟悉传统的计算机视觉,不少读者应该知道"光流"是什么意思。但其它领域的人(包括笔者)对这个概念不是很清晰,上网搜索了一番。
光流是像素在时间上的运动。它可以通过传统方法或深度学习技术进行计算。得益于光流,可以使用该运动创建flow MAPS,描述每个像素在时间上的运动。流图的一个例子,每种颜色代表一个"方向"。
在分割图之后,对图像的每个像素进行分类,即深度图,它拍摄两个立体图像,并找到每个像素的深度。以两个连续的图像作为输入,可以得到运动矢量。
最终呈现的效果如下(红色:向前,蓝色:向后,灰色:静止,等等)。
(3)NeRFs
NeRFs,即神经辐射场(Neural Radiance Fields),是一种先进的人工智能技术,用于从一组二维图像中重建和渲染三维场景。这种技术可以学习场景的几何形状、物体和视角,并能够从新的视角生成逼真的三维视图。NeRFs在多个领域有着广泛的应用,包括但不限于计算机绘图、动画、医学成像、虚拟现实、增强现实以及城市规划等。
NeRFs的核心是一个多层感知机(MLP),这是一种全连接的神经网络架构,它经过训练可以将空间坐标和视野方向映射到颜色和密度值上。MLP使用一系列数学结构来确定3D图像中每个点的颜色和密度值,并学习如何改变场景中光线的亮度和颜色,通过深入理解光线的传播(即辐射建模),NeRFs能够实现从不同角度的逼真渲染。
NeRFs的类型包括PixelNeRF、Mega-NeRD、NSVF和Plenoptic Voxel等,每一种都在特定的应用场景下提供了优化和改进。例如,PixelNeRF引入了全卷积架构,简化了创建和优化NeRF的过程;而Mega-NeRD则专注于处理大型场景,提供了几何聚类算法和稀疏网络结构。
NeRFs的渲染过程涉及到图形渲染技术和体绘制策略。在图形渲染中,技术如射线投射和光线追踪被用来模拟用户视角和光的物理行为。体绘制则确定3D空间中每个像素的颜色和体积密度,而视图合成技术则根据一系列2D图像构造3D视图。
NeRFs的工作原理涉及复杂的物理方程,这些方程描述了光在三维空间中的传播和散射。NeRFs通过建模这些物理过程来近似求解渲染方程,实现新视角下的图像合成。
NeRFs在渲染时需要考虑光线的传播和材质的相互作用,这涉及到体渲染技术,它将3D空间分为体素并进行颜色和密度的插值。NeRFs的训练过程需要大量的计算资源和时间,但它能够生成逼真的3D模型,具有广泛的应用前景。
2.3 OCC在自动驾驶中的应用
OCC(Occupancy Networking)技术,在自动驾驶感知领域中,主要指的是利用传感器数据构建三维空间中的占用网络,以表示周围环境中的物体和空间状态。这种技术能够帮助自动驾驶系统更准确地理解和预测环境中的物体动态和潜在障碍物,从而提高决策和路径规划的准确性。
OCC技术的核心思想是将三维空间划分为一系列的小单元(例如体素或网格单元),并通过传感器数据(如摄像头,激光雷达等)来判断这些单元是否被物体占用。具体来说,OCC技术在自动驾驶感知中的一些关键应用包括:
- 三维建模
OCC技术可以利用摄像头等传感器收集的数据,构建起周围环境的三维模型。这一过程中,传感器数据被用来判断每个空间单元是否被障碍物(如车辆、行人、路标等)占用,从而在三维空间中生成一个精确的占用图。
- 动态障碍物检测
通过实时更新的占用图,自动驾驶系统可以检测到环境中物体的运动状态,从而识别出动态障碍物,如行驶中的车辆和行人。
- 语义分割
除了判断单元是否被占用,OCC技术还可以进一步进行语义分割,即区分不同类型的物体。例如,它可以将不同的车辆、行人、道路标志等区分开来,为后续的决策模块提供更为丰富的信息。
- 深度估计
OCC技术还可以通过分析传感器数据来估计物体的深度信息,这对于理解物体在三维空间中的位置和形状至关重要。
- 路径规划与决策
基于生成的占用网络,自动驾驶系统可以进行更为精确的路径规划和决策。例如,系统可以通过避障算法来规避检测到的障碍物,或者通过预测算法来预测障碍物的未来运动轨迹。
- 仿真与训练
在自动驾驶系统的仿真和训练过程中,OCC技术可以创建出高度逼真的三维环境,帮助算法进行深度学习训练,提高其在真实世界中的表现。
OCC技术在自动驾驶感知领域具有重要的应用价值,但其实现也面临着一些挑战,例如处理大量的传感器数据、实时计算、对不同类型物体的区分处理等。随着技术的不断进步,OCC技术有望在未来的自动驾驶系统中发挥更大的作用。
3 结论
OCC技术是自动驾驶领域中的一项重要技术,尤其在"纯视觉"自动驾驶方案中占据核心地位。它通过高精度、高速度识别精度、多模态融合、实时性和鲁棒性等特点,为自动驾驶的安全行驶提供有力保障。随着技术的不断发展,OCC技术将在自动驾驶领域发挥越来越重要的作用。
下一代的端到端也是基于学习算法,目前国内各大厂商都在追赶特斯拉的落地方案。追赶不是目标,顾客好用才是目标。