《Real-time small obstacle detection on highways using compressive RBM road reconstruction》论文阅读总结

背景介绍,这篇文章要做什么

这是一篇自动驾驶相关的文章,当我们的汽车在高速公路上以高速行驶的时候,一些微小的障碍物都有可能是自动驾驶汽车使用者的巨大隐患。作者认为在高速行驶的汽车上,使用激光雷达等主动传感器很难检测到障碍物,因为需要在离障碍物很远的距离时就检测到障碍物,而激光雷达距离和分辨率都无法达到这样的精度。

所以作者使用单目相机采集图像,训练了一个受限玻尔兹曼机(RBM)重建出假设不存在障碍物的地面信息,检测重建出的地面和观察到的图像之间的差异,有差异的地方就是与障碍物较为相关的区域。并在合成的基于纹理的数据集以及真实视频中对微小物体进行了检测。

其他工作的缺点

自动驾驶的研究是从2004年的DARPA比赛开始的,可用的传感器有雷达,激光,双目相机以及标准的单目广视角相机。在城镇中自动驾驶汽车需要一中低速度安全行驶,在高速公路上需要高速行驶,而并不是所有的传感器都适用于高速行驶的自动驾驶汽车,因为车辆的传感器范围直接关系到未来它可以预测并避免碰撞等事件。

例如,最大安全减速度为0.8 g,时速为150 km / h时,汽车至少需要110米才能完全停下来,从而为知觉和决策过程留出延迟。

在远处的大型障碍物,我们可以使用雷达或者是2维外观检测算法,比如HoG特征,但是对于在远处的微小的学习方法未学习过的障碍物,就搞不定了。作者总结了,这里主要有两个原因:

  1. 首先,长距离下,激光雷达无法使用,分辨率无法达到要求。
  2. 其次,特定类别的物体检测方法也不能检测到新种类的物体,道路上总是会出现一些之前从未见过的危险障碍物,比如爆裂的轮胎碎片或者是从一辆卡车或一辆轿车上丢下的货物。这样的方法无法解决这些问题。虽然基于机器学习的类别特定的检测方法对车辆和行人检测可以达到很好的效果,但是对于形状表观不固定的随机物体很难检测。

现在已经有很多对行人与车辆进行检测的方法及文章了,但是很少有对远处异常障碍物的检测方法出现,该方法在中低速驾驶中不常用到,但是在高速自动驾驶中非常重要。通常在中低速自动驾驶中,有源距离传感器已经足以检测出障碍物。

针对高速公路场景下的障碍物检测,前期有很多人进行了尝试。

  1. 1997年的Hancock使用双目相机和激光反射检测远距离下道路上危险的障碍物。
  2. T.William等人使用多极线双目技术,可以在100m开外的地方检测出14cm的小型障碍物。

近几年有些研究人员使用双目或SFM的方法去解决这个问题。

  1. H.Kyutoku在2011年利用前后帧差异来发现道路上的微小障碍物。
  2. Subaru Eyesight就是一个基于双目的大型障碍物检测方法。实际上这些方法都需要假设地面是干净的,并且可以获得精确的点匹配。而且两台相机很难在这一场景下运动完全相同。

近十年,使用机器学习的方法尝试去解决这一问题的人越来越多:

  1. Mobileye是一个已经可以在市面上买到的系统,它使用单目相机检测近距离下的大障碍物,但是它只考虑了特定类别物体比如行人和车辆。
  2. Forslund等人在2014年使用远距离红外传感器去发现夜晚道路场景的ROI区域并使用boosting方法结合滑动框检测是否存在微小障碍物。这个方法使用了非常特定的特征来训练,并且遇到不同的形状或是冷物体就不行了。

另一个机器学习的主要问题是现在没有完整的可用的数据集,而其行人检测,车辆检测,场景物体检测等数据集都无法充分的训练处模型来检测道路上的微小障碍物。

本文的方法

