感知系统中使用了大量的计算机视觉的技术。对于目标识别目标检测来说,目前工业界用的比较多的是CNN,也就是卷积神经网络(Convolutional Neural Network)。
略
计算机不能像人类那样理解图像,图像在计算机的世界里只是一堆数值。
无人驾驶中的感知任务主要有四个:检测、分类、跟踪和语义分割。
我们可以将分类作为研究计算机视觉一般流程的例子。图像分类器是一种将图像作为输入并输出标识改图像的”标签"或者“类别"的算法。
例如,交通标志分类器查看停车标志并识别它是停车标志、让路标志、限速标志还是其他类型的标志。
分类器甚至可以识别行为,比如一个人是在走路还是跑步。
分类器有很多种,但它们都包含一系列类似的步骤。
在计算机的世界里,图像就是数值矩阵。对于图像的处理,说白了就是对于矩阵的处理。(可见数学的重要性呀!
这是一个二维的灰度图像示例:
对于彩色图像,可以看成是一个深度为3的二维色层的叠加:
感知扩展到传感器,而不仅仅是摄像头,激光雷达传感器创建环境的点云表征,提供了难以通过摄像头提供的图像信息(例如距离和高度)。
下图是一个典型的激光雷达点云图像:激光雷达通过发射光脉冲来检测汽车周围的环境。蓝色点表示反射激光脉冲的物体,中间的黑色部分则是无人车本身占据的空间。
这些点云可以告诉我们关于物体的很多信息,例如其形状和表面纹理。通过对点进行聚类和分析,这些数据提供了足够的对象检测、跟踪和分类信息。下图是一个典型的在点云上的检测和分类结果:红色的代表行人,绿色的代表其他车辆。
机器学习可以分成下面几种类别:
监督学习和非监督学习的差别就是训练集目标是否人标注。他们都有训练集 且都有输入和输出
具体的机器学习算法有:
构造间隔理论分布:聚类分析和模式识别
人工神经网络
决策树
感知器
支持向量机
集成学习AdaBoost
降维与度量学习
聚类
贝叶斯分类器
构造条件概率:回归分析和统计分类
高斯过程回归
线性判别分析
最近邻居法
径向基函数核
通过再生模型构造概率密度函数:
最大期望算法
概率图模型:包括贝叶斯网和Markov随机场
Generative Topographic Mapping
近似推断技术:
马尔可夫链
蒙特卡罗方法
变分法
最优化:大多数以上方法,直接或者间接使用最优化算法。
一种常见的多层结构的前馈网络(Multilayer Feedforward Network)由三部分组成,
这种网络一般称为感知器(对单隐藏层)或多层感知器(对多隐藏层),神经网络的类型已经演变出很多种,这种分层的结构也并不是对所有的神经网络都适用。
通过训练样本的校正,对各个层的权重进行校正(learning)而建立模型的过程,称为自动学习过程(training algorithm)。具体的学习方法则因网络结构和模型不同而不同,常用反向传播算法(Backpropagation/倒传递/逆传播,以output利用一次微分Delta rule(英语:Delta rule)来修正weight)来验证。
wiki百科的相关词条
卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。
“卷积神经网络”表示在网络采用称为卷积的数学运算。卷积是一种特殊的线性操作。卷积网络是一种特殊的神经网络,它们在至少一个层中使用卷积代替一般矩阵乘法。
卷积层是一组平行的特征图(feature map),它通过在输入图像上滑动不同的卷积核并执行一定的运算而组成。此外,在每一个滑动的位置上,卷积核与输入图像之间会执行一个元素对应乘积并求和的运算以将感受野内的信息投影到特征图中的一个元素。这一滑动的过程可称为步幅 Z_s,步幅 Z_s 是控制输出特征图尺寸的一个因素。卷积核的尺寸要比输入图像小得多,且重叠或平行地作用于输入图像中,一张特征图中的所有元素都是通过一个卷积核计算得出的,也即一张特征图共享了相同的权重和偏置项。
线性整流层(Rectified Linear Units layer, ReLU layer)使用线性整流(Rectified Linear Units, ReLU) f ( x ) = max ( 0 , x ) {\displaystyle f(x)=\max(0,x)} f(x)=max(0,x)作为这一层神经的激励函数(Activation function)。它可以增强判定函数和整个神经网络的非线性特性,而本身并不会改变卷积层。
事实上,其他的一些函数也可以用于增强网络的非线性特性,如双曲正切函数 f ( x ) = tanh ( x ) {\displaystyle f(x)=\tanh(x)} f(x)=tanh(x), f ( x ) = ∣ tanh ( x ) ∣ {\displaystyle f(x)=|\tanh(x)|} f(x)=∣tanh(x)∣,或者Sigmoid函数 f ( x ) = ( 1 + e − x ) − 1 {\displaystyle f(x)=(1+e^{-x})^{-1}} f(x)=(1+e−x)−1。相比其它函数来说,ReLU函数更受青睐,这是因为它可以将神经网络的训练速度提升数倍,而并不会对模型的泛化准确度造成显著影响。
最后,在经过几个卷积和最大池化层之后,神经网络中的高级推理通过完全连接层来完成。就和常规的非卷积人工神经网络中一样,完全连接层中的神经元与前一层中的所有激活都有联系。因此,它们的激活可以作为仿射变换来计算,也就是先乘以一个矩阵然后加上一个偏差(bias)偏移量(向量加上一个固定的或者学习来的偏差量)。
损失函数层(loss layer)用于决定训练过程如何来“惩罚”网络的预测结果和真实结果之间的差异,它通常是网络的最后一层。各种不同的损失函数适用于不同类型的任务。例如,Softmax交叉熵损失函数常常被用于在K个类别中选出一个,而Sigmoid交叉熵损失函数常常用于多个独立的二分类问题。欧几里德损失函数常常用于标签取值范围为任意实数的问题。
卷积示例:
利用CNN来进行感知任务的最基本需求,检测和分类不同的事物。
这其中的经典结构有:R-CNN及其变体的Fast R-CNN和Faster R-CNN。YOLO和SSD是具有类似形式的不同体系结构。
在检测完之后,我们就需要进行跟踪了,跟踪有以下几个重要意义:
语义分割涉及到对图像中的每一个像素进行分类,它用于尽可能的了解环境并确定车辆的可行驶区域。语义分割依赖于一种特殊的CNN,叫做全卷积网络 (Fully Convolutional Networks).
对于三维对象检测,Apollo在高精地图的基础上使用感兴趣区域(ROI)来重点关注相关对象。Apollo将ROI过滤器应用于点云和图像数据,从而缩小搜素范围并加快感知的速度。
然后通过检测网络馈送已过滤的点云,输出用于构建围绕对象的三维边界框。
最后使用被称为检测跟踪关联的算法来跨时间步识别单个对象,改算法先保留在每个时间步要跟踪的对象列表,然后在下一个时间步中找到每个对象的最佳匹配。
对于交通信号灯的分类,Apollo先使用高精度地图来确定前方是否有信号灯,如果有,高精地图则会返回灯的位置,这侧重于摄像头搜索范围,在摄像头捕捉到交通信号灯后,Apollo使用检测网络对图像中的灯进行定位,然后Apollo从较大的图像中提取信号灯,将裁剪后的交通的图像提供给分类网络,从而确定灯的颜色。如果有许多灯,则系统需要选择哪些与其车道相关。
Apollo使用YOLO网络来检测车道线和动态物体。经过YOLO网络检测后,在线模块会并入来自其他传感器的数据对车道线预测进行调整,车道线最终被并入名为”虚拟车道“的单一数据结构中。同样,也通过其他传感器的数据,对YOLO网络所检测到的动态对象进行调整,以获得每个对象的类型、位置、速度和前进方向。虚拟车道和动态对象均被传递到规划与控制模块。
下图是不同传感器的优缺点比较:
以激光雷达和雷达的融合举例,依然采用的是卡尔曼滤波算法。
融合又分为同步和异步:同步是同时更新不同传感器的测量结果;异步则是逐个更新状态。
略