Pedestrian Risk Level Prediction system |行人危险程度预测系统

近几年,道路状况评估在在智能交通系统领域的研究与应用层面都受到重要的关注。在众多的交通参与者中,行为与运动可预测性低的行人又是主要极端复杂场景的重要因素。当前评估行人危险程度的方法主要有两类:1)基于预定义的碰撞函数;2)人类打标签的方法。这些方法一般场景泛化性比较差,也很少能考虑行人与自车的交互关系,实际效果很有限。本文介绍的行人危险程度预测(Pedestrian Risk Level Prediction,PRLP)系统由三个模块组成:数据采集与处理模块、行人轨迹预测模块以及风险水平识别模块。

  1. 收集自车视角下的行人数据:同时考虑自车与行人的运动信息能够简化交互式方式预测问模型的时空特征;
  2. 利用LSTM模型学习预测行人轨迹未来5帧的时空特征;
  3. 利用一个混合聚类与分类的变种方法来探索时空特征中的风险模式,最后利用一个分类器从这些已经归类的模式中学习分类模型;

Module 1: 行人数据处理

i i i个行人从时间1到t的轨迹可以描述成如下形式:
P i ( 1 , t ) = [ p i ( 1 ) , p i ( 2 ) , . . . , p i ( t ) ] T (1) \mathbf{P}_{i}(1, t)=[\mathbf{p}_{i}(1), \mathbf{p}_{i}(2),...,\mathbf{p}_{i}(t)]^T\tag{1} Pi(1,t)=[pi(1),pi(2),...,pi(t)]T(1)
其中, p i ( t ) = ( x i ( t ) , y i ( t ) ) \mathbf{p}_{i}(t)=(x_{i}(t), y_{i}(t)) pi(t)=(xi(t),yi(t))表示相对自车坐标系下的行人位置坐标点。

行人的相对自车的速度用向量 v i ( t ) = ( v x ( t ) , v y ( t ) ) \mathbf{v}_i(t)=(v_x(t), v_y(t)) vi(t)=(vx(t),vy(t))表示,初始条件 v 1 ( t ) = ( 0 , 0 ) \mathbf{v}_1(t)=(0, 0) v1(t)=(0,0),其中 v x ( t ) v_x(t) vx(t) v y ( t ) v_{y}(t) vy(t)计算公式如下:
v x ( t ) = ( x i ( t ) − x i ( t − 1 ) ) / Δ t (2) v_{x}(t)=(x_i(t)-x_i(t-1))/\Delta_t \tag{2} vx(t)=(xi(t)xi(t1))/Δt(2)
v y ( t ) = ( y i ( t ) − y i ( t − 1 ) ) / Δ t (3) v_{y}(t)=(y_i(t)-y_i(t-1))/\Delta_t \tag{3} vy(t)=(yi(t)yi(t1))/Δt(3)
其中, Δ t \Delta_t Δt表示两帧观测数据之间的时间间隔。

TTC定义如下:
T T C i ( t ) = Δ p i ( t ) Δ v i ( t ) (4) TTC_{i}(t)=\frac{\Delta p_i(t)}{\Delta v_i(t)}\tag{4} TTCi(t)=Δvi(t)Δpi(t)(4)
其中, Δ p i ( t ) = x i ( t ) 2 + y i ( t ) 2 \Delta p_i(t)=\sqrt{x_i(t)^2+y_i(t)^2} Δpi(t)=xi(t)2+yi(t)2 , Δ v i ( t ) = v i ( t ) × p i ( t ) \Delta v_i(t)=\mathbf{v}_i(t)\times \mathbf{p}_i(t) Δvi(t)=vi(t)×pi(t)【速度在位置向量方向上的投影】。

Module 2: 行人轨迹预测

