Pedestrian Collision Avoidance System for Scenarios with Occlusions--有遮挡情况下的行人避让系统

有遮挡情况下的行人避让系统 --Pedestrian Collision Avoidance System for Scenarios with Occlusions

摘要:对避让行人的过程描述为一个部分可观测的马尔可夫决策过程POMDP, 以导出一个对行人位置不确定性鲁棒的策略。本文目的将AEB(自动紧急制动)和上述策略结合起来,获得一个强大的自主制动系统。

AEB系统介绍: 车辆在非自适应巡航的情况下正常行驶,如车辆遇到突发危险情况或与前车及行人距离小于安全距离时主动进行刹车(但具备这种功能的车辆并不一定能够将车辆完全刹停)避免或减少追尾等碰撞事故的发生,从而提高行车安全性的一种技术

部分观测马尔可夫过程介绍

马尔可夫特征是指下一时刻和过去时刻没有关系,只取决于现在时刻。

POMDP模型是就是多了一步机器人对现在所处状态的判断,因为在实际问题中,机器人对环境观测具有一定局限性,并不完全准确。所以根据传感器等来获得的信息进行判断是具有一定偏差的,这个偏差可以用一个概率来表示机器人有多大的把握。

  • MDP 模型是为了解决机器决策中下一个动作所带来结果不确定性问题
  • POMDO 模型是为了解决机器对环境观测中不确定性问题。

介绍Introduction

对于传感器和环境中的不确定性,对场景进行建模为部分可观测马尔可夫决策过程POMDPs。

此前研究的POMDP策略适合实现稳健预测和计算安全行驶速度,并没有一个提供杰克规划和部分可观测的原则框架。

本论文结合了AEB系统和POMDP。AEB系统可以使用车辆的全部制动功率。POMDP规划期用于中等速度范围内的舒适机动,考虑因遮挡而产生的不确定性。

AEB系统主要有如下作用:

  • 当道路一侧被堵住,策略将调整车辆速度
  • 车辆高速行驶时,障碍物后面出现行人时,碰撞难以避免的时候,AEB系统负责强有力干预
  • 能见度低时,AEB系统无法无法避免或者减轻碰撞

POMDP规划期可以预测不确定性,并防止紧急刹车。将两者结合,可以在一个闭塞区域保持合理行驶速度。与单纯的AEB系统比较,安全性能提高,且不会增加事故率。

问题建模

主要概述一下将问题建模为一个部分可观测马尔可夫决策过程,求解最优近似解。

熟悉一下基本概念

1 首先先了解一下后面会用到的一个内容__贝叶斯公式__。

这里面用了一个离散贝叶斯更新方式。

贝叶斯公式是一个逆概率问题,就是知道了“结果”,去寻找原因解决此问题。

在这里插入图片描述

就好比病人去做一个疾病的检测,假设检测的方法成功率是百分百,但是把正常人误检的概率为百分之五,该病的发病率很低,万分之一。假设一个已知患病的人去检查,然后检查出来有病的概率在第一次是通过计算为0.002。然后第二次检测有病的概率为0.0385。这其实就是一个更新的过程。说明了检查看病过程中复检的必要性。

在这里插入图片描述

这个例子中就是暗藏着“贝叶斯更新模式”,对一个事情有一个主观判断时,给定一个猜测或者历史确定的概率,利用先验信息和贝叶斯公式,就可以推导出来一个更新后的概率(后验信息)。

2 了解一下无人驾驶的决策

自动驾驶的决策就是将感知模块传递来的数据进行分析,然后对汽车的行为进行操作达到驾驶目标。例如决定汽车什么时候左转、右转、变道等等都是决策模块的工作。决策首先要考虑到汽车驾驶员的安全性,然后还要考虑到舒适性,还得尽快到达设定目的地。

常用的决策算法有:

  • 决策状态机
  • 决策树模型
  • 基于知识的推理决策模型
  • 基于价值的决策模型如POMDP

下面回来论文本身来。

A . 背景

