在自动驾驶技术的发展中,视觉感知模块扮演着至关重要的角色。百度Apollo自动驾驶平台致力于通过先进的视觉感知技术实现车辆对周围环境的准确感知和理解,从而实现安全、高效的自动驾驶。本文将为您介绍百度Apollo自动驾驶视觉感知模块的基本原理、技术特点及其在自动驾驶中的应用。
摄像头作为无人车系统中最重要的传感器之一,因为其信息丰富、观测距离远等特点,在障碍物检测和红绿灯检测等方向发挥着不可替代的作用,是对激光雷达感知结果的重要补充。
但摄像头有着容易受环境影响、缺乏深度信息等缺点,给无人驾驶系统中的视觉感知算法带来了巨大的挑战。因此,如何建立一套高精确率和高稳定性的视觉感知算法,是无人车感知模块的核心问题。视觉感知算法在 Apollo 平台上主要有 3 个应用场景,分别是红绿灯检测、车道线检测、基于摄像头的障碍物检测。
每个模块又可以分为 3 部分,分别是图像的预处理、神经网络模型以及后处理。
红绿灯检测模块的主要作用是检测当前路况下在摄像头的视觉范围内的红绿灯的状态,这是一个典型的目标检测任务。如下图所示,红绿灯检测模块一共包含 4 个部分,分别是数据预处理、红绿灯位置检测、红绿灯识别和矫正。
我们把车道线检测算法当作分割问题,在图像中寻求对于语义上车道线存在位置的检测,即使它是模糊的、被光照影响的、甚至是完全被遮挡的,我们都希望能将它检测出来。
车道线检测的网络结构如上图所示,主干是一个编码-解码结构的分割网络,用来输出车道线分割结果。在车道编码器的末端附加一个网络分支来检测消失点。
该分支由卷积层和全连通层组成,其中卷积层为消失点任务转换车道特征,全连通层对整个图像进行全局汇总,输出消失点位置。
车道线检测模型在遮挡情况下和转弯时都可以对车道线进行有效的检测。
障碍物检测部分采用的是基于单目视觉的障碍物检测算法,根据相机获取的图像得到障碍的类别和位置信息。
这里使用 7 个变量来表示 3D 边框,分别是物体的长宽高,物体的位置 x,y,z 以及物体的旋转角度 θ。
上图是 3D 障碍物检测模块的模型结构图,输入的是单张的图像信息,经过神经网络提取特征,最后接上检测模块(Apollo 有两个检测模型,分别是基于 YOLO 的 one-stage 检测方法和基于中心点检测的检测方法)。
最终,通过模型可以得到障碍物的 3D 信息(长宽高、角度等),可以根据这些信息求出障碍物的 3D 边框。