本文采用LSTM来预测行人未来5帧的位置,LSTM模型的输入是行人过去的相对轨迹点 p i ( 1 , t ) = [ p i ( 1 ) , p i ( 2 ) , . . . , p i ( t ) ] T \mathbf{p}_i(1, t)=[\mathbf{p}_i(1), \mathbf{p}_i(2),...,\mathbf{p}_i(t)]^T pi(1,t)=[pi(1),pi(2),...,pi(t)]T,输出是行人未来的轨迹点 p ^ i ( t + 1 , t + T p r e d ) = [ p ^ i ( t + 1 ) , p ^ i ( t + 2 ) , . . . , p ^ i ( t + T p r e d ) ] T \hat{\mathbf{p}}_i(t+1, t+T_{pred})=[\hat{\mathbf{p}}_i(t+1), \hat{\mathbf{p}}_i(t+2),...,\hat{\mathbf{p}}_i(t+T_{pred})]^T p^i(t+1,t+Tpred)=[p^i(t+1),p^i(t+2),...,p^i(t+Tpred)]T.

对于 v ^ i ( t + 1 , t + T p r e d ) \hat{\mathbf{v}}_i(t+1, t+T_{pred}) v^i(t+1,t+Tpred) T T C ^ i ( t + 1 , t + T p r e d ) \hat{TTC}_{i}(t+1, t+T_{pred}) TTC^i(t+1,t+Tpred)同样可以由LSTM模型训练得到。

Module 3: 风险水平识别

K-Mean:采用欧氏距离来度量相似性,在非凸的数据集上效果无法保证;
KPCA-KMC:混合核主成分分析与K-Mean聚类的或谱聚类(SC)的方法能够用来对行人的特征数据进行聚类。

我们用 S = { s i ( t ) ∣ i ∈ [ 1 , n ] , t ∈ [ 1 , T n ] } \mathbf{S}=\{\mathbf{s}_i(t)|i\in[1, n], t\in[1, T_n]\} S={si(t)i[1,n],t[1,Tn]}表示采集的行人数据集,其中 s i \mathbf{s}_i si表示第 i i i个行人相关的特征数据。

假设我们目的是把这些行人分类成k类, C = { c 1 , c 2 , . . . , c k } \mathbf{C}=\{c_1, c_2, ...,c_k\} C={c1,c2,...,ck},我们利用如下目标函数:
a r g m i n c ∑ k = 1 K ∑ ϕ ^ ( s i ) ∈ c k ∣ ∣ ϕ ^ ( s i ) − μ k ∣ ∣ 2 (5) argmin_{c}\sum_{k=1}^{K}\sum_{\hat{\phi}(\mathbf{s}_i)\in c_{k}}||\hat{\phi}(\mathbf{s}_i)-\mu_k||^2 \tag{5} argminck=1Kϕ^(si)ck∣∣ϕ^(si)μk2(5)
其中, μ k \mu_k μk是第 k k k个聚类的中心。

那么如何确认类别个数K?

Akaike information criterion(AIC)是衡量统计模型拟合优良性的一种标准,由日本统计学家‌赤池弘次创立和发展。‌ AIC建立在‌熵的概念基础上,可以权衡所估计模型的复杂度和此模型拟合数据的优良性。‌AIC通过比较不同模型的复杂度和拟合优度来选择最优模型。具体来说,AIC值越小的模型越好,因为它在解释数据的同时避免了过度拟合。AIC的计算公式为:
A I C = ∑ k = 1 K ∑ x i ∈ c k ∣ x i − μ k ∣ 2 + 2 ( K . N ) AIC=\sum_{k=1}^{K}\sum_{\mathbf{x}^i \in c_k} |x^i-\mu^k|^2+2(K.N) AIC=k=1Kxickxiμk2+2(K.N)
其中, x i x^i xi是第 k k k个聚类的第 i i i个数据, μ k \mu^k μk是第k个聚类的中心。K是总的聚类数量,N是数据的维度。

在实际应用中,AIC常用于‌时间序列分析、‌回归分析等多种统计模型的选择和评估。例如,在‌经济学研究中,研究者可以使用AIC来比较不同的经济模型,选择最能解释经济数据的模型。

AIC评估预测语差并且惩罚模型的复杂性。与AIC不同,BIC(bayes)会通过考虑数据集的大小来惩罚模型的复杂性:
A I C = ∑ k = 1 K ∑ x i ∈ c k ∣ x i − μ k ∣ 2 + l n ( M ) . ( K . N ) AIC=\sum_{k=1}^{K}\sum_{\mathbf{x}^i \in c_k} |x^i-\mu^k|^2+ln(M).(K.N) AIC=k=1Kxickxiμk2+ln(M).(K.N)

