文章导读
本文针对自动驾驶行业的视觉感知做简要介绍,从传感器端的对比,到数据的采集标注,进而对感知算法进行分析,给出各个模块的难点和解决方案,最后介绍感知模块的主流框架设计。
目录
传感器
相机标定
数据标注
功能划分
模块架构
视觉感知系统主要以摄像头作为传感器输入,经过一系列的计算和处理,对自车周围的环境信息做精确感知。目的在于为融合模块提供准确丰富的信息,包括被检测物体的类别、距离信息、速度信息、朝向信息,同时也能够给出抽象层面的语义信息。所以道路交通的感知功能主要包括以下三个方面:
道路目标检测(车辆、行人和非机动车)
交通标识检测(交通标志和红绿灯)
可行驶区域(道路区域和车道线)
这三类任务如果通过一个深度神经网络的前向传播完成,不仅可以提高系统的检测速度,减少计算参数,而且可以通过增加主干网络的层数的方式提高检测和分割精度。如下图所示:可以将视觉感知任务分解成目标检测、图像分割、目标测量、图像分类等。
传感器
1. 前视线性相机:视角较小,一般采用52°左右的相机模组安装于车辆前挡风玻璃中间,主要用来感知车辆前方较远的场景,感知距离一般为120米以内。
2. 周视广角相机:视场角相对较大,一般采用6颗100°左右的相机模组安装在车辆周围一圈,主要用来感知360°的周身环境(安装方案与特斯拉大同小异)。广角相机存在一定的畸变现象,如下图所示:
3. 环视鱼眼相机:环视鱼眼相机视角较大,可以达到180°以上,对近距离的感知较好,通常用于APA,AVP等泊车场景,安装于车辆左右后视镜下方以及前后车牌下方等4个位置做图像的拼接、车位检测、可视化等功能。
相机标定
相机标定的好坏直接影响目标测距的精度,主要包括内参标定和外参标定。
内参标定用于做图像的畸变校正,外参标定用于统一多个传感器的坐标系,将各自的坐标原点移动到车辆后轴中心处。
最耳熟能详的标定方法就是张正友的棋盘格方法,在实验室里一般会做一个棋盘格板子标定相机,如下图:
1. 出厂标定
但是自动驾驶做前装量产,由于批量生产的缘故,无法一辆辆使用标定板做标定,而是构建一个场地用于车辆出厂时标定,如下图所示:
2. 在线标定
另外考虑到车辆运行一段时间或者在颠簸的过程中摄像头位置的偏移,感知系统中也有在线标定的模型,常利用消失点或车道线等检测得到的信息实时更新俯仰角的变化。
数据标注
自然道路场景存在各种各样的突发状况,所以需要采集大量的实车数据用来训练。高质量的数据标注成了一件至关重要的工作,其中感知系统需要检测的全部信息均需要进行标注。标注形式包括目标级标注和像素级标注:
目标级标注如下图:
像素级标注如下图:
由于感知系统中的检测和分割任务常采用深度学习的方式实现,而深度学习是一项数据驱动的技术,所以需要大量的数据和标注信息进行迭代。为了提高标注的效率,可以采用半自动的标注方式,通过在标注工具中嵌入一个神经网络用于提供一份初始标注,然后人工修正,并且在一段时间后加载新增数据和标签进行迭代循环。
功能划分
视觉感知可以分为多个功能模块,如道路目标检测、目标测量、可行驶区域、车道线检测、交通标识检测等。
1. 道路目标检测
对车辆(轿车、卡车、电动车、自行车)、行人等动态物体的识别,输出被检测物的类别和3D信息并对帧间信息做匹配,确保检测框输出的稳定和预测物体的运行轨迹。神经网络直接做3D回归准确度不高,通常会对车辆拆分成车头,车身,车尾,轮胎多个部位的检测拼成3D框。
目标检测难点:
小目标检测问题
多目标重叠问题
部分被遮挡问题
外观相似的问题
目标多样性问题
对于视觉目标检测,在恶劣天气环境下,感知性能会有一定的下降;在夜晚灯光昏暗时,容易出现漏检的问题。如果结合激光雷达的结果进行融合,对于目标的召回率会大幅提高。
具体解决方案:
目标检测任务现在大多采用深度学习的方法来做位置的回归和类别的区分。在设计神经网络的时候,可以考虑以下Tricks:
降低下采样率并结合空洞卷积,减少小物体特征的损失;
采用FPN结构进行深层特征和浅层特征的融合来增强目标的特征信息;
加入Mosiac,MixUp等混叠形式的数据增强方法,提供模型对重叠和遮挡场景的鲁棒性;
多种算法或传感器的联合校验,降低在特定场景下的误检或漏检率;
但是深度学习作为一种概率形式的算法,即使提取特征能力强大,也不能覆盖掉所有的动态物体特征。在工程开发中可以依据现实场景增加一些几何约束条件(如尺寸信息,空间位置信息,运动连贯性等)。
增加几何约束的好处是提高检测率,降低误检率,如轿车不可能误检为卡车。可以训练一个3D检测模型再配合后端多目标追踪优化以及基于单目视觉几何的测距方法完成功能模块。
2. 目标测量
目标测量包括测量目标的横纵向距离,横纵向速度等信息。根据目标检测跟踪的输出借助地面等先验知识从2D的平面图像计算车辆等动态障碍物的距离信息、速度信息等或者通过NN网络直接回归出现世界坐标系中的物体位置。如下图所示:
单目测量难点:
如何从缺乏深度信息的单目系统中计算出前方的物体距离。那么我们需要弄清楚以下几个问题:
功能需求的测距范围
场景提供的先验知识
需要做到的横纵向精度
如果大量依赖模式识别技术来弥补深度的不足。那么模式识别是否足够健壮能满足串行生产产品的严格检测精度要求?
单目测量方案:
其一,就是通过光学几何模型(即小孔成像模型)建立测试对象世界坐标与图像像素坐标间的几何关系,结合摄像头内、外参的标定结果,便可以得到与前方车辆或障碍物间的距离;
其二,就是在通过采集的图像样本,直接回归得到图像像素坐标与车距间的函数关系,这种方法缺少必要的理论支撑,是纯粹的数据拟合方法,因此受限于拟合参数的提取精度,鲁棒性相对较差。
3.可行驶区域
对车辆行驶的可行驶区域进行划分主要是对车辆、路沿、无障碍物的区域进行划分,最后输出自车可以通行的安全区域。
可行驶区域难点:
分割的区域边缘不够精细;
数据的类别存在大量不平衡问题;
如何从分割图中获取可行驶区域;
可行驶区域方案:
可行驶区域的检测本质上是一种语义分割的问题,大多采用深度学习进行实现。近些年分割网络在空洞卷积,池化金字塔,路径聚合,环境编码等方法的助力下效果越来越好,但是在静态或动态障碍物的边界处还是存在一些毛刺。在工程上可以配合路沿、车道线、目标框的结果来修正语义的边缘信息并从矢量包络或栅格图中定义可行驶区域;数据的不平衡问题往往出在训练阶段,通常可从损失函数的设计以及数据的上下采样来缓解此类现象。
4. 车道线检测
车道线检测包括对实线、虚线、单黄线、双黄线检测、汇入线等各种类型的检测。功能要求上也逐渐从像素级的分割到抽象空间的判断,如下图所示:
车道线检测难点:
车道线的细长形态结构,需要强大的高低层次特征融合,来同时获取全局的空间结构关系,和细节处的定位精度。
车道线的形态有很多不确定性,比如被遮挡,磨损,以及道路变化时本身的不连续性。需要算法针对这些情况有较强的推测能力。
车辆的偏离或换道过程会产生自车所在车道的切换,车道线也会发生左/右线的切换。一些提前给车道线赋值固定序号的方法,在换道过程中会产生歧义的情况。
车道线检测方案:
其一,基于传统的图像处理方法,通过边缘检测滤波等方式分割出车道线区域,然后结合霍夫变换、随机采样一致性等算法进行车道线检测。这类算法需要人工手动去调滤波算子,根据算法所针对的街道场景特点手动调节参数。
其二,基于深度学习的方法,通过二值语义分割产生掩码图部分,再对掩码图的线进行三次方程拟合。
5.交通标识检测
交通标识检测包括对交通红绿灯、交通标志牌等静态目标的检测识别。如下图所示:
交通标识检测难点:
小目标问题,往往交通标识目标较小;
多样性问题,不同地区红绿灯形态各异;
场景复杂问题,路口处的信号灯安装位置,加上临时信号灯,算法应该选择哪个作为通行标准;
交通标识检测方案:
虽然对于小目标检测、目标多样性问题,也可以采用类似道路目标检测中的修改神经网络,堆叠各种Tricks增强特征提取和泛化能力,再用大量数据迭代来覆盖各种形状的信号灯。但是最有效直接的手段仍然是基于V2X的普及,通过发送的车端的准确信号,不仅解决了传感器对交通标识感知的检测误差问题,同时也可以避免路口信号灯的选择问题。
自动驾驶的发展,很大程度上不会是单车的智能,而是依托于智慧城市的建立,在车路协同的过程中各司其职做环境的感知。
模块架构
目前开源的感知框架Apollo和Autoware,不少研究人员或者中小公司的感知系统开发会借鉴其中的思想,所以在这里介绍一下Apollo感知系统的模块组成。
相机输入-->图像的预处理-->神经网络-->多个分支(红绿灯识别、车道线识别、2D物体识别转3D)-->后处理-->输出结果(输出物体类型、距离、速度代表被检测物的朝向)
即输入摄像头的数据,以每帧信息为基础进行检测、分类、分割等计算,最后利用多帧信息进行多目标跟踪,输出相关结果。整个感知流程图如下:
上述核心环节仍是神经网络算法,它的精度、速度、硬件资源利用率都是需要衡量考虑的指标,哪一个环节做好都不容易,物体检测最容易误检或漏检、车道线检测拟合方法较难、红绿灯这类小物体检测难度大,通行空间的边界点要求高。
责任编辑:lq
-
传感器
+关注
关注
2552文章
51228浏览量
754651 -
神经网络
+关注
关注
42文章
4774浏览量
100894 -
自动驾驶
+关注
关注
784文章
13867浏览量
166597
原文标题:自动驾驶的视觉感知包括哪些内容?
文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论