作者考虑使用单一类别学习方法,只需要知道哪些区域是道路区域,哪些区域不是道路区域就可以了。所以在文中作者并没有关注如何障碍物的威胁等级,或者决策的做出以及避开障碍物等其他问题,而是将他们一视同仁,从图像中寻找广义的微小障碍物。该方法的主要做法是利用训练好的RBM作为自动编码神经网络将道路重构出来,并将原本的道路和重构出的道路进行一个差值,就可以寻找出地面上的异常障碍物,这样会比分割得到candidate的方法更有效。

深入到方法本身,该方法需要输入一个二维的RGB图像,对着这张图像作者表示可以做两阶段处理,第一阶段是生成一张heat map,heat map的每个点表示存在障碍物的可能性,这样可以用灰度图来表示出来,将非道路像素显示成黑色,道路像素显示成白色。第二阶段是使用这张heat map对潜在障碍物区域进行分割。但是本文只关注与第一阶段。在重构道路的任务中,作者使用RBM作为一个自动编码器,学习道路上的纹理信息,进行道路重构。

预处理

在预处理阶段,作者将一张输入的大图像,用一个mask掩膜,将mask区域的图像分割成 PP P ∗ P 的许多的patch,每个小方块都被转换成一个浮点数向量,并进行中心化和归一化,在这篇文章中,作者使用了 P=8 P = 8 的patch和 S=6 S = 6 的步长来取这些Patch,

训练

在拿到了预处理阶段的patch之后,将这些patch作为输入,去训练一个高斯二元RBM。RBM的输入层大小是 Lvis=PP3 L v i s = P ∗ P ∗ 3 ,隐藏层大小设置为 H 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 是权重矩阵,bhid,bvis分别是隐偏差和显偏差。通过以下的重构向量就可以重构出道路上的patch:

xi=Sigmoid(xiW+bhid)WT+bvis x i ′ = S i g m o i d ( x i ∗ W + b h i d ) ∗ W T + b v i s

然后作者再将原本的道路patch和重构出的道路patch进行相减,最小化这两者之间的误差:
argminW,bhid,bvis=i(xixi)2 a r g m i n W , b h i d , b v i s = ∑ i ( x i ′ − x i ) 2

通过这样的学习,作者就可以得到一个重构出地面原本模样的模型。也就是说如果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,从海面上提取出了很多物体。

  1. 在测试过程中,需要先得到一张Normalized图像,将原图标准化,标准化后的图像中每一个patch, xi x i 都会通过等式2得到一个重构patch, xi x i ′
  2. 再通过得到的两个patch,求他们之间的向量差值作为误差: Δxi=|xixi| Δ x i = | x i ′ − x i |
  3. 然后将所有的误差拼起来,得到heat map。

    但是在这里如果要把整幅图像所有的patch拼起来是非常耗费时间的,所以作者将每个patch中的像素误差求平均值,用均值代表该patch的误差,并重新生成一个二维图像,这个图像的每个像素点就是每个patch的平均误差。 ϵxi=0k<LvisΔxi,k ϵ x i = ∑ 0 ≤ k < L v i s Δ x i , k 。但是这样做的话,就相当于是对图像用 PP P ∗ P 的卷积核做了一次卷积,而进行了下采样,但是作者认为,因为目标物体的大小是比patch要大的,所以这种下采样引起的模糊效应不会显着影响异常检测。

  4. 最后就是要进行一次后处理过程,也就是将原本重构出来的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视频中的这个场景在黄昏时拍摄,整个场景沉浸在黄昏的独特红色照明中。这种照明没有出现在训练视频中。因此,所有那些稍微偏红的道路修补程序都被视为非道路修补程序。然而,位于汽车和桥梁阴影中的道路贴片并不能反映这种红光并且被正确地重建。
