强化学习自动驾驶论文阅读(三)
(一)paper传送门
Explaining Autonomous Driving by Learning End-to-End Visual Attention
(二)背景知识
强化学习(RL)---------------------------《Reinforcement Learning:An Introduction》第二版
模仿学习(IL)-----------------------------https://zhuanlan.zhihu.com/p/25688750?group_id=824388312629415936
注意力机制 -------------------------------https://blog.****.net/hpulfc/article/details/80449561
Carla(模拟器)--------------------------------https://carla.readthedocs.io/en/latest/
(三)摘要
本文基于注意力机制(视觉注意力,注意:注意力机制在NLP上和CV上虽然原理类似,但是是不同的)改进原有的模仿学习模型。作者认为通过注意力机制的引入,允许我们理解图像的哪一部分被认为是最重要的。不仅提供了一个具有解释性的end-to-end模型,而且通过在Carla模拟器对MP,IL,RL等算法的对比实验,证明本文提出的基于注意力机制模型是SOTA的。(另外,可能大家会觉得这明明是模仿学习,和强化学习有什么关系,是不是标题错了,在这,小渣想说它们原理上其实是一样的,具体的可以看背景知识提到的blog)
(四)内容
1 问题
即使自动驾驶汽车能够正确驾驶,但在一些情况,自动驾驶汽车仍可能出错并导致事故。当这种情况发生时,最重要的是评估是什么导致了这种行为,并进行干预以纠正它。因此,可解释性在自动驾驶中扮演着核心的角色,而这往往没有得到应有的重视。事实上,常见的方法,虽然在驾驶任务中是有效的,但不提供检查产生决策和预测的可能性。而且,以往在自动驾驶领域使用的注意力机制使用外部显著性来衡量中间网络特征,作者在训练中以端到端的方式直接学习注意力。
2 主体
传统的模仿学习模型如下:
本文引入注意力机制对传统的模仿学习模型进行改进:
很直觉的看出在CNN网络与Steer之间,作者添加了一些其他单元。作者思路:首先使用CNN从RGB图像中提取特征映射。通过在图像上滑动不同尺度和长宽比的boxes,可以得到规则的区域网格,从图像中选择感兴趣的区域(RoI)。使用RoI池策略,然后从CNN生成的特征图中为每个区域提取一个描述符。对于不同的Command,Attention Block为每个Rol-pooled features分配权重。然后将它们与加权和组合在一起,经过Dense Block输出steering angel,再通过误差传递更新参数(这里有一个细节,反向传播只会经过一个前面选择的head),从而,可以看出不同的Command下,关注的是图上面的哪些区域。很直觉的知道这不仅提升了可解释性,也提高了模仿学习的效力。(这里必须指出,不然会搞混,Command是指上层命令,比如本文提到直行、左转等四种,Steer是指具体的操作,这里指转向角,即Steering Angel)
1> Convolutional Block
这个没必要赘述了,5层全连接卷积层:
2> Region Proposals
这一步是为了提取Rols,作者采用四种滑动窗口:
输入RGB尺寸为 H×W(600×264),其中,BIGH尺寸:H/2×W,步长:垂直移动60像素每步;BIGW尺寸:H×W/2,步长:W/2每步;MEDIUM尺寸:H/2×W/2,步长:分别上下两部分60像素每步;SMALL尺寸:H/2×W/4,步长:水平垂直分别30像素每步。很直觉的可以看出,BIGH以及BIGW是粗糙的,关注的是建筑物、交通信号以及前方的十字路口;MEDIUM以及SMALL关注的是路上的车辆以及转弯。(大家可以算算分别会产生多少个不同尺寸的窗口,结果在paper中有!)
3> Multi-Head Architecture
通过图上,很直觉Multi-Head表示不同的command。
<1> Attention Block
这里通过训练Attention Block,依靠驾驶任务中每个输入的相关性来为图像区域分配权重,实现从数据中直接估计视觉注意力,在Carla中端到端训练模型来预测自我车辆的转向角度:
这里的计算公式如下:
式中,ri为Rol Pooling Layer得到的区域特征,经过flattened 和 concatenated化(常规操作)之后得到RoI-pooled features,用单一向量r表示。α = α1,…, αR表示RoI权重,R表示区域个数,Wa为权重,ba为权重。很直觉,r经过全连接层为每个区域输出评估分数,评估分数经过softmax的normalized,在图上进行了注意力操作,即提高了高评估分数区域的关注度,ra为最后输出的注意力特征。
<2> Dense Block
输入:Attention Block求出的ra
输出:根据Command求得的Steering angel
4> MSE
MSE误差传递公式:
sGT为ground truth steer(我觉得就是模仿学习中expert提供的),sp为模型预测的。
3 Carla 仿真
这里需要指出,Carla模拟器提供两个城市的模拟环境,且在其中一个城市提供训练集,即在四种不同天气情况下14h的驾驶数据(Expert),另外一个城市用来测试。(具体的可以看背景知识关于Carla的链接),作者采用四种task来进行仿真实验:Straight;One turn(至少一个转弯);Navigation;Navigation Dynamic(包括行人和车辆)。训练的具体信息可以看原文,这里就不赘述了。
1> Results
上图即为所有tasks的平均成功率,Additional data为该方法是否使用了其他数据:temporal sequence of frames (T), semantic segmentations (S), depth (D)。另外,这里有一个细节,作者分成左右两栏,右面表示只用了RGB数据
上图很直觉,大家可以仔细看看,全文的最终结果。
2> Fixed grid analysis
前文提到四种滑动窗口,作者在这里讨论了这项工作的重要性,以及对比了不同窗口的重要性。
很直觉,上图,从左到右每列代表:Follow Lane (green),Turn Left (red), Turn Right (cyan), Go Straight (yellow)的注意力区域。
可以看出,MEDIUM窗口最重要,另外,作者在这里留下一个开发性问题:滑动窗口尺寸是否可以做成动态的。作者觉得有很大的难度,以后会做相关的研究。
(五)结论
这篇文章来自佛罗伦萨大学,提出了一种基于模仿学习的自动驾驶系统。创新点在于配备了视觉注意力层,用于衡量图像区域,并允许解释预测,经过对比实验,证明这种模型是SOTA的。
最可怕的是大家看结果可以知道纯粹的RL效果竟然这么差,我想是因为虽然训练和测试是两个不同的城镇,但是本质应该是一样的,所以产生很好的结果,而RL是一种完全自我学习的过程。不过,也可以看出特斯拉公司为什么主要在模仿学习进行深入研究了。