| by msbeta | No comments

Python可视化二维高斯分布

Social LSTM论文中有一张展示行人运动轨迹概率分布的效果图,今天抽空研究下如何用Python可视化二维高斯分布(Gauss Distribution)。

可视化二维高斯分布(Gauss Distribution)本质上是以2D方式展示3D数据(第三维是概率密度),Python中四个matplotlib函数(plt.contour()、plt.contourf()、plt.imshow()、plt.pcolormesh())可以帮助我们完成这一目标。

1. 简单的示例

先引入必要的python依赖文件。

1.1 目标函数

目标函数将平面坐标(x,y)[……]

继续阅读

Read More
| by msbeta | No comments

RNN预测行人运动轨迹

最近在研究论文-Social LSTM: Human Trajectory Prediction in Crowded Spaces, 先从最基本的RNN模型入手看看效果。

本文代码已经上传到Github:
https://github.com/YoungTimes/GNN/blob/master/Social-LSTM/train.py

行人轨迹数据集

数据集来源自[1],每个数据目录包含一个pixel_pos.csv文件,它的文件格式如下:

pixel_pose.csv包含4行,它的列数是所有行人轨迹点的数量。

第一行是所有的Frame Number;

第二[……]

继续阅读

Read More
| by msbeta | No comments

Ubuntu重启Nvidia显卡失效

最近重装系统的频率明显升高…

开机关机之后,Ubuntu系统的界面变的异常卡顿,根据上次的经验,应该是显卡驱动又出问题了…

输入:

nvidia-smi

输出:

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

多次重装Nvidia驱动->重启,依然无法解决。这次不想再重装系统,在网上找到如下解决方案:

1.[……]

继续阅读

Read More
| by msbeta | No comments

动图详解LSTM和GRU

问题:短期记忆

反向传播(Back Propagation)是一种与最优化方法(比如梯度下降方法)结合、用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度,然后将梯度反馈给最优化方法,用来更新网络权重以最小化损失函数。

在神经网络中一个典型的问题就是梯度消失(Gradient Vanishing)的问题,其原因在于是随着神经网络层数的加深,梯度逐渐减小甚至接近0,当梯度变的非常小的时候,就不能为学习提供足够的信息。

Recurrent Neural Networks(递归神经网络,RNN)也存在梯度消失的问题,当输入的序列足够长时,RNN前期的层通常[……]

继续阅读

Read More
| by msbeta | No comments

图神经网络实战-图注意力网络Tensorflow 2.0实现

本文完整代码和数据已经上传到Github.

https://github.com/YoungTimes/GNN/tree/master/GAT

1. GCN的另一个缺陷

GraphSAGE通过采样邻居的策略解决了GCN只能采用Full Patch训练的问题。在GAT中指出了GCN的另外两个缺点:

1) 无法为不同的Neighbor节点指定不同的权重,也就说GCN对于同阶邻域上的不同邻居分配的权重是完全相同的,这限制了GCN模型对于空间信息相关系的捕捉能力;

2) GCN聚合临近节点特征的方式与图(Graph)的结构密切相关,这限制了训练所得模型在其它图(Graph)结构上[……]

继续阅读

Read More
| by msbeta | No comments

自动驾驶运动规划-Reeds Shepp曲线

相比于Dubins Car只允许车辆向前运动,Reeds Shepp Car既允许车辆向前运动,也允许车辆向后运动。

1、车辆模型

车辆运动模型仍然采用Simple Car Model,但增加对车辆运动方向的描述,运动方程如下:

$\dot{x} = u_1 cos{\theta}$

$\dot{y} = u_1 sin{\theta}$

$\dot{\theta} = u_1 u_2$

其中,$u_1 \in \{-1, 1\}$,$u_2 \in [-tan \phi_{max}, tan \phi_{max}]$。当$u_1 = 1$时,表示车辆向[……]

继续阅读

Read More
| by msbeta | No comments

自动驾驶运动预测(Motion Prediction)

运动预测(Motion Prediction)模块主要解决自动驾驶车辆与周围环境中的其它运动物体(车辆、行人等)的协同交互问题。该模块对感知模块所检测到的运动物体进行未来一段时间内行为意图的预测,并将预测的结果转化为时间维度和空间维度的轨迹。以这些障碍车、行人、非机动车等运动物体的预测轨迹作为输入,自动驾驶车辆可以做出更加合理的驾驶决策,规划出更加合理、安全的车辆运动行为。

比如如果我们预测到其它车辆要并入到我们的车道,那我们就需要提前考虑减速,预测的准确性越高,决策就越准确,无人驾驶的可靠性也就越高。

由于道路上运动物体的行为是复杂多变、彼此相互影响的,这就要求预测模块能够提[……]

继续阅读

Read More
| by msbeta | No comments

自动驾驶运动规划-Dubins曲线

直观的了解下Dubins曲线,一个理想条件下,不挂倒挡一把实现移车入库的老司机。

1、Simple Car模型

如下图所示,Simple Car模型是一个表达车辆运动的简易模型。Simple Car模型将车辆看做平面上的刚体运动,刚体的原点位于车辆后轮的中心;x轴沿着车辆主轴方向,与车辆运动方向相同;车辆在任意一个时刻的姿态可以表述为(x, y, $\theta$)。车辆的运动速度为s;方向盘的转角为$\phi$,它与前轮的转角相同;前轮和后轮中心的距离为L;如果方向角的转角固定,车辆会在原地转圈,转圈的半径为$\rho$。

在一个很短的时间$\Delta t$内,可[……]

继续阅读

Read More
| by msbeta | No comments

自动驾驶路径规划-双向Dijkstra算法

经典的Dijkstra算法是一种Graph Based的单源最短路径规划算法,可以解决带权重有向图的最短路径规划问题。双向Dijkstra算法是对经典Dijkstra算法的一种优化方法,其主要思想就是从起点和终点同时开始搜索,从而达到提升算法执行效率的效果。实际效果表明,在大部分情况下,双向Dijkstra算法均优于经典的Dijkstra算法。

先直观的感受一下,Dijkstra算法和双向Dijkstra算法的区别。

1、双向Dijstra算法思想

双向Dijstra算法的思想是:

1) 分别从路径搜索的起点s和路径搜索的终点t同时执行前向的Dijkstra算法和后[……]

继续阅读

Read More
| by msbeta | No comments

自动驾驶路径规划-Dijkstra算法

自动驾驶路径规划-Graph-Based的BFS最短路径规划》中提到我们可以将地图抽象为Graph的数据结构,然后利用Graph的广度优先遍历算法(Breadth-First Search, BFS)解决无权重的High-Level的地图级别的规划。但是实际应用场景中,地图中各个路径所代表的Graph的边的权重都是不同的,比如距离长的Edge权重就应该比较低;交通拥堵的Edge权重就应该低等等。对于有权重的Graph如何进行最短路径规划呢,Dijkstra算法可以解决这个问题。

1、什么是Dijkstra算法

Dijkstra算法是一种有权图(Graph)的单源最短路径求解算[……]

继续阅读

Read More