反正根据AIC与BIC指标,可以找到最优聚类个数K。

轮廓系数(Silhouette Coefficient Index)是一种聚类评估指标,用于评估数据聚类的效果。其取值范围在[-1, 1]之间,指标值越大表示聚类结果聚类效果越好。我们用以下公式表示轮廓系数:

s ( i ) = b ( i ) − a ( i ) m a x { a ( i ) , b ( i ) } s(i)=\frac{b(i)-a(i)}{max\{a(i), b(i)\}} s(i)=max{a(i),b(i)}b(i)a(i)

类内离散度: a ( i ) = 1 ∣ C i ∣ − 1 ∑ j ∈ C i , i ≠ j d ( i , j ) a(i)=\frac{1}{|C_i|-1}\sum_{j\in C_i,i\neq j} d(i,j) a(i)=Ci11jCi,i=jd(i,j),第 i i i个数据点与同一类别中其他数据的平均距离;
类间离散度: b ( i ) = m i n k ≠ i 1 ∣ C k ∣ ∑ j ∈ C k d ( i , j ) b(i)=min_{k\neq i}\frac{1}{|C_k|}\sum_{j\in C_k} d(i,j) b(i)=mink=iCk1jCkd(i,j);

通过以上模型,我们可以将完整的数据分成若干个子集,每个子集表示一个类别相关的子数据集。下面,我们可以利用SVM对以上分类好的数据学习一个分类器。我们可以对每个类别的数据的特性进行人工分析,然后对每个类别分赋予一个语义类标签,例如:关联安全、独立安全、危险、警告。

在实际应用中,我们对路上遇到的行人,利用他的历史数据特征输入到分类器,得到他的类别,根据类别相关联的语义信息来决策是否要在运动规划中考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8187.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Android Handler

Handler用于多线程消息分发和处理。与handler相关的几个对象:Message, Looper,MessageQueue, ThreadLocal. Handler是Message的消费者。 MessageQueue是容器。 Looper是整个Message分发的驱动。 Handler中有多种发送消息的方法,其中postxx…

Windows/Linux部署Qt并通过Qt Installer Framework制作安装包

本文参考 Qt Installer Framework Manual。 若要使用 Qt Installer Framework(简称 QIF),需要在 Qt Online Installer 或 Qt Maintenance Tool 中确保该组件已安装(QIF 组件在 Qt->Developer and Design Tools 下)&…

【大数据学习 | kafka】消费者的分区分配规则

1. 概述 上面我们提到过,消费者有的时候会少于或者多于分区的个数,那么如果消费者少了有的消费者要消费多个分区的数据,如果消费者多了,有的消费者就可能没有分区的数据消费。 那么这个关系是如何分配的呢? 现在我们…

【开发】关于Java中String与Integer的小小知识点(使用等号对比引用对象)

