标题中的Affordance一词,本意是”预设用途,功能特性“,最初在知觉心理学和设计学领域出现。

后来在人机交互领域,Affordance的含义变成了:一个产品让用户自然领悟到用法的能力。

在机器人领域(自动驾驶和机器人的感知不分家),被引申为可以执行的潜在动作,即在特定情况下哪些动作是可执行的。具象含义就是:路面-可以走;行人-需避让;绿灯-可通行;红灯-不可通行。

回到标题,就是在自动驾驶的直接感知中,学习场景的Affordance,以Affordance作为直接感知的核心表示。

ADAS视觉感知范式

作者认为,基于视觉的ADAS有两种常见范式:

  • 中介感知:先解析整个场景,再做出驾驶决策。图像->场景解析->驾驶行为。

  • 行为反射:通过回归器,将图像直接映射为驾驶动作,无中间推理,纯黑盒。图像->驾驶行为。

论文提出了第三种范式:

即通过图像直接估计Affordance,利用估计得到的Affordance做决策,即图像->Affordance->驾驶行为。

Three paradigms for autonomous driving.webp

中介感知

包含多个子系统,比如车辆/行人检测,信号灯识别,车道线识别等。检测结果会被整合为ego周围环境的统一表征,不过这些表征只有很少一部分会被直接用于决策,也就是说,很多检测结果是冗余的。比如估计目标距离,要先检测它的2D BBOX,再估计距离,那直接估计深度不得了?

行为反射

早在40年前就有人利用神经网络构建从图像到方向盘转向角的直接映射(好早)。作者认为在复杂场景下这种方法存在致命缺陷:

  1. 同一个输入图像,不同的人类驾驶员会有不同决策。比如直线行驶,前方有龟速车,你是一起当龟速车,还是超车?也就是同输入的不同输出。

  2. 抽象层级过低。超车行为会被解读为“方向盘往左打->方向盘往右打”,并不知道超车这个意图。

  3. 整张图像太大,导致监督不到关键信息。

Image到Action的映射

Dataset使用游戏TORCS录制,这个游戏能收集驾驶过程中的指标。

模型基于当时SOTA的CNN框架,关注多车道高速驾驶场景,从ego视角出发(和人类一致)。

Image到Affordance

高速驾驶场景的车辆Action可以分为2类:

  • 沿车道中心线(两条车道线正中间)行驶

  • 变道/减速以避免撞前车

论文使用两个坐标系:

  • 车道内坐标系

  • 压线坐标系(压在车道线上时)

使用三种指标表征驾驶状态:

  • 航向角

  • 与附近车道线的距离

  • 和前车的距离。

此外,使用13个Affordance指标,能覆盖车道和车辆感知的需求。除了航向角始终激活,其他指标可能不激活。比如在车道内坐标系行驶,那么压线坐标系的指标都不会被激活;而当车辆在最左/最右车道,那么左侧/右侧就没有车道了,对应指标也不会激活。

根据这些指标的激活情况,ego可以确定自己在哪条车道上。

编号

指标名称

所属系统

含义说明

1

angle

always(both)

车辆航向与道路切线之间的夹角

2

toMarking_LL

in lane system

到左车道左侧车道线的距离

3

toMarking_ML

in lane system

到当前车道左侧车道线的距离

4

toMarking_MR

in lane system

到当前车道右侧车道线的距离

5

toMarking_RR

in lane system

到右车道右侧车道线的距离

6

dist_LL

in lane system

到左车道内前车的距离

7

dist_MM

in lane system

到当前车道内前车的距离

8

dist_RR

in lane system

到右车道内前车的距离

9

toMarking_L

on marking system

到左侧车道线的距离(车辆压在车道线上时)

10

toMarking_M

on marking system

到中央车道线的距离(车辆压在车道线上时)

11

toMarking_R

on marking system

到右侧车道线的距离(车辆压在车道线上时)

12

dist_L

on marking system

到左侧车道内前车的距离(车辆压在车道线上时)

13

dist_R

on marking system