不确定条件下的序列决策问题可以建模为部分可观测马尔可夫决策过程(POMDPs)。他是由元一个七元组组成。

在这里插入图片描述

其中S代表状态空间A–动作空间O–观测空间T是一个过度模型O是一个观测模型R是奖励函数γ是一个折扣因子

在一个POMDP中,智能体对环境具有不确定性,因此,agent保持对其内部情况保持一种信念。这个信念b可以在对当前的状态下执行完一个动作a和一个观测o后进行更新。这里面运用了离散贝叶斯更新模型

POMDP的目的是找到一个最优的策略,最大化对任意信念下的及时期望折扣汇报。

直接求解最优策略是比较困难的,所以需要采取近似方法。本文采用了一种离线QMDP方法来求解最优效用函数。QMDP方法解决问题是在假设状态在一个时间步后变成了完全可观测。通过这个假设,值迭代函数可以求解最优状态作用效用函数U*(s,a)。

B. 场景建模

先引申一下一个小概念:Frenet坐标系

下图是自动驾驶车辆在全局坐标系与Frenet坐标系中的位置示意图。Frenet坐标系的建立基于一个给定的参考线(记为 T r e f T_{ref} Tref), T r e f T_{ref} Tref可以是任意曲线,一般情况下都是定位为道路的中心线。假设自动驾驶车辆在全局坐标系下的坐标为(x, y),从车辆的位置(x,y)向参考线 T r e f T_{ref} Tref做投影,投影点为F, 则点F与车辆位置(x,y)的距离即为横向位移d; 从参考线的起始点到投影点F的曲线举例就是纵向位移s。用(s,d)描述Frenet坐标系下自动驾驶车辆的坐标值,构建如下映射关系:
( x , y ) , T r e f − − ( s , d ) (x,y),T_{ref}--(s,d) (x,y),Tref(s,d)
基于Frenet坐标系,将自动驾驶车辆每时每刻的位置状态分解在s和d两个方向来描述车辆的运动状态,从而在轨迹曲线拟合时,减少处理坐标信息的工作量。

在这里插入图片描述

下面继续分析一下论文。

论文中道路在Frenet框架中表示,通过适当的坐标变换,我们的规划期可以直接应用于不同的道路配置。分块说一下QMDP中的一些状态参数。

  1. 动作空间

首先定义了横向控制的有限动作空间 { 0 m / s 2 , 1 m / s 2 , − 1 m / s 2 } \{0 m/s^2, 1 m/s^2, -1 m/s^2\} {0m/s2,1m/s2,1m/s2},无加速度,加速,减速。

纵向上定义了不同强度的一组加速减速动作: { 1 m / s 2 , 0 m / s 2 , − 1 m / s 2 , − 2 m / s 2 , − 4 m / s 2 } \{1 m/s^2, 0 m/s^2, -1 m/s^2, -2 m/s^2, -4 m/s^2\} {1m/s2,0m/s2,1m/s2,2m/s2,4m/s2}

  1. 状态空间

状态空间就是在解决问题时候考虑的所有变量,这里表示对行人和车辆的信息的一个编码。为了处理复杂的道路路线,道路用Frenet表示。下面说明一下设定的车辆和行人的状态。

车辆:纵向速度(0 km/h- 50 km/h) 和车道内横向位置(+1 m)在状态空间中表示。

行人:位置s纵向(0m -50m) 横向t(正负5米)。速度:(0 km/h- 7.2 km/h)和方向(正负90°)。

下图以一个过街行人来说明状态表示。状态空间中所有变量都被离散化,结果是ego车辆的29个速度和车道上5个位置。然后行人27个纵向位置、11个横向位置、5个速度水平和7个可能的方向。

通过 车辆和行人的状态组合有 1.5 ∗ 1 0 6 1.5*10^6 1.5106.

  1. 过渡模型

ego车辆的过渡模型取决于ego车辆的当前动作和状态。对于行人的过渡模型,我们使用一个简单的可达模型,改模型取决于当前行人状态,并根据一组可能的加速度来计算行人的位置。

  1. 观察模型

