Depth-VO-Feat

前言

近年来,许多学者将SLAM与深度学习结合起来,用深度学习处理SLAM中的一个子问题,比如前端的特征点或描述子提取,帧间估计,处理光照、季节变化等给场景识别/回环检测带来的影响,语义SLAM,动态场景等,甚至还有end-to-end的方案,直接输出里程计结果。
论文:Unsupervised Learning of Monocular Depth Estimation and Visual Odometry with Deep Feature Reconstruction
Github:https://github.com/Huangying-Zhan/Depth-VO-Feat
这篇论文提出了一种无监督学习框架,使用双目数据进行训练,用于单目深度估计和视觉里程计。
这里的里程计仅仅是两帧之间(two-frame),还不能与state-of-the-art SLAM系统相媲美。
训练实例示例:


在这里插入图片描述

要求

此代码使用 Caffe 在 Python 2.7,CUDA 8.0 和 Ubuntu 14.04 上进行了测试。
Caffe:将./caffe中所需的 layers 添加到您自己的 Caffe 中。记住在 Caffe 配置中启用Python Layers
大多数需要的模型,训练的模型和结果都可以从这里下载。以下说明还包括项目的特定链接。

下载数据集和模型

该项目中使用的主要数据集是KITTI Driving Dataset。请按照./data/README.md中的说明准备所需的数据集。
对于我们训练的模型和预先要求(pre-requested)的模型,请访问此处下载模型并将模型放入目录./models

深度

本部分介绍了立体对单视深度估计网络的训练。光度损失(Photometric Loss)用作主要监督信号。在该实验中仅使用立体对(stereo pairs:双目?)。
1.在./experiments/depth/train.sh中更新$YOUR_CAFFE_DIR
2.运行bash ./expriments/depth/train.sh
训练的模型保存在./snapshots/depth

深度和里程计

在这一部分中,介绍了深度估计网络和视觉里程计网络的联合训练。空间对和时间对的光度损失用作主要监督信号。在该实验中使用空间(双目)对和时间对(即双目序列)。
为了便于训练,在深度实验中训练的模型用作初始化。
1.在./experiments/depth odometry / train.sh中更新$YOUR CAFFE_DIR
2.运行bash ./experiments/depth_odometry/train.sh
训练的模型保存在./snapshots/depth_odometry中。

深度特征重建损失(Feature Reconstruction Loss for Depth)

本部分介绍了立体对单视深度估计网络的训练。光度损失和特征重建损失都用作主要监督信号。在该实验中仅使用立体对。我们为此实验尝试了几个功能。目前,只有使用KITTI Feat的例子在这里显示。稍后将更新使用其他功能的更多详细信息。
为了便于训练,在深度实验中训练的模型用作初始化。
1.在./experiments/depth_feature/train.sh中更新$YOUR_CAFFE_DIR
2.运行bash ./expriments/depth_feature/train.sh
训练的模型保存在./snapshots/depth_feature中。

深度,里程计和特征

在这一部分中,我们展示了包括特征重建损失的训练。在该实验中使用立体序列。
利用Weerasekera等人提出的特征提取器,可以使用我们提出的深度特征重建损失来微调训练的深度模型和/或里程计模型。
1.在./experiments/depth_odometry_feature/train.sh中更新$YOUR_CAFFE_DIR
2.运行bash ./expriments/depth_odometry_feature/train.sh
**注意:**下载Weerasekera et.al中提出的特征提取器的链接即将发布。

结果评估

请注意,此处提供的评估脚本使用不同的图像插值来调整输入图像的大小(即python的插值 v.s. Caffe的插值),因此定量结果可能与发布的结果略有不同。

深度估计

在Eigen Split中使用测试集(来自28个场景的697个图像 - 深度对)是评估深度估计结果的常用协议。
我们基本上使用monodepth提供的评估脚本来评估深度估计结果。
为了运行评估,需要npy文件来存储预测的深度。然后运行脚本来评估性能。
1.在./tools/evaluation_tools.py中更新caffe_root
2.生成深度预测并将其保存在npy文件中。

 python ./tools/evaluation_tools.py --func generate_depth_npy --dataset kitti_eigen --depth_net_def ./experiments/networks/depth_deploy.prototxt --model models/trained_models/eigen_split/Baseline.caffemodel --npy_dir ./result/depth/inv_depths_baseline.npy

3.评估预测

python ./tools/eval_depth.py --split eigen --predicted_inv_depth_path ./result/depth/inv_depths_baseline.npy --gt_path data/kitti_raw_data/ --min_depth 1  --max_depth 50 --garg_crop

我们发布了一些结果(逆深度),可以从这里下载

视觉里程计

KITTI Odometry基准包含22个立体序列,其中11个序列具有真实值。11个序列用于视觉里程计的评估或训练。
1.在./tools/evaluation_tools.py中更新caffe_root
2.要生成里程计预测(相对摄像机运动),请运行以下脚本。

python ./tools/evaluation_tools.py --func generate_odom_result --model models/trained_models/odometry_split/Temporal.caffemodel --odom_net_def ./experiments/networks/odometry_deploy.prototxt --odom_result_dir ./result/odom_result

3.在得到里程计预测之后,我们可以通过与真实位姿进行比较来评估性能。

python ./tools/evaluation_tools.py --func eval_odom --odom_result_dir ./result/odom_result

我们的里程计结果已发布,可从此处下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值