【论文阅读】Pylot: A Modular Platform for Exploring Latency-Accuracy Tradeoffs in Autonomous Vehicles
参考与前言 resource
代码:https://github.com/erdos-project/pylot
论文地址:https://www.ionelgog.org/data/papers/2021-icra-pylot.pdf
这篇是系统层面的,就是融合了已有的方法,搭建了一个开源的AV研究平台(python),基本涵盖了整个无人驾驶的所有模块,正好拿来练一下熟悉程度
1. Motivation
近况:一般大家都把整个自动驾驶进行拆分成几个模块,以便进行错误分析 (problem-specific evaluation metrics),而本文也正是由此出发给大家提供一种便于进行模块化测试的框架
整个自动驾驶大框架
问题提出
问题提出:端到端的自动驾驶行为不太好进行错误分析,比如基于驾驶数据的KITTI和Cityspaces的数据集,只是静态结果比如准确率但是没法考虑整个模型的运行时间
所以,如何平衡 模块的延迟 与 其在离线数据集上的准确性之间对于安全关键应用程序(例如 AV)至关重要,其中 correctness function 与 算法准确性 及 其端到端运行时间 有关
问题解决:Pylot就是这样一个模块化的平台 供大家去评估自己的自身的模块latency and accurarcy,同时也可以关注下游的整个表现。
- 为啥没法考虑模型的运行时间?不是有算法运行时间的对比吗?是因为不是实时的数据?只是在bag包这种里面就不算吗
- 所以这个主要是说如果评估单独模块 应该放到整个框架下去评估的意思吗?
Contribution 贡献
一句话总结就是:提出了一个 模块化 开源 的自动驾驶平台,供大家使用,同时CARLA HD map的排名证明了 我们的平台效果很不错
截图至原文
这篇可以看成是怎么去写一篇比较系统级的论文的参考用语
2. Method
整个系统需要满足三个关键要求:模块化(modularity)、可移植(portability)、便于调试(debuggability)
2.1 系统要求
模块化 modularity
细节上都是在讨论pylot这个的通信方式和ROS Cyber有什么不同:
- ROS获得传感器消息后需要一个固定频率的Publisher,在Pub和Sub的模型中交换具有不同运行时的组件需要微调下游运算符调用其计算的频率
- Dataflow system允许开发人员在跨请求的流中同步数据到达时就callback进行调用。Pylot dataflow system 通过要求在这些流上发布的操作员在特定时间戳 [37]-[40] 的传出数据完成后发送特殊水印消息,来无缝地跨多个流同步数据。 dataflow system 对此类运行时可变性具有鲁棒性,并支持高度模块化的应用程序。
可移植 portability
不同仿真器:只需要修改相关传感器数据的接口和车辆控制指令即可
仿真与实车:
必须支持高吞吐量的数据的接收 → highthroughput processing of the data
- pylot 的高吞吐量、低延迟 dataflow系统,比ROS更好
底层系统根据它们的资源需求透明地调度这些算子跨机器的并行执行,并通过共享内存队列为并置模块提供零拷贝通信
此外,这种透明的调度和通信不需要任何代码更改,再加上用于遗留 ROS 代码的 shim 层,允许 Pylot 无缝和零碎地移植到不同的硬件平台。
便于调试 debuggability
这一点的申明主要是因为集成了carla leaderboard的scenario runner,也就是在carla里进行场景测试的功能包
而基于pylot的dataflow system 允许用户重播放相关场景,更偏于调试。这点挺棒的,因为carla官方只给出一个json文件,不给出具体整个画面记录 除非自己写...,json文件又特别简略,例如:
展开查看
"meta": {
"exceptions": [
[
"RouteScenario_16",
0,
"Failed - Agent got blocked"
],
[
"RouteScenario_17",
1,
"Failed - Agent got blocked"
],
[
"RouteScenario_18",
2,
"Failed - Agent got blocked"
],
[
"RouteScenario_20",
4,
"Failed - Agent got blocked"
],
[
"RouteScenario_21",
5,
"Failed - Agent got blocked"
],
[
"RouteScenario_22",
6,
"Failed - Agent got blocked"
],
[
"RouteScenario_23",
7,
"Failed - Agent got blocked"
],
[
"RouteScenario_24",
8,
"Failed - Agent got blocked"
],
[
"RouteScenario_25",
9,
"Failed - Agent got blocked"
]
]
},
同时这种确定性执行是通过对 watermark message 的接收执行计算来实现的 [38]、[39]、[45]。 这将整个 AV pipeline 的执行减少到 Kahn Process Network [46],从而保证了确定性。
另外,因为仿真世界里可以提供某些真实的数据,所以pylot也可以单独进行 单元测试检查等,体现便于调试这点
套娃了解一下ROS的shim layer是个啥
套娃 Kahn Process Network
2.2 模块实现
以下主要是介绍其无人驾驶系统的各个模块有什么样的方法
目标检测 Object Dectection
使用相机、激光雷达数据进行检测、定位目标等、车道线、红绿灯等。输出的消息由 ObstacleMessage定义:bounding box 和 由ML方法返回的 confidence score
主要用的Tensorflow object detection [28]:
- Faster-RCNN
- SSD
- EfficientDet,这是一个family models
对应代码位置:https://github.com/erdos-project/pylot/tree/master/pylot/perception/detection
目标追踪 Object Tracking
跟踪:estimates the bouding boxes of object over time,主要方案两种:
- tracking by detection,也就是使用检测的jieg
- detection-free tracking,只跟踪设定好的数量的物体
集成的库:
SORT [49]
轻量化,使用tracking by detection方案,假设是跟踪的物体是恒定速度的线性模型,然后用卡尔曼滤波来估计物体位置,随之基于检测的更新,用hungraian算法进行匹配bounding box
但是呢 这种方法虽然速度快,精度较低特别是在object occlusions or camera motion的情况
DeepSORT [50]
改进了前者的缺点,但是因为用到了CNN 所以实时性更新上 可能跟不上
DaSiamRPN [51]
detection-free tracking方案,通过incorporating 跟踪物体的外在apperance信息来改进了相关缺点,但是在执行CNN特征提取模型的运行时间还是比较大
它利用 siamese feature extraction network 来学习干扰器感知特征。 跟踪器依靠神经网络推理来跟踪对象,以检测时提供更准确的估计。
但是,“最佳”选择取决于具体情况。 例如,当运行时间很重要时,SORT 在紧急情况下表现最佳,而 DeepSORT 在常规驾驶情况下表现最佳,而 DaSiamRPN 在对少量对象(例如城市驾驶)要求高精度的场景中表现出色。
预测 Prediction
预测模块主要依赖于跟踪模块的结果,然后使用LiDAR扫描到的信息来进行预测。细节点就是收到boundingbox 然后从ObstacleTrajectoryMessage得到物体的id,然后再输出包含有过去和未来的物体轨迹信息的ObstaclePredictionMessage
实现了的方法:
线性规划模型 假定大家是恒定速度线性模型
R2P2 [10]
a state-of-the-art single-agent trajectory forecasting model which learns a distribution over potential future trajectories that is parameterized by a one-step policy using a gated recurrent unit, and attempts to optimize for both quality and diversity of samples.
为了将 R2P2 扩展到多agent设置,Pylot 通过将场景上下文和其他agent的过去轨迹旋转到自我车辆坐标系,在每个agent上都运行 R2P2
Multipath [52]
使用轻量级神经网络来获得场景的有用表示,然后为每个agent应用较小的网络特征来输出预测。 由于每个agent的计算可以分批进行,因此 Multipath 速度快但准确度较低,因为它无法明确考虑agent交互。 相比之下,Multiple Futures Prediction (MFP) [53] 联合建模agent行为,导致运行时间增加但预测更准确。
规划 Planning
规划模块的目标是产生一个安全、舒适和可行的轨迹,以解释当前和未来可能的环境状态。 为了实现这一点,Pylot 中的规划模块同步所有其他模块的输出以构建一个 World 表示,其中包含场景中所有agent的过去和未来轨迹,以及静态对象(如交通灯)的位置和状态, 交通标志等。 至关重要的是,这允许 Pylot 有选择地利用任何先前组件或模块的地面实况信息,并确定一组选定组件的准确性和系统整体运行时间。
规划模块由三个组件组成:路线规划器、行为规划器和运动规划器 (route, behavioral, and motion planners),后者对 AV 的舒适度 和 系统整体运行时间 较为重要。 因此,Pylot 为三大类运动规划器中的每一个提供了实现:
Graph-based search planners [5]
Hybrid A*,把整个configuration space 离散化成 graph,这样在低离散分辨率的情况下 可以非常快速的得到结果;但也正因为如此 对于分辨率的选择就变得至关重要了
Incremental search planners
RRT* [4],通过对 configuration space 进行采样而不是预先计算一组固定的 configuration node 来逐步构建路径。 它们不受初始 graph 构造的限制,因此能够在任何给定的计算时间内微调结果的准确性。
Trajectory generation planners
Frenet Optimal Trajectory [6], [57],构建一组候选路径,计算它们 碰撞、物理约束及相关cost。 虽然生成的路径通常比对应的路径更平滑,但如果在低离散分辨率,轨迹生成可能会生成不出可行的方案
控制 Control
当接收到planning模块的路径点和目标速度后,由控制模块来跟随这些路径点和保持目标速度,pylot实现了以下两个控制器
- PID
- MPC
当然开发者也可以在 motion planning and control 使用MPC来实现两者,同时也可以替换掉这些 使用端到端的方法去验证算法。
【论文阅读】Pylot: A Modular Platform for Exploring Latency-Accuracy Tradeoffs in Autonomous Vehicles的更多相关文章
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition
论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...
- 【论文阅读】FaceBoxes- CPU Real-time Face Detector with High Accuracy
前言 参考 1. FaceBoxes_paper; 2. Faceboxes_github_tf; 3. 翻译: 4. 理解1: 5. 理解2: 完
- 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)
白翔的CRNN论文阅读 1. 论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...
- BITED数学建模七日谈之三:怎样进行论文阅读
前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
随机推荐
- python使用pysql操作MySQL数据库
前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...
- Ubuntu安装完VMware tools还是不能和主机之间拖拽文件
Ubuntu安装完VMware tools还是不能和主机之间拖拽文件 1.确保已安装了VMware Tools 2.禁用 Wayland sudo gedit /etc/gdm3/custom.con ...
- java后台@RequestBody和@RequestParam
RequestBody 接收的是请求体里面(body)的数据 RequestParam接收的是key-value里面的参数,所以它会被切割进行处理从而可以是普通元素.数组.集合.对象等接收 get-- ...
- 数据驱动ddt安装3种方式_unittest_Python
命令行安装 pip install ddt -i 管理员运行命令提示符 pycharm设置里安装 pycharm Python Packages里安装
- 部署Zabbix
https://blog.csdn.net/qq_57414752/article/details/125819822
- 宝塔面板6.X在Docker中安装宝塔面板5.9.1 – 我是不是太闲了?
我是不是太闲了,问你们三遍,场景是这样的,我在一台VPS里面安装宝塔面板6.X,宝塔面板的软件商店有Docker管理器2.0这一个免费好用的小玩意.大鸟安装好Docker管理器2.0,然后在Docke ...
- LLM 大模型学习必知必会系列(十):基于AgentFabric实现交互式智能体应用,Agent实战
LLM 大模型学习必知必会系列(十):基于AgentFabric实现交互式智能体应用,Agent实战 0.前言 **Modelscope **是一个交互式智能体应用基于ModelScope-Agent ...
- MySQL学习笔记-SQL实践1
SQL实践1 借着学校的数据库实验,来对之前学习的SQL语言进行实践和总结. 实验环境: macOS 13.2 (22D49) mysql Ver 8.0.32 for macos13.0 on ar ...
- centos os7 和redhat 7 安装yum源失败的解决办法
首先看我的报错 [Errno 14] curl#6 - "Could not resolve host: mirrors.aliyun.com; Unknown error" yu ...
- linux系统下,配置多个tomcat服务
安装jdk时配置的环境变量 export JAVA_HOME=/usr/local/jdk1.8.0_311 export JRE_HOME=$JAVA_HOME/jre export PATH=$P ...