论文笔记:Dynamic Graph CNN for Learning on Point Clouds

DGCNN 是对 PointNet 的改进,PointNet 网络每个点单独提取特征缺乏局部关联。DGCNN 提出了 EdgeConv 就是对它的改进。 1 网络结构 DGCNN 网络结构如下图所示,可以看出其整体架构和 PointNet 是基本一致的,主要区别就是将其中的 MLP 替换成了 EdgeConv。 2 EdgeConv 2.1 EdgeConv 结构 上图是 EdgeConv 的示意图。假设一个F维点云 其中 F 表示每个点的维度,最简单的可能是 x,...

论文笔记:GCNv2: Efficient Correspondence Prediction for Real-Time SLAM

GCNv2 是一个专门针对几何匹配的描述子网络,是对 GCN 的改进版主要工作如下:1)与常见深度学习特征匹配的性能并且显著减少了前向运算的时间;2)加入了二值化层,生成二值特征。 1 GCNv2 网络结构 GCNv2 网络结构如下图所示: 这一结构不必赘述,其实跟 SuperPoint 很像,不过 Descriptors 部分是把 Keypoints 直接拿来取了相应的部分。PixelShuffle (有人也叫作 Sub-pixel Convolution 或者亚像素卷积)在文章(《Real-Time Single Image and Video Super-Resolution Using an Efficient...

EM估计(Expectation Maximization Algorithm)

这篇文章实际上是Ng在CS229上一个课程讲座。因为EM估计也很常用,特别是语义SLAM里面,这里根据一些粗浅的理解做一个总结备忘。 EM算法1是分为E(期望)和M(极大)的两步迭代优化算法,主要用于解决数据缺失情况下的概率估计问题。这个数据缺失其实不太好理解,有一个男女生身高的经典例子比较形象2,可以从ML到EM估计分别理解下。 1、极大似然估计(ML) 我们需要调查我们学校的男生和女生的身高分布。 假设你在校园里随便找了100个男生和100个女生。他们共200个人。将他们按照性别划分为两组,然后先统计抽样得到的100个男生的身高。假设他们的身高是服从正态分布的。但是这个分布的均值 和方差 我们不知道,这两个参数就是我们要估计的。记作 。 这是一个典型的极大似然估计问题,我们知道100个男生,100个女生和他们的身高,我们想要估计男生的身高分布均值方差,女生的身高分布均值方差,都可以用极大似然估计来解决。 我们已知的有两个:样本服从的分布模型、随机抽取的样本;我们未知的有一个:模型的参数。根据已知条件,通过极大似然估计,求出未知参数。总的来说:极大似然估计就是用来估计模型参数的统计学方法。 因为我们知道哪个样本是男生哪个样本是女生,所以这一问题就分解成分别估计男生和女生的即可。那么以男生为例,设样本集 ,其中 ,概率密度函数 ,首先写出似然函数也就是所有男生概率的乘积: 通常转为求解对数似然函数: 极大似然估计就是求似然函数最大值(或者对数似然函数最小值): 这个极值自然就是通过求导得到: 特别的,对于正态分布样本 ,其似然函数为: 对数为: 求导得方程组: 则似然方程的唯一解为: 这个就是它的最大值点。也就是通过极大似然估计给出的符合当前样本的参数估计。 2、Jensen不等式 对于一个凸函数 (凸函数的定义为:对于X为实变量,,对于X为向量,),其中X是随机变量则有如下不等式成立: 其中等号成立的条件当且仅当,也就是随机变量为一个常数c:。 Jensen不等式直观理解可以参见下图: 图中,实线f是凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。(就像掷硬币一样)。X的期望值就是a和b的中值了,图中可以看到 成立。 对于f是凹函数的情况,则正相反:。 3、最大期望估计(EM) 对比极大似然估计,EM估计理解起来非常简单,例如对于上述男女生的例子,我们现在有200个男女生的样本,但是我们不知道哪个样本属于男生哪个样本属于女生(信息缺失)。 3.1 EM估计公式推导 样本集 ,包含 m 个独立的样本;每个样本 对应的类别  是未知的(即上文中每个样本属于哪个分布是未知的);我们需要估计概率模型 的参数...

论文笔记:NetVLAD: CNN architecture for weakly supervised place recognition

NetVLAD1是一个较早的使用 CNN 来进行图像检索或者视频检索的工作,后续在此工作的基础上陆续出了很多例如 NetRVLAD、NetFV、NetDBoW 等等的论文,思想都是大同小异。 一、图像检索 VLAD 和 BoW、Fisher Vector 等都是图像检索领域的经典方法,这里仅简介下图像检索和 VLAD 的基本思想。 图像检索(实例搜索)是这样的一个经典问题: 1、我们有一个图像数据库 通过函数可以得到每一个图像的特征 ; 2、我们有一个待查询图像 通过函数得到它的特征 ; 3、则我们获得的欧氏距离 应该满足越相近的图像 越小。 二、VLAD (Vector of Locally Aggregated Descriptors) 而 VLAD...

Tensorflow C API 从训练到部署:使用 C API 进行预测和部署

前述博文 Tensorflow C++ 从训练到部署(2):简单图的保存、读取与 CMake 编译 和 Tensorflow C++ 从训练到部署(3):使用 Keras 训练和部署 CNN 使用 Tensorflow/Keras 的 Python API 进行训练,并使用 C++ API 进行了预测。由于 C++ API 需要编译...

[TX2] Tensorflow 1.12.0 在 Jetson TX2 上的编译

系统环境 Ubuntu 16.04 Jetpack 3.2.1 on TX2 [Link](with CUDA 9.0 cuDNN 7.0.5) 1、编译准备 1)配置环境 Shell export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH 1 export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH 2)安装依赖 Java Shell sudo apt-get install openjdk-8-jdk 1 sudo apt-get install openjdk-8-jdk Bazel (Tensorflow 使用 Bazel 0.15 编译,因此这里下载 0.15.2 版本,详情参见这里) Shell cd...