观察模型描述了ego车辆对状态空间的感知,现在假设ego车辆的位置和速度都是完全可观测的。观察空间与实际状态空间相似。观察模型可以描述为如下:

  • 始终可以检测到非遮挡区域的物体
  • 障碍物后面遮挡的物体不会被检测到
  • 果如检测到物体,行人的速度、位置和方向等测量数据在真实状态下符合正态分布。分布的参数取决于感知系统模型。
  1. 奖励模型

奖励模型定义了可观测马尔可夫模型的目标。

ego车辆和行人发生碰撞受到处罚。我们额外定义了一个奖励信号,以让车保持足够的速度并且保持在车道的中心。

如果车辆保持住,则不会收到任何奖励。奖罚项回随速度差和车道中心的横向偏移量线性减小。

POMDP规划的最终行为可以通过选择不同的惩罚和奖励值来修改。这些惩罚和奖励可以通过模拟定义的场景来调整,以平衡避免碰撞和效率。

C.求解多行人情况

上面描述的POMDP模型针对的是一个行人。为了拓展最终策略的功能,我们使用了效用分解方法。每个行人都是独立考虑,全局效用函数近似为每个行人的最小信念-行动效益。

在这里插入图片描述

这里的 U s i n g l e U_{single} Usingle是通过求解考虑单个行人的POMDP得到的效用函数。采取最低限度将导致采取与最关键行人相关的活动。

自动紧急刹车系统 AEB

AEB系统和POMDP规划期一起工作。它使用了POMDP规划器生成的驾驶轨迹来计算碰撞风险。如果碰撞不可避免会发生,AEB系统就会触发,进行紧急刹车,紧急停止具有最高优先级,并能够否决掉POMDP的计划。

AEB系统以高更新的频率运行,便于快速检测出风险。与POMDP一样,这个系统使用了Frenet框架将问题概述为一条直线,下面的伪码描述了这个算法。AEB系统的输入是Frenet帧中的行人位置和速度以及更高级规划器给出的ego车辆轨迹。

在这里插入图片描述

首先在第一部中,输入行人的位置速度,以及ego车辆的轨迹。然后以此来计算TTB也就是车辆制动时间。

然后预测模型给出行人未来可能状态的分布,改分布以及未来ego车辆状态信息用于计算碰撞概率 P c P_c Pc,这是未来行人状态与ego车辆状态重叠的估计分数。下面模拟图中的t=2.5s时候的红色圈圈就代表预测模型给出来的未来可能状态的分布。算法的性能直接关系到预测的质量。如果PCI高于阈值,将使用下面的风险度量来进行额外检查:

在这里插入图片描述

这里的TTB是发生碰撞的时间。当风险高于阈值的时候,出发紧急刹车。

在这里插入图片描述

上图是道路右侧有障碍物的过街行人可视化场景。在道路左右两个行人静止不动。状态用蓝色表示。在这种情况下POMDP规划器与AEB系统结合使用。在上图,1s的时候,车辆没有检测到行人。但是系统对于这种障碍物情况保持一定的警惕性。POMDP规划利用这个信念降低了速度。在t=2.5s的时候,检测到了过街的行人,在执行信念更新以后,行人出现的概率增加,红色圈圈表示AEB系统预测行人的位置,此时触发紧急干预刹车,避免碰撞。在最后一张图的时候,ego车辆停止,行人横穿了马路。

这里我们用了多种指标来评估绩效,计算了所有EuroNCAP情境下的平均速度,碰撞次数和紧急干预量。

POMDP规划器的行为受到奖励函数的影响。必须调整奖励函数,来满足安全和效率要求。为奖励函数确定好的参数,具有挑战性。我们进行了参数搜索,并使用定义的场景评估了结果策略,目的是比较碰撞率、紧急制动和车辆的平均速度。调整了一下参数。

  • 纵向行动惩罚(油门/刹车)
  • 保持50km/h的速度奖励
  • 行人出现的概率(这个是过渡模型的一个参数)

