计算机视觉:轨迹预测综述
计算机视觉:轨迹预测综述
- 轨迹预测的定义
- 轨迹预测的分类
- 基于物理的方法(Physics-based)
- 基于机器学习的方法(Classic Machine Learning-based)
- 基于深度学习的方法(Deep Learning-based)
- 基于强化学习的方法(Reinforcement Learning-based)
- 数据集/评价指标
轨迹预测的定义
轨迹预测问题可以表述为在给定的一个场景下,使用交通参与者的历史状态预测估计其未来状态。历史状态可以来自于车端或路端,状态信息一般包括交通参与者的位置,也有可能包括速度、加速度、朝向角等信息。场景信息一般包括车辆运动学(或动力学)、路侧信息(地图、交通信号灯、交通规则等)和交通参与者之间的交互信息等因素。
轨迹预测的输入是一系列具有历史时间信息的交通参与者状态。
轨迹预测的输出是一系列具有未来时间信息的交通参与者状态,一般有三种形式:单模态(Unimodal)、多模态(Multimodal)和意图(Intention)。
- 单模态是指一个或多个交通参与者的一个未来轨迹;
- 多模态是指一个或多个交通参与者的多个未来轨迹;
- 意图可以是最终输出的一部分,也可以是一个中间过程,提供了交通参与者的轨迹意图。
轨迹预测的分类
基于物理的方法(Physics-based)
基于物理的方法是借助于车辆的运动学模型或动力学模型,使用单一轨迹预测、卡尔曼滤波或蒙特卡罗的方法对其轨迹进行预测。虽然简单高效、计算复杂度低,但是其预测精度相对较低,一般仅适用于短期预测(不超过1s),但基于学习的方法通常可以考虑融合基于物理的方法进而提升预测精度。
- 单一轨迹预测:该方法认为车辆状态是已知且无噪声的,使用匀速、匀加速度或匀角速度和加速度等模型对车辆的状态进行预测,此方法虽然简单高效,但未考虑路侧信息以及状态的不确定性,不适合于长期轨迹预测。
- 卡尔曼滤波:该方法将车辆状态的不确定性(噪声)考虑在内,并认为噪声呈高斯分布,通过不断地迭代预测车辆状态的平均值和方差。此方法虽然考虑了状态的不确定性,但简单地认为噪声呈高斯分布是不可靠的,一些学者也提出了多模态轨迹预测的卡尔曼滤波、考虑交互因素的卡尔曼滤波等方法。
- 蒙特卡罗:此方法可以对交通参与者的状态分布进行模拟,它对历史状态输入进行随机采样,利用物理模型(动力学、运动学模型)对未来状态进行估计,其中的历史状态可以是已知且确定的,亦可以是由估计算法得到的不确定的。
基于机器学习的方法(Classic Machine Learning-based)
基于机器学习的方法是应用数据驱动的模型来预测轨迹,例如高斯过程(Gaussian Process)、支持向量机(Support Vector Machine)、隐式马尔可夫链(Hidden Markov)、动态贝叶斯(Dynamic Bayesian)、K近邻(K-Nearest Neighbors)、决策树(Dynamic Tree)等等。此类方法利用经典机器学习的分类与回归方法对交通参与者的轨迹与意图进行学习与预测,相较于基于物理的方法,它可以更好地融合路侧、交互等场景信息,预测精度得以提升,但此方法针对复杂场景可能束手无策。
基于深度学习的方法(Deep Learning-based)
基于深度学习的方法一般针对历史状态的输入,进行特征提取,再通过回归来预测未来状态输出。例如循环神经网络(Recurrent Neural Network,RNN)、卷积神经网络(Convolutional Neural Network,CNN)、基于Transformer的注意力网络(Attention Network based on Transformer)、图神经网络(Graph Neural Network,GNN)以及生成式网络(Generative Adversarial Network,GAN)等。此方法已经成为研究的主流方向,并达到了SOTA水平,相较于基于物理、机器学习的方法,基于深度学习的方法可以预测更长时间的状态。
- 循环神经网络:它与有效处理空间信息的卷积神经网络不同,循环神经网络被设计用来处理时间信息,它存储每一步时间信息,利用隐藏状态和历史轨迹的特征输入来预测未来轨迹的输出。当时间步数较大时,循环神经网络容易发生梯度爆炸。使用门控循环神经网络(Gated RNN)可以解决此问题,例如长短期记忆网络(Long Short Term Memory Network,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)。
- 卷积神经网络:由于轨迹具有很强的时空连续性,部分学者认为使用CNN预测会更好。它们采用序列到序列的结构,以历史轨迹为输入,在全连接层之后叠加卷积层实现时间连续性,再通过全连接层输出未来轨迹。实验表明,基于CNN的模型运行速度更快。
- 卷积循环神经网络:卷积神经网络适用于提取空间信息,循环神经网络适用于处理时间信息,一些学者将两者联合在一起进行建模。
- 注意力网络:随着Transformer在计算机视觉和自然语言处理的爆火,一些学者也将Transformer的编码器与解码器应用到轨迹预测中,首先历史状态作为编码器的输入,object query作为未来状态与历史状态的编码输出交互,得到最终的预测轨迹。实验证明此方法在长时序的预测任务中表现良好,不仅方便轨迹序列的建模,也方便对环境和交通参与者之间的交互进行建模。
- 图神经网络:每一个交通参与者被认为图中的一个节点(node),每一个节点通过边(edge)与其他节点相关联。因此图神经网络方便对交互信息进行建模,典型的方法主要有图卷积网络和图注意力网络。
- 生成式网络:为了解释轨迹预测的多模态属性与不确定性,一些学者提出使用生成式网络来预测轨迹,包括生成对抗网络(Generative Adversarial Network,GAN)和条件变分自动编码器(Conditional Variational Auto Encoder,CVAE)。
基于强化学习的方法(Reinforcement Learning-based)
传统的强化学习是基于马尔可夫决策过程(Markov decision process,MDP),利用与环境交互和人为设计的奖励函数,以最大化奖励为准则来得到最优的行为,基于强化学习的轨迹预测方法包括:逆向强化学习(Inverse Reinforcement Learning,IRL)、生成对抗模仿学习(Generative Adversarial Imitation Learning,GAIL)和深度逆向强化学习(Deep Inverse Reinforcement Learning,DIRL)等等。
- 逆向强化学习:此方法是指奖励函数并非人为设计,而是根据专家演示学习一个奖励函数得到最优的行为进而对轨迹进行预测,逆向强化学习主要有基于最大化裕度和最大化熵两种优化方法来更新学习奖励函数的权重。最大化裕度的方法是通过最小化专家演示和预测轨迹之间的特征期望来更新奖励函数的权重,然而大多数基于裕度的方法在特征期望匹配方面是模糊的。而最大化熵的方法使用多个奖励函数来解释专家演示的模糊性。
- 生成对抗模仿学习:此方法使用生成式网络GAN进行模仿学习,它利用GAN生成轨迹,使之与专家演示尽可能相近,再利用鉴别器判断是否此轨迹是一个专家演示。
- 深度逆向强化学习:由于预测任务是非线性的,不同于逆向强化学习,深度逆向强化学习利用全卷积神经网络学习一个复杂的非线性奖励函数。目前,大多数DIRL算法可以直接利用原始传感器数据(图像、点云等)进行建模。
数据集/评价指标
关于轨迹预测数据集包括但不限于NuScenes、Waymo、Lyft Level 5、Argoverse、INTERACTION、HighD、Apolloscape、KITTI、NGSIM等。
评价指标:均方根误差(Root Mean Squared Error,RMSE)、负对数似然(Negative Log Likelihood,NLL)、平均位移误差(Average Displacement Error,ADE)、最终位移误差(Final Displacement Error,FDE)、错失率(Miss Rate,MR)、计算时间(Computation Time)、预测视野(Prediction Horizon)等。
相关文章:
计算机视觉:轨迹预测综述
计算机视觉:轨迹预测综述 轨迹预测的定义轨迹预测的分类基于物理的方法(Physics-based)基于机器学习的方法(Classic Machine Learning-based)基于深度学习的方法(Deep Learning-based)基于强化学…...
三维跨孔电磁波CT数据可视化框架搭建
三维跨孔电磁波CT数据可视化框架搭建 文章目录 三维跨孔电磁波CT数据可视化框架搭建1、三维CT可视化结果2、matlab代码2.1、CT数据格式整理并保存2.2、三维可视化 利用matlab实现对跨孔电磁波CT实测数据反演,并搭建了三维CT数据可视化框架,可装填实测CT反…...
OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found
在OC的项目里加入Swift代码,创建完桥接文件后,需要倒入Swift头文件,头文件的格式为“项目名-Swift.h”。 如下图,我在Xcode上看到我的项目名为YichangPark,导入 #import "YiChangPark-Swift.h" 之后提示 “Y…...
一文读懂HOOPS Native平台:快速开发桌面端、移动端3D应用程序!
HOOPS Native Platform是用于在桌面和移动平台以及混合现实应用程序上构建3D工程应用程序的首要工具包。它由三个集成良好的软件开发工具包(SDK)组成:HOOPS Visualize、HOOPS Exchange、HOOPS Publish。HOOPS Visualize 是一个强大的图形引擎,适用于本机…...
Scrum工作模式及Scrum工具
Scrum工作模式是一种敏捷软件开发方法,其核心是团队合作和自我组织,旨在通过短周期的迭代开发,实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动: 1、产品负责人(Product Owner):负…...
[ros][ubuntu]ros在ubuntu18.04上工作空间创建和发布一个话题
构建catkin工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd ~/catkin_ws/ catkin_make 配置环境变量 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 检查环境变量 echo $ROS_PACKAGE_PATH…...
我的区块链笔记
区块链 中心化的账本,个人节点和中心节点的地位不对等,中心节点说了算。去中心化,个人节点就是公平的,根据一套规则,叫做公比机制。 区块链的本质,就是数据存储方式 区块链使用密码学算法产生的区块&…...
Spring事务(ACID特性、隔离级别、传播机制、失效场景)
一、事务的ACID特性 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency) 事务前后数据的完整性必须保持一致。隔离性(Isola…...
机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件
机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件] 引言无约束优化问题无约束优化问题最优解的定义 无约束优化问题的最优性条件无约束优化问题的充要条件无约束优化问题的必要条件无约束优化问题的充分条件 引言 本节将介绍无约束优化问题,主要介绍无…...
E5061B/是德科技keysight E5061B网络分析仪
181/2461/8938产品概述 是德科技E5061B(安捷伦)网络分析仪在从5 Hz到3 GHz的宽频率范围内提供通用的高性能网络分析。E5061B提供ENA系列常见的出色RF性能,还提供全面的LF(低频)网络测量能力;包括内置1 Mohm输入的增益相位测试端口。E5061B从低频到高频的…...
2.4 PE结构:节表详细解析
节表(Section Table)是Windows PE/COFF格式的可执行文件中一个非常重要的数据结构,它记录了各个代码段、数据段、资源段、重定向表等在文件中的位置和大小信息,是操作系统加载文件时根据节表来进行各个段的映射和初始化的重要依据…...
Vue2项目练手——通用后台管理项目第五节
Vue2项目练手——通用后台管理项目 首页组件布局面包屑&tag面包屑使用组件使用vuex存储面包屑数据src/store/tab.jssrc/components/CommonAside.vuesrc/components/CommonHeader.vue tag使用组件文件目录CommonTag.vueMain.vuetabs.js 用户管理页新增功能使用的组件页面布局…...
软件工程学术顶会——ESEC/FSE 2022 议题(网络安全方向)清单、摘要与总结
总结 本次会议中网络安全相关议题涵盖区块链、智能合约、符号执行、浏览器API模糊测试等不同研究领域。 热门研究方向: 1. 基于深度学习的漏洞检测与修复 2. 基于AI的自动漏洞修复 3. 模糊测试与漏洞发现 冷门研究方向: 1. 多语言代码的漏洞分析 2. 代码审查中的软件安全 3. 浏…...
从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr
目录 1. 智能指针的引入_内存泄漏 1.1 内存泄漏 1.2 如何避免内存泄漏 2. RAII思想 2.1 RAII解决异常安全问题 2.2 智能指针原理 3. auto_ptr 3.1 auto_ptr模拟代码 4. unique_ptr 4.1 unique_ptr模拟代码 5. shared_ptr 5.1 shared_ptr模拟代码 5.2 循环引用 6.…...
C++信息学奥赛1187:统计字符数
#include <bits/stdc.h> using namespace std; int main() {string arr;cin >> arr; // 输入一个字符串int n, a, max; // 定义变量n, a, maxchar ArrMax; // 定义字符变量ArrMaxn arr.length(); // 获取字符串长度max a 0; // 初始化max和a为0// 外层循环&…...
计算机毕设 大数据商城人流数据分析与可视化 - python 大数据分析
文章目录 0 前言课题背景分析方法与过程初步分析:总体流程:1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到…...
vscode上搭建go开发环境
前言 Go语言介绍: Go语言适合用于开发各种类型的应用程序,包括网络应用、分布式系统、云计算、大数据处理等。由于Go语言具有高效的并发处理能力和内置的网络库,它特别适合构建高并发、高性能的服务器端应用。以下是一些常见的Go语言应用开发…...
10.(Python数模)(预测模型二)LSTM回归网络(1→1)
LSTM回归网络(1→1) 长短期记忆网络 - 通常只称为“LSTM” - 是一种特殊的RNN,能够学习长期的规律。 它们是由Hochreiter&Schmidhuber(1997)首先提出的,并且在后来的工作中被许多人精炼和推广。…...
mac常见问题(五) Mac 无法开机
在mac的使用过程中难免会碰到这样或者那样的问题,本期为您带来Mac 无法开机怎么进行操作。 1、按下 Mac 上的电源按钮。每台 Mac 电脑都有一个电源按钮,通常标有电源符号 。然后检查有没有通电迹象,例如: 发声,例如由风…...
WebSocket与SSE区别
一,websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
