当前位置: 首页 > news >正文

计算机视觉:轨迹预测综述

计算机视觉:轨迹预测综述

  • 轨迹预测的定义
  • 轨迹预测的分类
    • 基于物理的方法(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 前言课题背景分析方法与过程初步分析&#xff1a;总体流程&#xff1a;1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…...

vscode上搭建go开发环境

前言 Go语言介绍&#xff1a; Go语言适合用于开发各种类型的应用程序&#xff0c;包括网络应用、分布式系统、云计算、大数据处理等。由于Go语言具有高效的并发处理能力和内置的网络库&#xff0c;它特别适合构建高并发、高性能的服务器端应用。以下是一些常见的Go语言应用开发…...

10.(Python数模)(预测模型二)LSTM回归网络(1→1)

LSTM回归网络&#xff08;1→1&#xff09; 长短期记忆网络 - 通常只称为“LSTM” - 是一种特殊的RNN&#xff0c;能够学习长期的规律。 它们是由Hochreiter&#xff06;Schmidhuber&#xff08;1997&#xff09;首先提出的&#xff0c;并且在后来的工作中被许多人精炼和推广。…...

mac常见问题(五) Mac 无法开机

在mac的使用过程中难免会碰到这样或者那样的问题&#xff0c;本期为您带来Mac 无法开机怎么进行操作。 1、按下 Mac 上的电源按钮。每台 Mac 电脑都有一个电源按钮&#xff0c;通常标有电源符号 。然后检查有没有通电迹象&#xff0c;例如&#xff1a; 发声&#xff0c;例如由风…...

WebSocket与SSE区别

一&#xff0c;websocket WebSocket是HTML5下一种新的协议&#xff08;websocket协议本质上是一个基于tcp的协议&#xff09; 它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket的原理 …...

Qt鼠标点击事件处理:显示鼠标点击位置(完整示例)

Qt 入门实战教程&#xff08;目录&#xff09; 前驱文章&#xff1a; Qt Creator 创建 Qt 默认窗口程序&#xff08;推荐&#xff09; 什么是事件 事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称。 事件&#xff08;event&#xff09;驱动…...

OpenCV:实现图像的负片

负片 负片是摄影中会经常接触到的一个词语&#xff0c;在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色&#xff0c;其明暗与原图像相反&#xff0c;其色彩则为原图像的补色。例如&#xff0c;颜色值A与颜色值B互为补色&#…...

HZOJ#237. 递归实现排列型枚举

题目描述 ​ 从 1−n这 n个整数排成一排并打乱次序&#xff0c;按字典序输出所有可能的选择方案。 输入 ​ 输入一个整数 n。&#xff08;1≤n≤8&#xff09; 输出 ​ 每行一组方案&#xff0c;每组方案中两个数之间用空格分隔。 ​ 注意每行最后一个数后没有空格。 样例…...

C++ PIMPL 编程技巧

C PIMPL 编程技巧 文章目录 C PIMPL 编程技巧什么是pimpl&#xff1f;pimpl优点举例实现 什么是pimpl&#xff1f; Pimpl (Pointer to Implementation) 是一种常见的 C 设计模式&#xff0c;用于隐藏类的实现细节&#xff0c;从而减少编译依赖和提高编译速度。它的基本思想是将…...

一个通用的EXCEL生成下载方法

Excel是一个Java开发中必须会用到的东西&#xff0c;之前博主也发过一篇关于使用Excel的文章&#xff0c;但是最近工作中&#xff0c;发现了一个更好的使用方法&#xff0c;所以&#xff0c;就对之前的博客进行总结&#xff0c;然后就有了这篇新的&#xff0c;万能通用的方法说…...

介绍 TensorFlow 的基本概念和使用场景。

TensorFlow&#xff08;简称TF&#xff09;是由Google开发的开源机器学习框架&#xff0c;它具有强大的数值计算和深度学习功能&#xff0c;广泛用于构建、训练和部署机器学习模型。以下是TensorFlow的基本概念和使用场景&#xff1a; 基本概念&#xff1a; 张量&#xff08;T…...

【力扣】304. 二维区域和检索 - 矩阵不可变 <二维前缀和>

目录 【力扣】304. 二维区域和检索 - 矩阵不可变二维前缀和理论初始化计算面积 题解 【力扣】304. 二维区域和检索 - 矩阵不可变 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, …...

线上问诊:数仓开发(三)

系列文章目录 线上问诊&#xff1a;业务数据采集 线上问诊&#xff1a;数仓数据同步 线上问诊&#xff1a;数仓开发(一) 线上问诊&#xff1a;数仓开发(二) 线上问诊&#xff1a;数仓开发(三) 文章目录 系列文章目录前言一、ADS1.交易主题1.交易综合统计2.各医院交易统计3.各性…...

微信小程序 通过响应式数据控制元素class属性

我想大家照这个和我最初的目的一样 希望有和vue中v-bind:class一样方便的指令 但答案不太尽人意 这里 我们只能采用 三元运算符的形式 参考代码如下 <view class"item {{ userId item.userId ? isThisUser : }}"> </view>这里 我们判断 如果当前ite…...

linux并发服务器 —— linux网络编程(七)

网络结构模式 C/S结构 - 客户机/服务器&#xff1b;采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互&#xff1b;C/S结构中&#xff0c;服务器 - 后台服务&#xff0c;客户机 - 前台功能&#xff1b; 优点 1. 充分发挥客户端PC处理能力…...

做联盟 网站 跳转 防止垃圾外链/青岛seo推广公司

如何画前趋图&#xff1f;看了这篇秒懂&#xff01;&#xff08;OS前趋图画法&#xff09; 题目1 画出下面4条语句的前趋图&#xff08;符号“:”是赋值的意思&#xff09; S1&#xff1a;a&#xff1a;xy S2&#xff1a;b&#xff1a;z1 S3&#xff1a;c&#xff1a;a-b S4&a…...

权威的网站制作/百度关键词价格

编程的异常处理很重要&#xff0c;当然Sql语句中存储过程的异常处理也很重要&#xff0c;明确的异常提示能够快速的找到问题的根源&#xff0c;节省很多时间…… 编程的异常处理很重要&#xff0c;当然Sql语句中存储过程的异常处理也很重要&#xff0c;明确的异常提示能够快速的…...

青海住房和城乡建设部网站/长沙市网站制作

如何在ZEMAX和MATLAB之间通信本文内容&#xff1a;1如何在MATLAB和ZEMAX中设置通信链接2如何为MATLAB设置ZEMAX DDE工具箱3常见问题及解答Zemaxand Matlab : 强大的配对Zemax具有内置的DDE(动态数据交换)服务器&#xff0c;因而允许其他的windows程序和zemax函数之间建立链接。…...

搞笑网站全站源码/余姚关键词优化公司

1.部分反射API是泛型1.1获取反射API的泛型部分反射API是泛型&#xff0c;如Class是泛型//如果使用Class&#xff0c;不带泛型&#xff0c;出现compile warning编译警告Class clazz1 String.class;String str1 (String) clazz1.newInstance();//改写为带泛型的Class&#xff0…...

网站功能方案/网络营销策划书的范文

[闽南网]360系统急救箱修复失败的原因是什么?如果您不太了解&#xff0c;跟着小编一起来了解一下吧!电脑自动从启应该考虑的问题如下&#xff1a;一、软件方面1.病毒 “冲击波”病毒发作时还会提示系统将在60秒后自动启动。 木马程序从远程控制你计算机的一切活动&#xff0c;…...

织梦dedeeims网站打不开/网站怎么添加外链

安装阿里源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum -y install ntfs-3g 安装ntfs-3g fdisk -l 查看U盘设备 mount /dev/sdb1 /mnt 挂载U盘...