前言引用

[2] DSDNet Deep Structured self-Driving Network Wenyuan Zeng, Shenlong Wang, Renjie Liao, Yun Chen, Bin Yang, Raquel Urtasun (ECCV 2020)

从这里我们进入了比较正式的期刊论文(我其实挺喜欢NVIDIA的写作风格类似于报告 但是比较易懂 让我们下次看看这篇吧)正式所以摘要很少 hhh

摘要

万事从摘要开始:

In this paper, we propose the Deep Structured self-Driving Network (DSDNet), which performs object detection, motion prediction, and motion planning with a single neural network. Towards this goal, we develop a deep structured energy based model which considers the interactions between actors and produces socially consistent multimodal future predictions. Furthermore, DSDNet explicitly exploits the predicted future distributions of actors to plan a safe maneuver by using a structured planning cost. Our sample-based formulation allows us to overcome the di culty in probabilistic inference of continuous random variables. Experiments on a number of large-scale self driving datasets demonstrate that our model signi cantly outperforms the state-of-the-art.

碎碎念:这次的摘要很短,如果只看摘要可能会很疑惑,比如interactions between actors, produces socially(socially还能数据化?->其实就是预测其他车的运动), 基于样本去formulation, probabilistic inference of continuous random variables(直译:连续随机变量的概率推理 这是指哪个现象呢 )前面两个在介绍部分就解释了一下

1.interactions between actors:指其中一个的actor的行为会影响到其他的actor(actor翻译成对象还是啥好呢 所以就中英夹杂了)

2.produces socially consistent multimodal future predictions:虽然我还是没能理解socially?可能是语言上?但是从介绍部分这个就是1.的延伸,行为会相互影响所以 model the future motions of actors with multi-modal distributions就是十分重要的。

所以这篇文章干的事情就是:输入数据,三个分支(但是一张网?此点待看)对于规划的cost function采取基于样本的形式(数据+人为),明显和上一个NVIDIA的暴力学习不同的是,1.加入了概率模型去预测未来在决定驾驶,2.prediction module uses an energy-based formulation to explicitly capture the interactions among actors and xxx(见介绍的最后部分),3.训练集采用的开源 2个真实世界,1个CARLA仿真见[6][15,39]的参考出处可得

Contribution

  1. Our prediction module uses an energy-based formulation to explicitly capture the interactions among actors and predict multiple future outcomes with calibrated uncertainty.
  2. Our planning module considers multiple possibilities of how the future might unroll, and outputs a safe trajectory for the self-driving car that respects the laws of traffic and is compliant with other actors.
  3. We address the costly probabilistic inference with a sample-based framework.

Method

从开头的这两幅图结合介绍看,对整个框架应该可以认识的很快

从第一个看,用一个CNN框架,共同细分了三个模块【所以是咋细分的呢?输出三个模块?输出信息呢?】

右边的safe planning under uncertainty很有意思,考虑了socially-consistent prediction

原文:In this work, we further enhance the model capacity with a non-parametric explicit distribution construed over a dense set of trajectory samples.【这个也没看懂 可能是基础问题 non-parametric explicit distribution?】

Structured models and Belief Propagation:

To encode prior knowledge, there is a recent surge of deep structured models, which use deep neural networks (DNNs) to provide the energy terms of a probabilistic graphical models (PGMs).

进入Method,这一部分的方法特别长(主要我想理解 所以有点想解释清楚),最好对着论文看比较好...

框架 - backbone

整个框架的输入:We rasterize the lanes with different semantics into different channels and concatenate them with 3D LiDAR tensor to form our input representation.

将不同的semantics与3D LiDAR tensor整合起来,整合得到的3D tensor再通过深度卷积网络去计算出a backbone feature map \(F \in \mathbb R{^{H \times W \times C}}\),使用两个卷积网络分开F,一个是识别位置上是否有其他actor,其余一个是返回每个actor的位置,大小,方位和速度。再讲这个feature map作为prediction和planning modules 的输入去生成actors' 行为分布和safe planning maneuver.

多社会模型概率预测? - Probabilistic Multimodal Social Prediction

(不知道怎么翻译这个小标题了) 为了计划安全的行驶行为,我们就得预测其他的actors是什么行为。 we represent their possible future behavior using a trajectory defined as a sequence of 2D waypoints on birds eye view sampled at \(T\) discrete timestamps.

️将输出参数化:每当一个测量周期就更新一次所有actors'概率,那么概率是怎么表示的呢?\(s_i \in \mathbb R^{T \times 2}\) be the future trajectory of the i-th actor. 这是一个单独的整个\(p(s_1,\ldots , s_N|X)\),这个整体的联合概率没有高效的计算方式。

