自动驾驶:轨迹预测综述

自动驾驶:轨迹预测综述

  • 轨迹预测的定义
  • 轨迹预测的分类
    • 基于物理的方法(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)等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用postman 推送消息到GCP的pubsub

创建1个Topic 和 2个 subscription 我们可以用terraform 去创建1个topic 和 2个subscriptions # topic resource "google_pubsub_topic" "topic_a" {name "TopicA"project var.project_id }# subscriptions resource "google_pubsub_s…

【AIGC专题】Stable Diffusion 从入门到企业级实战0402

一、概述 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第02节, 利用Stable Diffusion ControlNet Openpose模型精准控制图像生成。上一节,我们介绍了《Stable Diffusion C…

numpy详解

Numpy 简介 Numpy(Numerical Python)是一个在Python领域做数值计算非常重要的库, Pandas、Matplotlib、Statmodels、Scikit-learn和其它一些科学计算库都依赖Numpy 也就是说有时候你可能没有直接import numpy as np,但是却在背后…

Spring Bean的获取方式

参考https://juejin.cn/post/7251780545972994108?searchId2023091105493913AF7C1E3479BB943C80#heading-12 记录并补充 1.通过BeanFactoryAware package com.toryxu.demo1.beans;import org.springframework.beans.BeansException; import org.springframework.beans.facto…

postgresql-通用表达式

postgresql-通用表达式 入门案例简单CTE递归 CTE案例1案例2 入门案例 -- 通用表达式 with t(n) as (select 2) select * from t;简单CTE WITH cte_name (col1, col2, ...) AS (cte_query_definition ) sql_statement;WITH 表示定义 CTE,因此 CTE 也称为 WITH 查询…

【Unity】rotation和Quaternion学习笔记

1.rotation 赋值 Quaternion可以为transform.rotation 赋值 2. 从正轴面向原点,顺时针旋转,角度正增加 正x轴面向原点,顺时针旋转,z正轴往下,rotation的x正增加。 3.rotation和Quaternion的关系 1.查询 2.实践 旋转…

LVS DR模式负载均衡群集部署

目录 1 LVS-DR 模式的特点 1.1 数据包流向分析 1.2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2.1 配置负载调度器 2.1.1 配置虚拟 IP 地址 2.1.2 调整 proc 响应参数 2.1.3 配置负载分配策略 2.2 部署共享存储 2.3 配置节点服务器 2.3.1 配置虚拟 IP 地址 2.3.2…

树形控件加自定义图标样式及指引线

记录一下留用&#xff0c;有错误请指正。 效果图如下&#xff1a; 自定义图标及指引线 代码&#xff1a; <div class"head-container" style"margin-left: -15px;"><el-tree icon-class"none"style"height:100%; overflow-y: h…

flutter 网络地址URL转file

方法1 import dart:io; import package:http/http.dart as http; import package:path/path.dart; import package:path_provider/path_provider.dart;Future<File> _fileFromImageUrl() async {final response await http.get(Uri.parse(https://example.com/xyz.jpg)…

滚动菜单 flutter

想实现这个功能&#xff1a; 下面的代码可以实现&#xff1a; import package:flutter/material.dart;void main() > runApp(MyApp());class MyApp extends StatelessWidget {static const String _title Flutter Code Sample;overrideWidget build(BuildContext context)…

vcruntime140_1.dll修复的方法大全,缺失vcruntime140_1.dll解决方法分享

vcruntime140_1.dll这个文件在电脑里属于挺重要的一个文件&#xff0c;一但它缺失了&#xff0c;那么很多程序都是运行不了的&#xff0c;今天我们就来讲解一下这个vcruntime140_1.dll修复以及它的一些作用和属性。 一.vcruntime140_1.dll的作用 vcruntime140_1.dll是Microso…

在MAC电脑上将NTFS格式移动硬盘转换为ExFAT格式

注意&#xff1a;转化之前先将移动硬盘中的内容进行备份 1、点击桌面上的【前往】&#xff0c;选择【实用工具】 2、在列表中选择【磁盘工具】 3、在左侧选中你的磁盘&#xff0c;点击右侧上方的【抹掉】,注意&#xff1a;将永久抹掉储存在上面的所有数据&#xff0c;因此需要…

Kubernetes入门 十五、高级调度

目录 定向调度nodeName&#xff08;不建议&#xff09;nodeSelector 亲和性调度nodeAffinitypodAffinity 和 podAntiAffinity 容忍和污点污点容忍 定向调度 定向调度&#xff0c;指的是利用在 Pod 上声明的 nodeName 或 nodeSelector &#xff0c;以此将 Pod 调度到期望的 Nod…

Alibaba(商品详情)API接口

为了进行电商平台 的API开发&#xff0c;首先我们需要做下面几件事情。 1&#xff09;开发者注册一个账号 2&#xff09;然后为每个alibaba应用注册一个应用程序键&#xff08;App Key) 。 3&#xff09;下载alibaba API的SDK并掌握基本的API基础知识和调用 4&#xff09;利…

计算机专业毕业设计项目推荐03-Wiki系统设计与实现(JavaSpring+Vue+Mysql)

Wiki系统设计与实现&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…

大数据技术之Hadoop:提交MapReduce任务到YARN执行(八)

目录 一、前言 二、示例程序 2.1 提交wordcount示例程序 2.2 提交求圆周率示例程序 三、写在最后 一、前言 我们前面提到了MapReduce&#xff0c;也说了现在几乎没有人再写MapReduce代码了&#xff0c;因为它已经过时了。然而不写代码不意味着它没用&#xff0c;当下很火…

Spring中的JdbcTemplate的使用

在最近的一个工作中&#xff0c;为了简单方便我就是用了Spring自带的JdbcTemplate来访问数据库&#xff0c;我以为之前自己很熟练的掌握&#xff0c;后来才发现我太天真了&#xff0c;踩了很多坑。 基本方法 JdbcTemplate自带很多方法可以执行SQL语句,以下我主要列举&#xf…

103. 二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历 题目-中等难度示例1. bfs 题目-中等难度 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09…

Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者&#xff1a;DAVID HOPE 本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用&#xff0c;特别是在日志分析中。 最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能&#xff0c;可增强搜索能力…

Linux 中的 compress 命令及示例

compress命令用于减小文件大小。压缩后,该文件将添加.Z扩展名。文件权限仍将保持与使用压缩命令之前相同。该命令使用自适应 Lempel-Ziv 编码,并且忽略符号链接。该命令也是ncompress软件包的一部分,其中包含用于快速压缩和解压缩的实用程序。 注意:如果未指定文件,则标准…