到右侧车道内前车的距离(车辆压在车道线上时)

下图和上表一一对应:

Illustration of our affordance representation.webp

解读部分指标:

  • in lane: toMarking,车道内坐标系下,到当前车道的左/右车道线距离,和到相邻左右车道的左/右车道线距离,4个指标。

  • in lane: dist,车道内坐标系下,到左/当前/右车道前车的距离,3个指标。

  • on mark: toMarking,压线坐标系下,到左边/右边车道线的距离,和车辆中心到压到的车道线的距离,3个指标。

  • on mark: dist,压线坐标系下,和左/右两边前方车辆的距离,2个指标。

  • 图片(f)主要是展示车道线坐标系和压线坐标系的激活范围重叠区域。两个坐标系存在一个重叠区,实现坐标系之间的平滑过渡,避免突变。

Affordance到Action

这部分是从Affordance到驾驶的Action的映射,也就是Affordance如何影响控制逻辑。

下面两者无监督,不参与训练,都是公式化计算,属于手工规则,这可以提升模型的可解释性,否则就又是黑盒了。

Steering Control

目的是为了让车辆尽可能贴近车道线中心行驶,最小化位置偏差。

steerCmd=C(angledist_centerroad_width) steerCmd = C * \left( angle - \frac{dist\_center}{road\_width} \right)

其中:

  • steerCmd:最终输出的方向盘转向角。

  • C:随驾驶条件变化的调节系数,用于控制转向响应的强度。

  • angle:车辆航向与道路切线的夹角(即之前提到的航向角指标)。

  • dist_center:车辆到当前车道中心线的距离。

  • dist_center / road_width:将车辆偏离中心线的距离归一化到道路宽度的尺度上,作为位置修正项。

最终期望的结果是,当车辆变道时,能平滑的从一个车道中心,变到目标车道中心。

Speed Control

目的是根据场景动态调整车速,通过加/减速控制让实际车速保持期望车速。

v(t)=vmax(1exp(cvmax(dist(t)d))) v(t) = v_{max} \left( 1 - \exp\left( -\frac{c}{v_{max}} \left( dist(t) - d \right) \right) \right)

其中:

  • v(t):t时刻的期望车速。

  • v_max:最大允许车速。

  • dist(t):t时刻到前车的距离,来自Affordance指标。

  • c, d:待校准的系数,用于调节跟车的响应特性。

目的是实现平滑的速度控制,类似ACC。

网络和模型

网络基于Caffe框架(那时候的主流框架),使用标准的AlexNet,也就是5个Conv,接4个FC,FC输出维度分别为4096,4096,256,13。最终FC输出的13对应13个Affordance指标,属于回归任务,输出每个Affordance的预测值。论文对AlexNet做了修改,输入尺寸280x210,没有做数据增强,因为论文的方法对空间位置有要求,裁剪会破坏空间关系,镜像则违背行驶逻辑(左舵变右舵)。

Loss Function使用适合回归任务的Euclidian Loss,也就是L2 Loss。13个Affordance指标被归一化为[0.1, 0.9] 的范围。

TORCS评估

论文的TORCS虚拟场景Evaluation有两个部分,定性评估和与基线方法的定量对比。

定性评估

定性评估部分没有量化指标,主要是关注TORCS中的驾驶表现。结论为:

  1. 模型能在 TORCS 的多车道、有交通流场景中无碰撞平稳行驶;仅在部分变道场景中出现轻微的位置超调(即暂时偏离目标车道中心线),但控制器能快速修正位置,恢复到目标车道的期望行驶位置。证明Affordance到Action的映射逻辑能支撑决策。

  2. 对车道感知的精度极高,车辆感知30m内较好,30-60m有噪声,60m外基本不行。主要还是输入分辨率太低,提取不到远处车辆的特征。

  3. 模型对Affordance的误差具有鲁棒性,ego作为一个连续运动系统,控制器可以根据指标修正位置,哪怕Affordance出现零星错误估计,也不会导致驾驶失控。

基线定量对比