下图显示了不同奖励函数下的结果。这里最关键的情况是侧面有障碍物的情况,因为需要降低速度来避免以50km/h发生碰撞。另外,行人出现在障碍物后面的概率对碰撞量和紧急制动干预以及平均速度有重大影响。随着行人出现概率增加,其减少。

总结

在比较不同方法的结果之前,我们分析了不同的奖励配置。图6显示了POMDP planner在使用和不使用AEB系统时的不同奖励参数设置。在这个实验中,保持车道的奖励和纵向行为的惩罚是固定的,行人出现的概率是不同的。下图显示了碰撞和平均速度之间的关系。两种方法都可以实现无碰撞配置。

由于AEB系统有能力请求更强的制动干预,因此将POMDP计划器与AEB系统相结合会产生更高的平均速度。下图显示了紧急制动干预的数量,当行人出现的概率较高时,紧急制动干预的数量会减少。随着干预次数的减少,当通过闭塞区域时,系统表现得更加保守。

配备AEB系统的POMDP planner能够更快地驾驶,但需要紧急制动干预以避免碰撞。POMDP计划器在闭塞区域前方减速。以低于50公里/小时的速度行驶,可避免与堵塞的行人发生碰撞。在这种情况下,AEB系统无法避免速度为50 km/h的碰撞。高速行驶时,反应时间不足以停止车辆。图8显示了带有停用AEB系统的POMDP规划器的速度曲线,我们称其为未调整。在这种情况下,障碍物前的速度太高,减速不够,这说明了基础AEB系统的优点。表三总结了这三种方法的性能。AEB系统无法避免所有碰撞,但两个POMDP计划器可以避免所有碰撞。POMDP规划器和AEB系统相结合的实现能够更快地通过障碍物。平均速度较高,但会触发四次紧急制动干预。

在这里插入图片描述

参考资料

M. Schratter, M. Bouton, M. J. Kochenderfer and D. Watzenig, “Pedestrian Collision Avoidance System for Scenarios with Occlusions,” 2019 IEEE Intelligent Vehicles Symposium (IV), 2019, pp. 1054-1060, doi: 10.1109/IVS.2019.8814076.

chenderfer and D. Watzenig, “Pedestrian Collision Avoidance System for Scenarios with Occlusions,” 2019 IEEE Intelligent Vehicles Symposium (IV), 2019, pp. 1054-1060, doi: 10.1109/IVS.2019.8814076.