️对所有的agent未来预测行为建模:Here, we propose to approximate this high-dimensional continuous space with a finite number of samples. 所以本文采用的是采样的方法 randomly sample K possible future trajectory. 为确保采样的diverse, dense and physically plausible(离散又密集?diverse and dense?奇怪点) we follow the Neural Motion Planner (NMP) and use a combination of straight, circle and clothoid curves. 总公式如下:

\[p(s_1,\ldots ,s_N|X,w)=\frac{1}{Z}exp(-E(s_1,\ldots,s_N|X,w))
\]

式子中w是学习的参数,X是传感器原始数据,Z是actors' 所有可能的状态。\(Z=\sum exp(-E(\hat s_1^{k_1}, \ldots,s_N^{k_N}))\) 这里为了让整个框架有可解释性,就像人们驾驶车的感觉和交规方面。比如,我们会尽可能的smoothly along the road and avoid collision with each other. Therefore, we decompose the energy E into two terms.(这里的energy E 在MIT老教授的线性代数里正定也看到过 energy test,但是实际的意义到底是什么呢?能量?还是就是一种cost function的表示?)

\[E(s_1,\ldots,s_N|X,w)= \sum\limits_{i = 1}^N {{E_{traj}}({s_i}|X,{w_{traj}})} + \sum\limits_{i = 1}^N {\sum\limits_{i \ne j}^N {{E_{coll}}({s_i},{s_j}|X,{w_{coll}})} }
\]

N是检测的agent总数,w还是学习到的参数

因为前部分的\(E_{traj}\)很难定义,所以这里使用了一层神经网络去学习,输入:传感器数据\(X\)和计划好的路径\(s_i\),输出a scalar value.

下图是更为详细的解释和框架图:

️Message Passing inference:we thus conduct marginal inference over the joint distribution. (这里的marginal inference就不是很懂了?) 我们使用sum-product message passing去预测每一个actor的边缘分布,然后再将其他actors的影响marginalization. 这样得出的边缘概率\(p(s_i|X,w)\)反映出了actor行为的不确定性和multimodality(这个词也不懂),and will be leveraged by our planner. 在每一次迭代行为里更新每个actor \((s_i)\)

\[{m_{ij}}\left( {{s_j}} \right) \propto \sum\limits_{{s_i} \in \{ {s_i}^k\} } {{e^{ - {E_{traj}}({s_i}) - {E_{coll}}({s_i},{s_j})}}} \prod\limits_{n \ne i,j} {{m_{ni}}({s_i})}
\]

这个式子中的\(m_{ij}\)是我一直疑惑的 为什么message可以直接这样表示 或者说这个message的格式信息?想要表达的东西?原文中 \(m_{ij}\) is the message sent from actor i to actor j and \(\propto\) means equal up to a normalization constant. 这个消息传输的过程就是 actors之间互相交流他们未来intention \(s_i\) and how probable those intentions are \(E_{traj}(s_i)\) 而碰撞的可以帮助不同的额actors之间coordinate intentions,这样就算行为复杂也不会产生碰撞。经过消息的传递迭代后,我们可以得出大概的边界概率如下:

\[p(s_i=\hat s_i^k|X,w) \propto e^{ - {E_{traj}}({\hat s_i^k})} \prod\limits_{j \ne i}m_{ij}(\hat s_i^k)
\]

在不确定情况下安全的运动规划

The motion planning module fulfills our final goal, that is, navigating towards a destination while avoiding collision and obeying traffic rules. 所以为了量化这个目标,我们构建了cost function C, 更低的cost意味着这条路更好,构建完成后 planning的工作就是找到min cost的trajectory

\[\tau^* = arg \min \limits_{\tau \in {\rm P}} C(\tau|p(s_1,\ldots,s_N),X,w)
\]

while \(\tau^*\) the planned optimal trajectory and \(\rm P\) the set of physically realizable trajectories 满足车辆的动力学模型

再到整个Planning Cost

\[C(\tau|p(s_1,\ldots,s_N),X,w)=C_{traj}(\tau|X,w)+\sum\limits_{i = 1}^N {{E_{p({s_i}|X,w)}}\left[ {{C_{coll}}\left( {\tau ,{s_i}|X,w} \right)} \right]}
\]

\(C_{traj}\)就是用神经网络学习到的车辆轨迹,\(E_{traj}\)是预测模块,使用了trajectory feature和ROIAlign 从backbone 特征图中提取出来并计算this scalar cost value. \(C_{coll}(\tau,s_i)=\lambda\) if \(\tau\) and \(s_i\) colide, and 0 otherwise,也就是就散得到的planned optimal trajectory如果和任何一个actor撞到了都是不可行的,这样就能保证车辆行驶安全

学习

这一部分我们直接将所有的模型(backbone, detection, prediction and planning)通过一个multi-class loss 联合训练