论文设计了3种基线方法,这三种Baseline基本覆盖了ADAS的主流思路,以MAE(平均绝对误差)为量化指标。直接说结论:

  1. 行为反射基线:作为纯E2E的范式,只能处理简单空赛道驾驶,有车流的时候完全失效。基本印证了本文开头作者对这一范式的评价。

  2. 间接感知基线:聚焦车道线感知的子任务,使用Caltech进行车道线检测,检测结果映射到Affordance指标。对任务做了大幅简化,无车流,同赛道,高分辨率图像,但是精度仍然明显低于论文中的方法。

  3. 手工特征的直接感知基线:和论文范式相同,主要验证CNN学习特征和手工视觉特征的差异。用自动驾驶场景经典手工特征GIST替代Conv提取的特征。结果是CNN特征远优于手工特征。

真实场景评估

智能手机视频

定性测试。测试数据来自手机拍摄的驾驶视频,无标注和人工干预。视频逐帧输入模型,模型输出13个Affordance指标,对指标结果进行可视化。结论是:

  1. 车道线:能正确识别车道线,正确定位ego在车道中的位置,变道时车道线过渡状态正确。

  2. 车辆感知:存在轻微噪声,距离感知精度略低于TORCS场景。对前车有无,远近有一定感知能力。

也就是TORCS中训练的模型无需微调,即可处理真实世界驾驶视频。

KITTI数据集

因为KITTI和TORCS场景差异巨大,KITTI并非专注于高速场景,而且车辆多,车道线不清晰。

论文重新定义了坐标系,定义自车为中心的2D地面坐标系,ego为中心,Y前,X右,类似BEV。聚焦前车距离估计,这个是ADAS感知的核心任务。这部分内容是为了引出下面与DPM的对比。

DPM基线

属于开篇提到的中介感知范式,DPM是当时SOTA的目标检测算法。

需要先输出检测框,再基于地平假设,将BBOX的下边缘中心点投影到平坦地面,得到车辆位置。

论文在KITTI数据集上训练模型,并与DPM做对比。

结论就是,媲美SOTA的DPM。

可视化分析

神经元特征学习空间注意力两个维度,证明模型不是随机拟合,而是主动学习到了自动驾驶任务的视觉特征,而且能关注图像中和驾驶有关的区域,如车道线和车辆。

下面左图展示了第一个FC的4096个神经元的激活模式,证明模型对航向角,车道线,车辆产生强烈响应。

第一个FC是Conv提取出来的基础视觉特征,像边缘,纹理,轮廓。特征的匹配度越高,FC中神经元的激活强度越大,比如对车道线激活强度高,对天空激活强度低。激活强度就是激活函数输出的数值。

具体如何操作,作者写的有些模糊,论文中21000张图像的数据集,会得到21000个激活强度数值,从高到低排列,取前100对应的图像。每个神经元最后应该都会得到自身激活强度最高的TOP100张图像,最后应该是4096*100张图像,每组的100张图像做像素级平均,得到4096个神经元分别的激活模式图像,然后作者挑了几张特征明显的放在Figure12中。

不过这个图,其实我并没能看出来什么东西……不如热力图明显。

右图展示了第四个Conv的热力图。上方证明了证明了CNN对真实场景的车辆由很强的响应,也就是能关注这些区域。下图证明在TORCS场景下对车道线区域也有响应。

响应越高,视觉上就越突出(红)。

结论

  • 相比纯E2E直接输出方向盘转角和油门开度,Affordance是有物理意义的中间表示,具备可解释性。

  • 相比传统模块化感知,跳过冗余的目标建模,更贴合人类直观感知行为可行性的逻辑,效率更高。

  • 本论文方法在虚拟和真实场景均取得不错的效果,而且在虚拟场景数据训练得到的模型,在真实场景下有良好泛化性。

参考文章

[1] 机器人学科中,什么是“Affordance”? - 知乎

[2] 功能可供性_百度百科

[3] DeepDriving: Learning Affordance for Direct Perception in Autonomous Driving