Deep Local Feature 文章 & 数据收集

在 SLAM 中 Local Feature 的提取和匹配是一个比较重要的内容,近些年有很多相关的使用 Deep Learning 学习局部描述子的工作,这里做一下相关文章和代码收集。后续如有精力会进行速度和性能比较。 文章收集 数据收集...

Tensorflow C++ 从训练到部署(3):使用 Keras 训练和部署 CNN

在上一篇文章中我们并没有去训练一个真正的网络和解决一个实际问题,我们所做的是构建了一个 c = a * b 的计算图,并用 python 进行了保存和 c++ 进行了读取,这一保存和读取中也仅包含图的结构并没有相关参数。本篇文章中我们进一步以 Tensorflow 官方的 Fashion MNIST 为例,完成一个简单的分类问题。本文前面 Keras 训练模型以及转化到 Tensorflow 格式部分与之前一篇博客(Keras 转换成 Tensorflow 模型格式并使用)基本一致。本文主要包含: 1)Python:Fashion MNIST 数据集 2)Python:使用...

Keras 转换成 Tensorflow 模型格式并使用

Tensorflow 官方已经集成了 Keras 作为自己推荐的 High-Level API,Keras 的确使用非常方便,而且代码美观简洁,不像 Tensorflow 那样有很多形式化的代码。对于我们进行快速原型和实验是非常有帮助的。然而在一些场合我们可能需要混合使用 Keras 和 Tensorflow 定义模型或者保存模型的操作,这时就需要一些转换了。 系统环境 Ubuntu 16.04 Tensorflow 1.10.1 (内置:Keras 2.1.6-tf) 1、Fashion MNIST 数据集 1)数据简介 Fashion-MNIST [1] 是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面图片。Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码 [11]。 典型的 Fashion-MNITST 数据是这样的,其中每三行表示一个类别: Fashion-MNIST...

Tensorflow C++ 从训练到部署(2):简单图的保存、读取与 CMake 编译

经过了 上一篇文章,我们已经成功编译了 tensorflow c++ 的系统库文件并且安装到系统目录下了。这里我们将使用这个编译好的库进行基本的 C++ 模型加载执行等操作。 注意,在本篇文章会使用 Tensorflow 的 Python API,因为比较简单,这里不做介绍,安装详见官网教程: https://www.tensorflow.org/install/ 0、系统环境 Ubuntu 16.04 Tensorflow 1.10.1 (安装详见官网,建议使用 pip 方式安装) 1、一个简单网络的保存 只有 c = a * b 的网络: Python #!/usr/bin/env python import tensorflow as...