DTAM 中的 Cost Volume 笔记

DTAM 是比较经典的基于 RGBD 的 SLAM 算法,其中的 Cost Volume 部分也是后续比较常见的模块,这里进行一下记录。 1 定义说明 定义 表示从相机坐标系 到世界坐标系 的变换矩阵: 其中 表示旋转矩阵, 表示平移向量。 则对于空间中一个点具有如下变换关系: 以及投影操作: 反投影操作: 其中 表示像素 对应的逆深度。 则 2D...

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 pythonimport tensorflow as...

Python 常见问题总结

1 错误:No module named '_tkinter' 如果在使用类似 matplotlib 库时遇到如下错误: import tkinter File "/usr/local/lib/python3.6/tkinter/__init__.py", line 36, in <module> import _tkinter #...

Ubuntu Linux 常见问题总结

系统环境 Ubuntu 16.04 问题1:dpkg: error processing package libpaper-utils 在执行 apt-get 安装包时可能遇到如下问题: dpkg: error processing package libpaper-utils (--configure): dependency problems - leaving unconfigured Processing triggers for libc-bin (2.23-0ubuntu10) ... Errors were encountered...

Tensorflow C++ 从训练到部署(1):环境搭建

很多人使用 Tensorflow 作为自己深度学习的实验工具,然而它只能用 Python 来训练和预测,对于实际生产而言,我们更多地会用 C++ 来放入自己工程中。例如一个典型的流程如下:1)在训练环节,我们仍然希望使用 Python 接口 2)在预测环节,我们使用 C++ 接口获取结果 这几篇博客我们就尝试按照上面的方式,完成从环境搭建、训练到部署的一整套流程。 0、系统环境 Ubuntu 16.04 Tensorflow 1.10.1 ProtoBuf 3.6.1 1、安装依赖 1)安装 JDK 8 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 或者到我的网盘下载: [Ubuntu] https://pan.baidu.com/s/1B2wpEVVqtP6JwBfEvEQsnw [Mac] https://pan.baidu.com/s/15zxVi7uJDmnJk6gQfov1Cw 2)安装依赖库: 使用如下命令: Shell sudo apt-get install pkg-config zip g++ zlib1g-dev unzip...

Semantic SLAM 文章收集

截至目前 Semantic SLAM (注意不是 Semantic Mapping)工作还比较初步,可能很多思路还没有打开,但可以预见未来几年工作会越来越多。语义 SLAM 的难点在于怎样设计误差函数,将 Deep Learning 的检测或者分割结果作为一个观测,融入 SLAM 的优化问题中一起联合优化,同时还要尽可能做到至少 GPU 实时。 这一篇博客我将尽力收集一些有代表性的文章,提供下载和简单思路的理解,但个人精力、能力有限也欢迎大家随时提供更多更好的文章。 1、《Probabilistic Data Association for Semantic SLAM》 ICRA 2017语义 SLAM 中的概率数据融合,感觉应该算开山鼻祖的一篇了。这篇也获得了 ICRA...

阿里云 MySQL 频繁挂掉的解决方法

阿里云如果使用低配的服务器,随着访问量增大,上面的 MySQL 经常被系统停掉。除了升级内存硬盘等系统资源外,还可以使用如下方法尝试解决下: 1、降低数据库 InnoDB 引擎的缓冲区大小 找到 MySQL 的配置文件,一般在 /etc/mysql/my.cnf 或者 /etc/my.cnf 这种位置。编辑配置文件,修改或添加下列行: Shell innodb_buffer_pool_size = 64M 1 innodb_buffer_pool_size = 64M 2、添加 SWAP 分区 阿里云服务器默认不带 SWAP 分区,我们可以自己创建。请在 Shell 中依次执行以下命令: Shell dd if=/dev/zero of=/swapfile bs=1M...

欧拉积分、中点积分与龙格-库塔积分

在 SLAM 系统中经常用到各种不同的数值积分方法,工程上最常见的有三种:欧拉积分(Euler method)、中点积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下: 一、欧拉积分 设有如下微分方程: 并且 和 时刻的差为 ,则欧拉积分定义为: 也就是说用 t 时刻的斜率作为整个 时刻的导数。 二、中点积分 设有如下微分方程: 并且 和 时刻的差为 ,则显式中点积分定义为: 则隐式中点积分定义为: 也就是说用 时刻的斜率作为整个 时刻的导数。 欧拉积分与中点积分都是一阶近似并没有本质不同,二者只是一阶导数所取位置不同,他们的性能也有差别,如下图所示,作为一阶积分近似方法来讲,中点积分有时会稍好一些(带来更快的收敛速度)。图示为方程 ...

[C++11] C++11 中的回调

之前写 Java 和 OC 非常羡慕其中的回调机制,之前的博客也介绍了一个使用 fast delegate 回调的 C++ 机制(参见:[C++] 简单高效的 delegate 方法)。现在 C++11 已经普及了,也同样支持了回调,虽然比高阶的语言 Java 和 OC 之类还稍显繁琐,但是基本功能已经都有了,这里简单说明如下。 1、回调基本函数 在 C++11 中使用 std::function 定义回调函数和参数类型,使用 std::bind 绑定回调函数。示例如下: C++ #include...

GLog & GFlags 的安装

0、系统环境 Ubuntu 16.04 GCC 5.4 1、安装步骤 1)安装 GFlags 运行如下指令: Shell git clone https://github.com/gflags/gflags.git cd gflags mkdir build && cd build cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC .. make -j4 sudo make install 123456 git clone https://github.com/gflags/gflags.gitcd gflagsmkdir build && cd buildcmake...