一个很简单的小知识点 我们都知道,如果使用对比包装类型或对象,那么比较的都是两者之间的地址(指针或句柄),而非对象本身,那么且看下方的代码。 public class A {public static void main(String[] args)…

2025年山东省考报名流程图解

2025年山东公务员考试备考开始 为大家整理了从笔试到录用的全部流程,希望可以帮助到你们!参考2024年山东省考公告整理,请以最新公告为准! 一、阅读公告和职位表 二、职位查询 三、网上报名 四、确认缴费 五、网上打印准考证 六、参…

网络安全入门篇之详细学习路线

什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性&…

什么是大数据治理?在企业数字化转型过程中有什么用?

建设背景 有效的数据治理不仅能够确保数据的安全和质量,还能为企业提供深入的业务洞察,推动决策制定和创新。数据治理是数字化转型的基础,是数据资源成为数据资产的基础,只有经过了数据治理,相应的数据资源才能产生价…

Kalshi PK Polymarket,谁更胜一筹

https://kalshi.com https://polymarket.com/ 在刚过去的2024 美大选中,这两个网站可谓风光无限。这两者究竟有何区别呢,今天咱们一起来扒一扒。 Kalshi与Polymarket主要有以下区别: 监管与合法性方面: Kalshi:经过美…

UI测试还在Selenium,难怪你会被淘汰

一、前言 在UI自动化测试的领域中,Selenium无疑是一颗璀璨的明星,它以其强大的浏览器自动化能力,长期以来一直是众多测试工程师的首选工具。它很经典,地位也毋庸置疑,但也是过去式了,现在我采用的自动化方…

基于ssm的网上药房管理系统的设计与实现(源码+LW+调试)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于java的ssm网上药房管…

godot——主题、Theme、StyleBox

我刚开始被这些术语吓到了,一直不敢去接触它们,都用的默认样式。现在好不容易有点思路了,记录下来。 下面看看怎么自定义样式。 1.先新建一个Theme 2.再次点击创建好的Theme 得到 图1 这样一个面板。(看不懂没事,继…

如何利用Python API接口实战中高效地获取商品详情信息

在电商数据分析和商品信息集成领域,高效地获取商品详情信息是至关重要的。本文将介绍如何使用Python结合API接口,从淘宝/天猫平台获取商品详情信息,并提供实战代码示例。 一、理解API接口的重要性 API(应用程序编程接口&#xff…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim: 1、对vim初步理解: 2、vim的模式: 3、进入与退出: 4、vim命令模式下的指令集: 移动光标: 删除: cv: 撤销: 其他: 5、vim底行模…

不支持UEFI的老显卡修改vBIOS进行支持

前段时间要在办公室玩恐怖黎明,但是联想自带的GT730实在是有点慢,后来闲鱼收了一张HD7750,虽然也是老掉牙,但是性能也有3成提升,聊胜于无吧.但是存在HD7750不支持UEFI的问题.具体表现为: 系统是win11未进系统时,什么都不显示,不能进BIOS.刚换卡未装驱动的时候,即使已经进入系统…

qt QWheelEvent详解

1、概述 QWheelEvent是Qt框架中用于处理鼠标滚轮事件的一个类。当用户滚动鼠标滚轮时,Qt会生成一个QWheelEvent事件,并将其发送到相应的窗口或控件。开发者可以通过重载窗口或控件的wheelEvent()方法来响应这个事件,并执行相应的操作&#x…

如何训练最懂您企业的AI助理?

随着人工智能技术的蓬勃发展,企业级AI助理已成为提升工作效率、优化客户服务体验的重要利器。这些智慧化的系统,通过模拟人类的认知功能,能够轻松应对复杂的数据分析、自动化繁琐的日常任务,甚至为企业决策提供有力支持。拥有一款…

2024网鼎杯web1+re2 wp

这两道题属于比较简单的,顺道说一下,今年的题有点抽象,web不是misc,re不是web的,也有可能时代在进步,现在要求全栈✌了吧 web1 最开始被强网的小浣熊带偏思路了,进来疯狂找sql注入&#xff0c…

【Android 系统中使用CallStack类来追踪获取和操作调用栈信息】

Android系统CallStack类的使用 定义使用方法使用场景注意事项应用举例 定义 在 Android 系统中,CallStack 类是一个用于获取和操作调用栈信息的工具类。这个类通常用于调试和日志记录,以帮助开发者了解函数调用的顺序和位置。以下是您提供的代码片段的解…

Vue 组件通信-自定义事件(七)

一、组件自定事件概念 自己定义的事件,包含事件名,事件回调等,定义好之后去给组件使用。也是一种组件的通信方式,适用于子组件传递给父组件。 二、 组件自定义事件实现子传父 1、在父组件中给子组件绑定一个自定义事件 在子组件标…

解决Qt Creator调试“warning: GDB: Failed to set controlling terminal“

本文档详细介绍了在Qt环境中遇到GDB提示Failed to set controlling terminal错误时的解决方案,步骤包括勾选Run in Terminal选项。适合开发者在调试过程中遇到此类问题时参考。 &"warning: GDB: Failed to set controlling terminal: \345\257\271\350\25…