许多现实世界的问题需要一定程度的灵活性,因为他们难以用人工编写的算法实现。这样的一个领域是基于视觉的自动驾驶。在这个任务中,多变的环境再加上实时处理约束的双重挑战使得机器学习系统的灵活性和有效性成为必需的要素。本章介绍了这样的一个学习系统,被称为ALVINN(Autonomous Land Vehicle In a Neural Network,神经网络的自动汽车)。它呈现了神经网络架构和训练的技术,正是这些使ALVINN可以在各种情况中以可达55英里每小时的速度正常行驶,包括单行路和土路,有车道线的多行路和无车道线的道路,有障碍物的道路和越野环境。
传统视觉和机器人技术的一个难题是自动导航,主要是因为真实世界场景的噪声和多变性。基于传统图像处理和模式识别技术的自动导航系统在某些情况下表现良好,但有些情况会出问题。困难的部分原因源于这样一个事实,在各种不同的环境中,这些系统执行的处理始终是固定的。
在高程度噪声和多变性的领域中,人工神经网络已显示出前途无量的性能和灵活性,如手写字符识别,语音识别和人脸识别。 ALVINN是将联结学习技术灵活性加入到自动机器人导航的一个系统。具体而言,ALVINN是一个人工神经网络,该网络被用来控制Navlab(卡内基·梅隆大学的自动驾驶测试车,参见图1)。
本章介绍了ALVINN系统的架构,训练和性能。它演示了适当训练后的简单联结网络如何在各种各样的场合中精确引导机器人。尤其是,这一章介绍了训练方法,即让ALVINN观看一个驾驶员对新场景做出的反应,从而在不到5分钟的时间学会控制Navlab。使用这些技术后,ALVINN可以在各种情况下(上文提到的各种路况)以可达55英里每小时的速度行驶。
在ALVINN系统中使用的基本网络架构是一个单隐层的前馈神经网络(参见图2)。输入层由30x32个“视网膜”单元组成,该单元由摄像机或激光扫描测距投射到一个传感器图像上得到。960个输入单元每个都全连接到隐层的4个单位,而隐层再全连接到输出层。 输出层的30个单元是当前适当转向(用于保持车辆在道路上或者防止它与邻近的障碍物发生碰撞)的线性表示。最中心的输出单元表示”直行“状态,而中心的左侧和右侧分别表示左,右转弯。输出向量最左和最右侧的单元分别表示以20米为半径向左,向右转弯,在这之间的单元表示转弯曲率线性下降到“直行”(输出向量的中间单元)。
为了驱动Navlab,从传感器得到的图像被缩小到30x32像素上并投影到输入层。整个网络传播激活后,输出层的激活形状被转换成一个车辆的转向命令。由网络决定的转向选取激活的质心(质心周围围绕着最高激活水平的输出单元)。当确定转向时,使用激活的质心而不是最活跃的输出单元引导好的转向校正,从而提高ALVINN的驾驶精度。
用反向传播学习算法对网络进行训练以产生正确的转向。在反向传播中,网络首先用输入表示,激活通过网络向前传播来确定网络的响应。然后将网络的响应与已知的正确响应进行比较。如果网络的实际响应与正确响应不匹配,网络中的连接权重编稍进行修改使得产生的响应更加匹配正确的响应。
自动驾驶非常有潜力成为类似反向传播这种监督学习算法的理想领域,因为有容易获得的教学信号或“正确响应”来表示人类驾驶员当前转向。理论上教一个网络模仿人类是可行的,因为他们利用当前传感器图像作为输入以及人类的当前转向作为希望的输出来驱动。这种即时训练的想法在图3中描述。
通过省去了手动编程的训练实例产生器,真实图像上的训练将大大减少为新情况开发网络所需要的人力劳动。即时培训也允许系统迅速适应新情况。
利用现场传感器图像训练网络(像人类驾驶那样)存在两个潜在的问题。首先,训练期间,人操纵汽车到道路的中央之后,该网络将永远不会被呈现这种情况,即必须从直线度误差中恢复回来。当汽车自身进行驾驶时,该网络可以碰巧偏离道路中心,因此它必须转向公路中间进行恢复。第二个问题是,仅与当前图像和转向的训练网络可能会导致它超量学习近期输入。如果在训练快结束时,驾驶员驾驶Navlab到很长的直线公路上,网络将用一系列相似的图像序列表示。训练集多样性的持续缺乏会导致网络“忘记”它已经在弯道上学的驾驶技术,而只学会了一直直行。
与即时训练相关的两个问题源于这样的事实,即反向传播需要数据表示整个学习任务的表示。我们考虑的增加训练集多样性的第一个方法是让驾驶员在训练期间突然转向。这个想法是通过展示驾驶员将车辆转回到道路中心的例子来教网络如何从错误中恢复回来。然而,该方法是不切实际的,原因有二:首先,驾驶员突然转向时,训练需要学会关闭发动机即便是驾驶员依然在操纵汽车转向道路,当他突然转向道路中心时再重新启动。如果没有这种切换学习状态的能力,网络将无法正确地模仿人类突然转向路边以及重新启动。即使有可能,在训练期间启动和关闭的学习需要大量的人工输入,这不是我们希望看到的。通过突然转向来训练的第二个问题是这需要在许多情况下进行操作,使得网络学习到一般的表示。当在城市交通中训练时,这是很耗时的并且也很危险。
为了实现训练集中真实传感器图像的多样性,不考虑突然转向训练所带来的问题,我们已经开发出一种技术,变换传感器图像来创建额外的训练范例。不只是用当前传感器图像和转向呈现给网络,在软件中每个传感器图像被平移和旋转来创建额外的图像,在这些图像中(相对于环境)汽车出现在不同的位置(见图4)。传感器相对于地面的位置和方向是已知的,所以可以使用透视几何来实现精确的转换。
图像变换过程是,首先确定地平面区域(在原始图像中是可见的)和变换图像中可见的区域。这些区域形成了两个重叠的梯形,如由图5中鸟瞰图所示。为了确定变换图像中像素的合适值,该像素被投影到地平面,然后反投影到原始图像。对应于原始图像的像素值被用做转换图像的像素值。一个重要的认识是像素到像素的映射(其实现了特定变换)是恒定的。换句话说,假定一个平面世界,在原始图像中采样的像素(为了在变换图像中实现特定的平移和翻译)总是保持不变。在图像变换技术的实际实现中,ALVINN利用了这个事实,为了执行所需的变化和翻译,预先计算了需要采样的像素。结果,变换原始图像来改变汽车的位置只涉及在预处理阶段图像缩小期间改变像素采样模型。因此,创造一个变换的低分辨率图像比降低图像分辨率以达到ALVINN的要求没有花费更多的时间。明显的,环境不总是平坦的。但由于道路上的凸起或低陷高度差足够小以至于没有明显违反平面世界的假设。
3.2.1外插缺失的像素
图5中两个梯形完全重叠的部分比较少,这表明图像变换方案还需要一个步骤。该步骤涉及确定在原始图像没有对应像素的像素值。考虑图6所示的变换,为了更好的呈现该车位于原始图像的右边一米处,不仅需要移位原始图像中的像素到左侧,还需要填充右侧边缘的位置像素。注意每行需要被外推像素值的像素数量,底部附近比顶部的要多。这是因为一米的未知地平面到原始图像中可见边界的右侧底部比顶部覆盖更多的像素。我们已经尝试了两种技术来外推这些未知的像素值(参见图7)。
在第一种技术中,为了确定投射到变换图像中地平面A点的像素值,找到了原始图像梯形中的点B。这点是反投影到原始图像找到的合适像素。顶部右侧的图像显示了使用外插方案来填充缺失像素的效果。这种技术的问题在于沿着图像的每行会导致污点,如图8中间图像所示。在图8中,最左边的图像表示实际降低分辨率的图像。注意界定中央和右边界车道的线。中间的图像是使用上述的外插方法得到的转换原始图像到其右侧一米位置处。路右边的线可以看到污点,它与原始图像的边界相交。因为这个污点的长度与正确的转向高度相关,所以网络依靠这个污点的大小来预测正确的转向。然而,当自身驱动时,特征的侧面污点不存在了,因此网络性能较差。
为了消除变换过程中的块效应,我们实施一个更实际的外插方法,该方法基于这样的一个事实,即感兴趣的特征(如道路边缘和车道标记)通常和路是平行的,因此平行于车的当前方向。用这一假设来外插图7中未知像素A的值,从原始图像的观看梯形中采样的地面点不是最接近的点(B点),而是沿着穿过点A的最近的点,且平行于车的起始方向(C点)。
改进的外插方法在转换图像上的效果可以在图7右下角明显的看出来。这个方法沿着缺失像素和消失点的那条线上产生了外插,如图的右下方。这个外插方法的优势通过比较图8中间和右侧的图像可以看出来。划定右侧车道的线(使用先前的方法这是不可能的)在图像中右侧光滑地被延伸,并且该条线通过移动原始图像且量和中间图像一样得到,但是是使用改进的外插法。
改进后的变换方案肯定会使变换图像看起来更真实,但是为了测试它是否提高了网络的行驶性能,我们做了以下实验。首先,我们收集了实际的双车道图像就像图8左侧展示的那样,以及获取到图像时驾驶员突然转的方向。然后,我们用这组图像来训练两个网络。第一个网络使用朴素的变换方案,第二个网络使用改进的变换方案。移位和旋转的幅值,以及训练过程中使用的缓冲(buffering)方案将在下面详细的描述。然后网络在一个不相交的真正双车道图像上进行测试,由网络指示的操控方向和人的操控方向进行比较。在100个测试图像上,使用更真实的变换方案训练的网络比使用朴素变换方案训练的网络少了37%的转向误差。更详细地,网络产生的转向误差被测度为输出向量中激活网络的峰值和正确位置(在这种情况下就是驾驶员实际的转向)之间的距离(单元数即神经元)。这个转向误差测度如图9。在此情况下,用朴素变换方法训练的网络平均转向误差是100个测试图像中有3.5个单元,而用更真实变换方法平均转向误差只有2.2个单元。
同变换输入图像方法同样重要的是用于确定每个变换图像正确转向方向的方法。驾驶员对原始图像进行的正确转向必须对每个变换图像进行改变来说明改变车辆的位置。通过用一种名为pure pursuit steeping的简单模型可以实现。在该模型中,正确的转向是引导汽车到期望的位置(通常是路的中心)且以一个固定的距离前进。以pure pursuit steering为基础的想法如图10所示。汽车在A的位置,沿着驾驶员当前转向弧行驶一段预定的距离会将汽车带到目标点T,假设它为道路的中心。
用水平移位s和旋转变换图形后汽车在B点,根据pure pursuit模型,合适的操纵方向也将引导汽车到目标点T。数学上,计算操纵圆弧半径的公式(即带领汽车从点B到点T)是:
其中,r是转向半径,l是前行的距离,d是如果汽车从B点直行l距离后终止点离目标T的距离。位移d可以用下面的公式确定:
其中,dp是如果从A点直走l距离处离T点的距离,s是A点到B点的水平距离,是从A点旋转到B点的角度。dp可以用下式计算:
其中rp是驾驶员转向弧的半径。
在pure pursuit模型中仅存的未指定参数为l。根据经验,我发现在5到55英里每小时的速度范围内,准确和稳定的汽车控制可以用下面的规则来实现:向前看汽车在2-3秒内行驶的距离。
有趣的是,根据这个选择先行距离的经验规则,操纵的pure pursuit模型是相当不错近似了人们是如何实际操纵的。Reid,Solowka和Biling发现时速为50km/ h时,人类受试者对横向位移为1m的车辆所转向的半径为511米到1194米。先行的距离等于汽车在2.3秒内行驶的距离,pure pursuit模型指示转向半径为594米,在人类的反应范围内。同样,人类受试者相对于当前道路方向有1度方位误差时操纵半径为719米到970米。再次是2.3秒先行的距离,pure pursuit操纵模型指示了半径为945米,落在人类反应的范围内。
像图像变换方案,操纵方向变换技术使用一个简单的模型来确定汽车位置和/或方向的改变如何影响现状。在图像变换方案中,平面世界假设和透视投影规则用来确定改变汽车的位置和/或方向如何影响汽车前方场景的传感器图像。在操纵方向变换技术中,人们如何驾驶的模型被用于确定一个特定的汽车变换如何改变正确的操纵方向。在两种情况下,变换技术独立于驾驶场景。人们可以在单行道的土路或者多行道的公路上行驶:变换方法将是相同的。
用拟人的说法,变换传感器图像来创造更多训练图像相当于告诉网络“我不知道图像中那些特征对于确定操纵正确方向是重要的,但无论他们是什么,这里有一些其他的位置和方向,你可能从当中看到他们“,同样,对于每个新训练图像变换操纵方向的方法相当于告诉网络”无论重要的特征是什么,如果你在新的位置和方向上看到他们,这就是你应该如何变化的反应“,因为它不依赖于重要的图像特征是什么的模型,而是通过训练获得这个知识,该系统能够在各种情况下进行驱动,这将在后面的章节看到。
这些弱模型足以解决与实时训练传感器数据相关的两个问题。特别地,使用变换训练模式允许网络学习如何从驾驶的错误中恢复。此外,过度在重复图像上训练是一个较小的问题,因为变换训练范例保持了各种训练集。
to be continue……
原文地址:http://blog.csdn.net/u010182633/article/details/46063145