博客:David-Chow

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文将介绍如何使用 MMDetection 框架来实现校园行人实例分割,基于 Mask-RCNN 算法。MMDetection 是一个基于 PyTorch 的开源目标检测框架,它提供了丰富的预训练模型和方便的工具。 #### 1. 安装 MMDetection MMDetection 的安装可以参考官方文档,这里不再赘述。需要注意的是,MMDetection 的安装需要先安装 PyTorch。 #### 2. 数据集准备 我们使用校园行人数据集作为示例数据集,可以从 [这里](https://drive.google.com/drive/folders/1vztfS4Q1XaBxNjNp9fVl9d5jv1iO3mfc) 下载。该数据集包含了 160 张校园场景图片,其中包含了行人的实例分割标注。 将数据集下载后解压,将图片和标注文件放在同一目录下。标注文件是 `.json` 格式的,可以使用 Python 的 `json` 库读取。下面是读取标注文件的示例代码: ```python import json with open('annotations.json', 'r') as f: annotations = json.load(f) ``` #### 3. 数据集转换 MMDetection 使用 COCO 格式的数据集,因此需要将我们的数据集转换成 COCO 格式。MMDetection 提供了一个命令行工具 `tools/convert_datasets.py`,可以将常见数据集格式转换成 COCO 格式。这里我们需要将我们的数据集转换成 COCO 格式。 ```bash python tools/convert_datasets.py --input_type pedestrian --output_type coco --input_folder path/to/images --output_folder path/to/annotations --json_file path/to/annotations.json ``` 其中 `--input_type` 指定输入数据集的格式,这里是 `pedestrian`,表示我们的数据集是校园行人数据集。`--output_type` 指定输出数据集的格式,这里是 `coco`。`--input_folder` 指定图片所在的文件夹,`--output_folder` 指定标注文件所在的文件夹,`--json_file` 指定标注文件的路径。 转换完成后,在 `path/to/annotations` 文件夹下会生成 COCO 格式的标注文件 `annotations.json` 和 COCO 格式的图片文件夹 `images`。 #### 4. 配置文件 MMDetection 使用配置文件来指定模型、数据集、训练参数等。在 `configs` 文件夹下有各种预定义的配置文件,我们可以在这些配置文件的基础上进行修改。 这里我们使用 `configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py` 作为基础配置文件。这个配置文件定义了 Mask-RCNN 算法在 COCO 数据集上的训练参数和模型结构。我们需要修改其中的数据集路径和类别数。 ```python # 数据集相关配置 dataset_type = 'CocoDataset' data_root = 'path/to/annotations/' img_norm_cfg = dict( mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='LoadAnnotations', with_bbox=True, with_mask=True), dict(type='Resize', img_scale=(1333, 800), keep_ratio=True), dict(type='RandomFlip', flip_ratio=0.5), dict(type='Normalize', **img_norm_cfg), dict(type='Pad', size_divisor=32), dict(type='DefaultFormatBundle'), dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks']), ] test_pipeline = [ dict(type='LoadImageFromFile'), dict( type='MultiScaleFlipAug', img_scale=(1333, 800), flip=False, transforms=[ dict(type='Resize', keep_ratio=True), dict(type='RandomFlip'), dict(type='Normalize', **img_norm_cfg), dict(type='Pad', size_divisor=32), dict(type='ImageToTensor', keys=['img']), dict(type='Collect', keys=['img']), ]) ] data = dict( samples_per_gpu=2, workers_per_gpu=2, train=dict( type=dataset_type, ann_file=data_root + 'annotations.json', img_prefix=data_root + 'images/', pipeline=train_pipeline), val=dict( type=dataset_type, ann_file=data_root + 'annotations.json', img_prefix=data_root + 'images/', pipeline=test_pipeline), test=dict( type=dataset_type, ann_file=data_root + 'annotations.json', img_prefix=data_root + 'images/', pipeline=test_pipeline)) evaluation = dict(metric=['bbox', 'segm']) # 类别数 num_classes = 1 ``` 其中 `data_root` 指定数据集所在的根目录,这里是 COCO 格式的标注文件和图片所在的文件夹。`num_classes` 指定类别数,这里只有一类行人。 #### 5. 训练模型 使用以下命令开始训练模型: ```bash python tools/train.py configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py ``` 训练完成后,会在 `work_dirs` 文件夹下生成训练好的模型。 #### 6. 模型测试 使用以下命令测试模型: ```bash python tools/test.py configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py work_dirs/mask_rcnn_r50_fpn_1x_coco/latest.pth --out result.pkl ``` 测试完成后,会在当前目录下生成 `result.pkl` 文件,其中包含了测试结果。 #### 7. 结果可视化 可以使用以下代码将测试结果可视化: ```python import pickle import cv2 import numpy as np from mmdet.apis import init_detector, inference_detector # 加载模型 config_file = 'configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py' checkpoint_file = 'work_dirs/mask_rcnn_r50_fpn_1x_coco/latest.pth' model = init_detector(config_file, checkpoint_file) # 加载测试结果 with open('result.pkl', 'rb') as f: results = pickle.load(f) # 可视化结果 for i, result in enumerate(results): img = cv2.imread(f'path/to/images/{i}.jpg') masks = result[0] for j, mask in enumerate(masks): mask = (mask > 0).astype(np.uint8) contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img, contours, -1, (0, 0, 255), 2) cv2.imshow('result', img) cv2.waitKey() ``` 其中 `result` 是测试结果,是一个列表,每个元素是一个长度为 2 的元组,包含了行人的实例分割结果和检测结果。`img` 是原始图片。将实例分割结果可视化后可以得到以下效果图: ![result](https://img-blog.csdn.net/20180930153107224?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RldmVsb3BtZW50/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值