在阐述Occupancy之前,先理解为什么要使用Occupancy?
如果自动驾驶车辆在行驶过程中看到的物体不是数据集的一部分,这个时候容易出现误判。
而在基于激光雷达的系统中,由于检测到点云,可以确定障碍物的存在,但是在相机系统中,必须首先使用神经网络检测物体,仅凭这一点就可能会造成不少事故。
注意上图中列出的几个问题:
自动驾驶感知的OCC技术,即Occupancy Network(占用网络)技术,是自动驾驶领域中的一项重要技术,尤其在“纯视觉”自动驾驶方案中占据核心地位。以下是对OCC技术的详细介绍:
(1)定义与原理
(2)技术特点
(3)应用场景
(4)竞争与优势
(1)基本原理
占用网络是一种不同的算法,基于机器人的思想命名为占用网格映射;它包括将世界划分为一个网格单元,然后定义哪个单元被占用,哪个单元是安全的(有点像三维的grid map)。
首先,Occupancy Network的工作原理是将来自多视图图像的输入数据转换为一个三维特征空间。然后,它使用深度神经网络来学习这个特征空间中的占用概率。最后,Occupancy Network将这些占用概率转换为一个三维占用网格,这个网格可以精确地表示车辆周围环境中的障碍物和其它元素。
参照下图所示,整个Occupancy的过程如下描述(参考特斯拉公布的方案):
(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模型,具有广泛的应用前景。
OCC(Occupancy Networking)技术,在自动驾驶感知领域中,主要指的是利用传感器数据构建三维空间中的占用网络,以表示周围环境中的物体和空间状态。这种技术能够帮助自动驾驶系统更准确地理解和预测环境中的物体动态和潜在障碍物,从而提高决策和路径规划的准确性。
OCC技术的核心思想是将三维空间划分为一系列的小单元(例如体素或网格单元),并通过传感器数据(如摄像头,激光雷达等)来判断这些单元是否被物体占用。具体来说,OCC技术在自动驾驶感知中的一些关键应用包括:
OCC技术可以利用摄像头等传感器收集的数据,构建起周围环境的三维模型。这一过程中,传感器数据被用来判断每个空间单元是否被障碍物(如车辆、行人、路标等)占用,从而在三维空间中生成一个精确的占用图。
通过实时更新的占用图,自动驾驶系统可以检测到环境中物体的运动状态,从而识别出动态障碍物,如行驶中的车辆和行人。
除了判断单元是否被占用,OCC技术还可以进一步进行语义分割,即区分不同类型的物体。例如,它可以将不同的车辆、行人、道路标志等区分开来,为后续的决策模块提供更为丰富的信息。
OCC技术还可以通过分析传感器数据来估计物体的深度信息,这对于理解物体在三维空间中的位置和形状至关重要。
基于生成的占用网络,自动驾驶系统可以进行更为精确的路径规划和决策。例如,系统可以通过避障算法来规避检测到的障碍物,或者通过预测算法来预测障碍物的未来运动轨迹。
在自动驾驶系统的仿真和训练过程中,OCC技术可以创建出高度逼真的三维环境,帮助算法进行深度学习训练,提高其在真实世界中的表现。
OCC技术在自动驾驶感知领域具有重要的应用价值,但其实现也面临着一些挑战,例如处理大量的传感器数据、实时计算、对不同类型物体的区分处理等。随着技术的不断进步,OCC技术有望在未来的自动驾驶系统中发挥更大的作用。
OCC技术是自动驾驶领域中的一项重要技术,尤其在“纯视觉”自动驾驶方案中占据核心地位。它通过高精度、高速度识别精度、多模态融合、实时性和鲁棒性等特点,为自动驾驶的安全行驶提供有力保障。随着技术的不断发展,OCC技术将在自动驾驶领域发挥越来越重要的作用。
下一代的端到端也是基于学习算法,目前国内各大厂商都在追赶特斯拉的落地方案。追赶不是目标,顾客好用才是目标。