背景介绍,这篇文章要做什么
这是一篇自动驾驶相关的文章,当我们的汽车在高速公路上以高速行驶的时候,一些微小的障碍物都有可能是自动驾驶汽车使用者的巨大隐患。作者认为在高速行驶的汽车上,使用激光雷达等主动传感器很难检测到障碍物,因为需要在离障碍物很远的距离时就检测到障碍物,而激光雷达距离和分辨率都无法达到这样的精度。
所以作者使用单目相机采集图像,训练了一个受限玻尔兹曼机(RBM)重建出假设不存在障碍物的地面信息,检测重建出的地面和观察到的图像之间的差异,有差异的地方就是与障碍物较为相关的区域。并在合成的基于纹理的数据集以及真实视频中对微小物体进行了检测。
其他工作的缺点
自动驾驶的研究是从2004年的DARPA比赛开始的,可用的传感器有雷达,激光,双目相机以及标准的单目广视角相机。在城镇中自动驾驶汽车需要一中低速度安全行驶,在高速公路上需要高速行驶,而并不是所有的传感器都适用于高速行驶的自动驾驶汽车,因为车辆的传感器范围直接关系到未来它可以预测并避免碰撞等事件。
例如,最大安全减速度为0.8 g,时速为150 km / h时,汽车至少需要110米才能完全停下来,从而为知觉和决策过程留出延迟。
在远处的大型障碍物,我们可以使用雷达或者是2维外观检测算法,比如HoG特征,但是对于在远处的微小的学习方法未学习过的障碍物,就搞不定了。作者总结了,这里主要有两个原因:
- 首先,长距离下,激光雷达无法使用,分辨率无法达到要求。
- 其次,特定类别的物体检测方法也不能检测到新种类的物体,道路上总是会出现一些之前从未见过的危险障碍物,比如爆裂的轮胎碎片或者是从一辆卡车或一辆轿车上丢下的货物。这样的方法无法解决这些问题。虽然基于机器学习的类别特定的检测方法对车辆和行人检测可以达到很好的效果,但是对于形状表观不固定的随机物体很难检测。
现在已经有很多对行人与车辆进行检测的方法及文章了,但是很少有对远处异常障碍物的检测方法出现,该方法在中低速驾驶中不常用到,但是在高速自动驾驶中非常重要。通常在中低速自动驾驶中,有源距离传感器已经足以检测出障碍物。
针对高速公路场景下的障碍物检测,前期有很多人进行了尝试。
- 1997年的Hancock使用双目相机和激光反射检测远距离下道路上危险的障碍物。
- T.William等人使用多极线双目技术,可以在100m开外的地方检测出14cm的小型障碍物。
近几年有些研究人员使用双目或SFM的方法去解决这个问题。
- H.Kyutoku在2011年利用前后帧差异来发现道路上的微小障碍物。
- Subaru Eyesight就是一个基于双目的大型障碍物检测方法。实际上这些方法都需要假设地面是干净的,并且可以获得精确的点匹配。而且两台相机很难在这一场景下运动完全相同。
近十年,使用机器学习的方法尝试去解决这一问题的人越来越多:
- Mobileye是一个已经可以在市面上买到的系统,它使用单目相机检测近距离下的大障碍物,但是它只考虑了特定类别物体比如行人和车辆。
- Forslund等人在2014年使用远距离红外传感器去发现夜晚道路场景的ROI区域并使用boosting方法结合滑动框检测是否存在微小障碍物。这个方法使用了非常特定的特征来训练,并且遇到不同的形状或是冷物体就不行了。
另一个机器学习的主要问题是现在没有完整的可用的数据集,而其行人检测,车辆检测,场景物体检测等数据集都无法充分的训练处模型来检测道路上的微小障碍物。
本文的方法
作者考虑使用单一类别学习方法,只需要知道哪些区域是道路区域,哪些区域不是道路区域就可以了。所以在文中作者并没有关注如何障碍物的威胁等级,或者决策的做出以及避开障碍物等其他问题,而是将他们一视同仁,从图像中寻找广义的微小障碍物。该方法的主要做法是利用训练好的RBM作为自动编码神经网络将道路重构出来,并将原本的道路和重构出的道路进行一个差值,就可以寻找出地面上的异常障碍物,这样会比分割得到candidate的方法更有效。
深入到方法本身,该方法需要输入一个二维的RGB图像,对着这张图像作者表示可以做两阶段处理,第一阶段是生成一张heat map,heat map的每个点表示存在障碍物的可能性,这样可以用灰度图来表示出来,将非道路像素显示成黑色,道路像素显示成白色。第二阶段是使用这张heat map对潜在障碍物区域进行分割。但是本文只关注与第一阶段。在重构道路的任务中,作者使用RBM作为一个自动编码器,学习道路上的纹理信息,进行道路重构。
预处理
在预处理阶段,作者将一张输入的大图像,用一个mask掩膜,将mask区域的图像分割成 P∗P P ∗ P 的许多的patch,每个小方块都被转换成一个浮点数向量,并进行中心化和归一化,在这篇文章中,作者使用了 P=8 P = 8 的patch和 S=6 S = 6 的步长来取这些Patch,
训练
在拿到了预处理阶段的patch之后,将这些patch作为输入,去训练一个高斯二元RBM。RBM的输入层大小是
Lvis=P∗P∗3
L
v
i
s
=
P
∗
P
∗
3
,隐藏层大小设置为
H
H
,作者将设置为20,并在训练的时候使用随机梯度下降进行收敛,并在最后将RBM的模型参数保存成结构体
RBMmodel=(W,bhid,bvis)
R
B
M
m
o
d
e
l
=
(
W
,
b
h
i
d
,
b
v
i
s
)
。其中
W
W
是权重矩阵,分别是隐偏差和显偏差。通过以下的重构向量就可以重构出道路上的patch:
然后作者再将原本的道路patch和重构出的道路patch进行相减,最小化这两者之间的误差:
通过这样的学习,作者就可以得到一个重构出地面原本模样的模型。也就是说如果RBM学习某一种正样本patch,我们将其归为A类,那么A类以外的随机取得的patch的误差都要大于A类的patch误差。作者用 ϵ ϵ 来表示差值, ϵxi<ϵx¯i ϵ x i < ϵ x ¯ i ,在这里 xi x i 表示A类的样本,而 ϵx¯i ϵ x ¯ i 表示非A类样本。
虽然这样很有效果,但是作者也提出训练的过程不是非常完美的,因为RBM必须学习在整个数据集中比较通用的东西,比如说地面的patch。而他们选择RBM最大的原因在于,快,简单并且易于实现,能够实时运行。
测试
测试流程如上图,从图中可以看出,作者利用海绵上的大部分patch,重构了海面,并将正规化的图像和重构图像进行相减处理得到Heat map,从海面上提取出了很多物体。
- 在测试过程中,需要先得到一张Normalized图像,将原图标准化,标准化后的图像中每一个patch, xi x i 都会通过等式2得到一个重构patch, x′i x i ′ 。
- 再通过得到的两个patch,求他们之间的向量差值作为误差: Δxi=|x′i−xi| Δ x i = | x i ′ − x i | 。
然后将所有的误差拼起来,得到heat map。
但是在这里如果要把整幅图像所有的patch拼起来是非常耗费时间的,所以作者将每个patch中的像素误差求平均值,用均值代表该patch的误差,并重新生成一个二维图像,这个图像的每个像素点就是每个patch的平均误差。 ϵxi=∑0≤k<LvisΔxi,k ϵ x i = ∑ 0 ≤ k < L v i s Δ x i , k 。但是这样做的话,就相当于是对图像用 P∗P P ∗ P 的卷积核做了一次卷积,而进行了下采样,但是作者认为,因为目标物体的大小是比patch要大的,所以这种下采样引起的模糊效应不会显着影响异常检测。
最后就是要进行一次后处理过程,也就是将原本重构出来的heatmap进行反转。首先将所有点的强度从[0,mean]重新映射到[0,1],以便使重建误差不明显的区域饱和为白色。然后从heat map中得到最终的分割。但是。。。本文没介绍怎么分割,只是说,用很多方法都可以进行分割,所以本文也就不提供这样的方法了。
训练集
虽然感觉这段说的不多,但是简单介绍一下吧,这篇文章从YouTube(对,就是那个404网站)上下载了一段在日本高速公路上的长达1h40m的视频,视频是使用松下GH4相机以4K分辨率拍摄的,每两秒为1帧,共有3054帧,作者将它降采样为原图的1/2,然后从道路中心区域取了大概500*500的mask作为采样区域。
测试集
这部分是作者花费较大篇幅去介绍的,因为目前没有用于高速公路上小障碍物检测的数据集,所以作者只能自己去采集。
作者一行人到互联网上去搜索了带有障碍物的高速公路行驶视频,他们自己也扛着相机去进行了拍摄,拍摄细节我就不介绍了,但是他们说长达4小时33分钟的视频中就只有一个障碍物。。。,这部分不是重点,重点在于,后面的算法评估。
算法评估
作者表示,在本文中的算法评估的目的就是为了检测他们用RBM重构出来的分布是否能比原始图像更好的指示标签。因为没有现成的方法可以进行比较,所以作者使用RGB图像作为输入,并使用LDA和SVM等标准的分类方法作为对比。
作者采用CIFAR数据集,这个数据集上都是32*32的小RGB图像。正样本由包含从手动标记的图像中采样的普通道路(ROAD-RGB)的图像组成。 一种负样本是由实际的CIFAR10公共数据集组成的,作为随机非道路元素(CIFAR-RGB)的来源。 另一种负样本由道路贴片组成,将CIFAR中的物体贴在道路patch上(OBS-RGB)。所有的数据被分为2000个训练集和2000个测试集,每个实验包含两个数据集,一正一负。
两个实验中
实验一是将CIFAR和ROAD进行比较,进行分类。
实验二试将OBS和ROAD进行比较分类。
用ROC图来表示:
可以看出本文的效果确实不错。并且作者表示,对道路纹理的压缩表示,足以让算法对从未见过的其他道路patch有通用性。
缺陷
作者表示他们的方法的一个明显的局限性是,由于没有负样本训练类别,正样本类的边界仍然粘在特征空间中道路样本的外壳上。换句话说,该系统只能概括在训练集中看见的patch。这种限制在下图中很清楚。YouTube视频中的这个场景在黄昏时拍摄,整个场景沉浸在黄昏的独特红色照明中。这种照明没有出现在训练视频中。因此,所有那些稍微偏红的道路修补程序都被视为非道路修补程序。然而,位于汽车和桥梁阴影中的道路贴片并不能反映这种红光并且被正确地重建。
为了解决这类问题,系统应该学习所有可能的道路外观。对于干净而统一的外观的高速公路来说,这样的效果很好,但是在梅西耶公路数据上可能会更困难。补充方法是使用帧内(或视频段内)道路外观来检测异常。事实上,虽然道路外观可能差异很大,但其纹理在一帧或一帧短帧内仍保持局部自相似性。