这里写图片描述
为了解决这类问题,系统应该学习所有可能的道路外观。对于干净而统一的外观的高速公路来说,这样的效果很好,但是在梅西耶公路数据上可能会更困难。补充方法是使用帧内(或视频段内)道路外观来检测异常。事实上,虽然道路外观可能差异很大,但其纹理在一帧或一帧短帧内仍保持局部自相似性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 机械臂路径规划中的RRT算法是一种常见的方法,它可以处理机械臂在有障碍物情况下的路径规划问题。机械臂是一种用于完成人类工作的机器人,所以它在工作环境中可能会遇到障碍物,影响其动作和路径选择。 RRT算法(Rapidly-exploring Random Tree)是一种基于树结构的搜索算法,用于寻找机械臂的可行路径。在RRT算法中,首先在机械臂的起点位置附近随机生成一个点作为树的根节点,然后利用随机采样的方法,不断生成新的节点与树连接,直到达到目标位置或者找到一条可行路径。在生成新的节点时,算法会考虑可行的路径和避免障碍物的约束条件。 当机械臂遇到障碍物时,RRT算法需要根据障碍物的形状和位置,进行路径的调整和规划。一种常见的方法是在机械臂运动的过程中,对障碍物进行碰撞检测,以避免与其发生碰撞。当检测到可能发生碰撞时,RRT算法会调整节点的生成方向和规划路径,以绕过障碍物,保证机械臂的安全运动。这样,机械臂就能够在有障碍物的环境中完成任务,同时保持路径的最优性和有效性。 总之,机械臂路径规划中的RRT算法能够解决机械臂在有障碍物情况下的路径规划问题。通过随机生成节点并利用碰撞检测及避免机制,算法可以确保机械臂在遇到障碍物时能够避免碰撞,并找到一条安全有效的路径。这种方法在机械臂的自主导航和工作中发挥着重要的作用。 ### 回答2: Robot-arm-rrt-obstacle是指在机器人操作中使用路径规划算法RRT(Rapidly-exploring Random Tree)遇到的障碍物问题。 RRT是一种用于规划机器人路径的有效算法。它基于随机采样和树结构的思想,通过不断向树中添加新的节点,逐步扩展搜索空间,最终找到一条从起始点到目标点的路径。然而,当机器人在执行路径规划时,可能会遇到障碍物的问题。 在机器人操作中,障碍物对路径规划是一个重要考虑因素。当机器人遇到障碍物时,需要相应地调整路径规划,以避免与障碍物发生碰撞。在RRT算法中,可以采用不同的策略来处理障碍物。 一种简单的方法是将障碍物看作是不可通过的区域,而不将其考虑在路径规划中。这样,RRT算法仅在可通过区域内进行扩展和搜索,直到找到一条完整的路径或搜索超时。 另一种方法是通过引入障碍物避免策略,使得RRT算法能够绕过障碍物。这可以通过在路径规划中增加相关的限制条件或代价函数来实现。例如,可以引入一定的代价来惩罚路径与障碍物的接近程度,使得RRT算法更倾向于选择远离障碍物的路径。 总之,robot-arm-rrt-obstacle是指在机器人操作中使用路径规划算法RRT时遇到的障碍物问题。我们可以通过将障碍物看作是不可通过区域或引入障碍物避免策略来解决这个问题,以确保机器人能够安全、高效地完成任务。 ### 回答3: Robot Arm RRT (Rapidly Exploring Random Trees)是一种用于路径规划的算法,用于设计机器人臂的运动脚本。该算法基于随机采样的方式,从起始点开始生成一棵搜索树,通过探索状态空间来寻找机器人臂的运动路径。 当机器人臂需要绕过障碍物时,Robot Arm RRT算法需要考虑障碍物的存在,以确保生成的路径不会与障碍物碰撞。 为了解决这个问题,可以通过以下步骤进行处理: 1. 在生成RRT树的过程中,每次随机采样时需要确保采样点不在障碍物上。这可以通过随机采样的方式来避免障碍物。 2. 在搜索树的生长过程中,每次扩展节点时需要检查新生成的节点与障碍物之间是否存在碰撞。可以使用碰撞检测算法来判断节点与障碍物之间的关系。 3. 当生成的新节点与障碍物发生碰撞时,需要通过一些策略来避免碰撞。可以选择终止该分支的生长,或者使用其他方法重新搜索路径,以确保生成的路径绕过障碍物。 总之,Robot Arm RRT算法可以应用于机器人臂的路径规划,并通过考虑障碍物来保证生成的路径安全地绕过障碍物。为此,需要在随机采样、节点扩展和碰撞检测等步骤中加入相应的处理,以避免机器人臂与障碍物的碰撞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值