\[\mathcal{L} = \mathcal{L}_{planning}+ \alpha {{\mathcal L}_{prediction}} + \beta {{\mathcal L}_{detection}}
\]

\(\alpha\)和\(\beta\)是常量超参数,这样的multi-task loss can fully exploit the supervision for each task and help the training. 如果只有前者的\(\mathcal{L}_{planning}\) 那就损失了预测和检测的更为合理的学习,更具可解释性?(但是这样不会重复吗?planning那块的学习就包含住了预测检测的一部分)

Limitation

自己的一些想法

【论文阅读】DSDNet Deep Structured self-Driving Network的更多相关文章

  1. 【论文阅读】Deep Mixture of Diverse Experts for Large-Scale Visual Recognition

    导读: 本文为论文<Deep Mixture of Diverse Experts for Large-Scale Visual Recognition>的阅读总结.目的是做大规模图像分类 ...

  2. 【论文阅读】Deep Adversarial Subspace Clustering

    导读: 本文为CVPR2018论文<Deep Adversarial Subspace Clustering>的阅读总结.目的是做聚类,方法是DASC=DSC(Deep Subspace ...

  3. 【CV论文阅读】Deep Linear Discriminative Analysis, ICLR, 2016

    DeepLDA 并不是把LDA模型整合到了Deep Network,而是利用LDA来指导模型的训练.从实验结果来看,使用DeepLDA模型最后投影的特征也是很discriminative 的,但是很遗 ...

  4. 论文阅读:Relation Structure-Aware Heterogeneous Information Network Embedding

    Relation Structure-Aware Heterogeneous Information Network Embedding(RHINE) (AAAI 2019) 本文结构 (1) 解决问 ...

  5. 论文阅读 DynGEM: Deep Embedding Method for Dynamic Graphs

    2 DynGEM: Deep Embedding Method for Dynamic Graphs link:https://arxiv.org/abs/1805.11273v1 Abstract ...

  6. 【论文阅读】Deep Mutual Learning

    文章:Deep Mutual Learning 出自CVPR2017(18年最佳学生论文) 文章链接:https://arxiv.org/abs/1706.00384 代码链接:https://git ...

  7. 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection

    题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...

  8. 【论文阅读】Deep Clustering for Unsupervised Learning of Visual Features

    文章:Deep Clustering for Unsupervised Learning of Visual Features 作者:Mathilde Caron, Piotr Bojanowski, ...

  9. [论文阅读]VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION(VGGNet)

    VGGNet由牛津大学的视觉几何组(Visual Geometry Group)提出,是ILSVRC-2014中定位任务第一名和分类任务第二名.本文的主要贡献点就是使用小的卷积核(3x3)来增加网络的 ...

随机推荐

  1. 原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展

    原子层沉积(ALD)和化学气相沉积(CVD)微电子制造铜金属化的研究进展 Atomic Layer Deposition (ALD) and Chemical Vapor Deposition (CV ...

  2. 激光SLAM与视觉SLAM的特点

    激光SLAM与视觉SLAM的特点 目前,SLAM技术被广泛运用于机器人.无人机.无人驾驶.AR.VR等领域,依靠传感器可实现机器的自主定位.建图.路径规划等功能.由于传感器不同,SLAM的实现方式也有 ...

  3. 在 CUDA C/C++ kernel中使用内存

    在 CUDA C/C++ kernel中使用内存 如何在主机和设备之间高效地移动数据.本文将讨论如何有效地从内核中访问设备存储器,特别是 全局内存 . 在 CUDA 设备上有几种内存,每种内存的作用域 ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载

    在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...

  5. Java 面试题关于包装类

    这几个问题的知识点涉及的内容非常的刁钻,值得自己好好的理解. 问以下程序的输出结果是: 问题一: Object object=true ? new Integer(1):new Double(2.0) ...

  6. springMVC异常处理(自定义异常)HandlerExceptionResolver

    注:本篇的异常主要指的是controller.service和dao层中执行方法抛出的异常. 一.为什么要处理异常? 因为如果我们不处理异常,异常信息就会直接抛出给浏览器,于是浏览器页面就直接显示异常 ...

  7. pytest命令行参数

    1.-v:可以输出用例更加详细的执行信息,如下图 C:\Users\cale\checkapi\test_cc>pytest test_m1.py -v ==================== ...

  8. 【VBA】返回指定范围内的随机整数

    返回指定范围内的随机整数: Sub main() Randomize Debug.Print 随机整数(1, 2) End Sub Function 随机整数(a As Integer, b As I ...

  9. Reactive 理解 SpringBoot 响应式的核心-Reactor

    Reactive 理解 SpringBoot 响应式的核心-Reactor bestcoding 2020-02-23 17:26:43 一.前言 关于 响应式 Reactive,前面的两篇文章谈了不 ...

  10. Java IO学习笔记八:Netty入门

    作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...