首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算机视觉技术在无人驾驶中的目标检测

汽车学堂,www.auto-mooc.com

隶属清华大学苏州汽车研究院旗下清研车联

专注汽车新技术人才培养

机器视觉只是无人驾驶感知系统中的一个部分,无人驾驶感知系统的构建还需要激光雷达、毫米波雷达、超声波雷达等其他传感器的共同作用,才能构建出一个可以识别交通标志、车道线、周围行人车辆的强大体系。只是不可置否,机器视觉是无人驾驶感知系统最为基础也最为关键的一个部分,它担负着交通标志、交通灯的检测,车道线的识别与偏航的计算,也在障碍物检测与定位中也是至关重要的一部分。

机器视觉的物体识别,多是依托多层卷积神经网络而构建的,通过对输入的RGB三通道数据进行池化和卷积计算的处理。

图像中的每个像素点都是由RGB(红绿蓝)三个颜色通道组成。为了方便描述RGB颜色模型,在计算机中约束了每个通道由暗到亮的范围是0~255。一幅彩色图像,其实就是由三幅单通道的图像叠加。

计算出当前锁定区域是某类物体的概率,再通过softmax函数对应上物体该有的标签,再通过minibox进行二维层面的物体最小方框回归计算,最终锁定目标物体在图像上的位置和类别。

目标检测

分类、分类+定位、检测、分割

目标检测是在一幅图片中找到目标物体,给出目标的类别和位置。

在 2014 年以前,目标检测通常采用比较传统的方法,先想办法生成一些候选框,然后提取出每个框的特征,例如 HOG,最后通过一个分类器来确认这个框是否是目标物体。而生成候选框的方式也有很多种,比如用不同大小的预选框在图片中滑动,或者像 Selective Search 算法一样,可以根据图片本身的纹理等特征生成一些候选框。

目标检测方法分为 One-Stage 和 Two-Stage 两种。两步检测算法是把整个检测过程分为两个步骤,第一步提取一些可能包含目标的候选框,第二步再从这些候选框中找出具体的目标并微调候选框。而一步检测算法则是省略了这个过程,直接在原始图片中预测每个目标的类别和位置。两步检测最经典的就是 Faster-RCNN三部曲。R-CNN 是比较早期提出用深度学习解决检测的模型。

思路是先用 Selective Search 算法提取一定数量的候选区域,然后对于每个候选区域使用 CNN 提取特征,最后在提出的特征后面接一个回归和 SVM 分类,分别预测目标物体的位置和类别。

R-CNN 的优点是使用了 CNN 提出的特征,效果比较好。当然,缺点也很明显,整个过程分成了好几步,无法完整的训练,另外由于每个候选框提特征是独立计算的,整个过程包含了大量的冗余计算。

Fast-RCNN 是在此基础上的一个改进版本,主要解决了提取特征时冗余计算的问题。首先对整张图片做卷积,提取特征得到一层 Feature Map,然后再提取每个候选框的特征时直接在这个 Feature Map 上面提取特征。

但是每个候选框的尺寸是不一样的,而后面做分类和回归时要求特征必须定长。为了解决这个问题 Fast-RCNN 中提出了 Roi-Pooling 层,可以对不同大小的区域提取出固定维度的特征,使得后面的分类和回归可以正常运行。这个模型整体减少了大量的冗余计算,提高了整个模型的运行速度。

Faster-RCNN 是三部曲的最后一步。Fast-RCNN 存在的问题是:提取候选区域仍然是使用的 Selective Search 算法,打乱了整个模型的连续性。

Faster-RCNN 为了改进这点提出了 RPN 结构,RPN 可以在 Feature Map 的每个位置提取很多不同尺寸、不同形状的候选框,也叫 Anchor。每个 Anchor 后会跟一个二值分类,来判断这个 Anchor 是否是背景,并接一个回归对位置进行微调。具体的类别和位置在网络尾端还会进一步调整。至此,整个目标检测过程都可以实现端到端的进行训练。

在一步检测中,比较经典的是 YOLO和 SSD模型。这里介绍下 YOLO 算法。首先将图片划分为 NxN 的方格,每个方格预测 C 个类别概率,表示某类目标中心落在这个方格的概率,并且预测 B 组位置信息,包含 4 个坐标和 1 个置信度。整个网络输出 NxNx(5xB+C) 的 Tensor。YOLO 的优点是:省略两步检测中提区域的步骤,所以速度会比较快,但是它对于密集小物体的识别很不好。后续的 YOLOv2 和 YOLOv3 都对此做出了很多的改进。

分割

语义分割、实例分割

分割,是一个对图片中的像素进行分类的问题。分割最初分为语义分割和实例分割。

语义分割是对图片中每一个像素都要给出一个类别,例如地面、树、车、人等。而实例分割则和目标检测比较像,但是实例分割是要给出每个目标的所有像素,并且同一种类别不同目标要给出不同的 ID,即可以将每个目标清晰的区分开。今年,有人研究将语义分割和实例分割统一在一起,称为全景分割,如下图所示:

在无人驾驶中应用比较多的是语义分割。例如路面分割、人行横道分割等等。语义分割比较早期和经典的模型是 FCN[。FCN 有几个比较经典的改进,首先是用全卷积层替换了全连接层,其次是卷积之后的小分辨率 Feature Map 经过上层采样,再得到原分辨率大小的结果,最后 FCN 使用了跨层连接的方式。跨层连接可以将高层的语义特征和底层的位置特征较好地结合在一起,使得分割的结果更为准确。FCN 结构图如下所示:

目前很多主流的分割模型准确率都比较高,但是帧率会比较低。而无人驾驶的应用场景中模型必须实时,尤其是高速场景下,对模型的速度要求更高。目前美团使用的是改进版的 ICNet,既保证了模型的运行速度,又保证了模型的准确率。下图是一些经典分割模型的时间和准确率对比图:

距离估计

对于距离信息的计算有多种计算方式:

激光测距,原理是根据激光反射回的时间计算距离。这种方式计算出的距离是最准的,但是计算的输出频率依赖于激光本身的频率,一般激光是 10Hz。

单目深度估计,原理是输入是单目相机的图片,然后用深度估计的 CNN 模型进行预测,输出每个像素点的深度。这种方式优点是频率可以较高,缺点是估出的深度误差比较大。

结构光测距,原理是相机发出一种独特结构的结构光,根据返回的光的偏振等特点,计算每个像素点的距离。这种方式主要缺点是结构光受自然光影响较大,所以在室外难以使用。

双目测距,原理是根据两个镜头看到的微小差别,根据两个镜头之间的距离,计算物体的距离。这种方式缺点是计算远处物体的距离误差较大。

根据相机内参计算,原理跟小孔成像类似。图片中的每个点可以根据相机内参转化为空间中的一条线,所以对于固定高度的一个平面,可以求交点计算距离。通常应用时固定平面使用地面,即我们可以知道图片中每个地面上的点的精确距离。这种计算方式在相机内参准确的情况下精度极高,但是只能针对固定高度的平面。

———— / END / ————

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181228A10D5500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com