DeepVO项目实践-基于ChiWeiHsiao/DeepVO-pytorch版本

一、项目介绍

传统的VO方法pipeline一般需要包括:特征提取,特征匹配,运动估计,局部优化等模块。尽管其中一些方法已经展现了优越的性能,但通常仍需要精心设计和专门进行微调才能适应不同的任务和环境需求。同时单目视觉里程计缺失尺度信息,往往需要一些先验知识来恢复绝对尺度估计。

针对传统的方法的不足,DeepVO方法使用深度递归卷积神经网络(RCNNG),提出了一种新颖的端到端单目VO的框架。由于它是以端到端的方式进行训练和配置的,因此它可以直接从一系列原始的RGB图像(视频)中计算得到姿态,而无需采用任何传统VO框架中的模块。

DeepVO方法应该是第一个采用LSTM方法来实现视觉里程计的方法,具有里程碑的意义。

由于作者没有开源,感谢很多大佬复现了他的方法,如ChiWeiHsiao复现了DeepVO方法,github上取名为:DeepVO-pytorch

非常感谢原文作者和ChiWeiHsiao对VO做出的贡献。

本文基于ChiWeiHsiao/DeepVO-pytorch版本项目部署,进行简单的介绍。

DeepVO方法pipeline详细分析如下图所示:

 二、项目下载

下载地址:https://github.com/ChiWeiHsiao/DeepVO-pytorch

下载命令:

git clone GitHub - ChiWeiHsiao/DeepVO-pytorch: PyTorch Implementation of DeepVO

我的项目名称修改为:DeepVO

三、项目配置

1、下载KITTI数据集和预训练模型

(1)自动下载数据集(网速块)

运行KITTI/downloader.sh自动下载数据集和预训练模型(网速快)

注意:请使用bash命令运行,sh命令出现“downloader.sh: 3: Syntax error: "(" unexpected”错误)

bash KITTI/downloader.sh

(2)手动下载数据集(网速慢)

注意:服务器如果没有配置VPN,下载KITTI数据非常慢,可以自己先通过其他渠道下载,再上传至KITTI目录(注意文件夹的命名

如:将文件夹2011_10_03_drive_0027下的image_03中的所有RGB图像放置在文件夹00中。

文件夹

名称

文件名下载地址备注
002011_10_03_drive_0027https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_10_03_drive_0027/2011_10_03_drive_0027_sync.zip训练集
012011_10_03_drive_0034https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_10_03_drive_0034/2011_10_03_drive_0034_sync.zip训练集
022011_10_03_drive_0042https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_10_03_drive_0042/2011_10_03_drive_0042_sync.zip训练集
032011_09_26_drive_0067https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_26_drive_0067/2011_09_26_drive_0067_sync.zip训练集
042011_09_30_drive_0016https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0016/2011_09_30_drive_0016_sync.zip测试集
052011_09_30_drive_0018https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0018/2011_09_30_drive_0018_sync.zip测试集
062011_09_30_drive_0020https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0020/2011_09_30_drive_0020_sync.zip训练集
072011_09_30_drive_0027https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0027/2011_09_30_drive_0027_sync.zip测试集
082011_09_30_drive_0028https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0027/2011_09_30_drive_0027_sync.zip训练集
092011_09_30_drive_0033https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0033/2011_09_30_drive_0033_sync.zip测试集
102011_09_30_drive_0034https://s3.eu-central-1.amazonaws.com/avg-kitti/raw_data/2011_09_30_drive_0034/2011_09_30_drive_0034_sync.zip训练集

DeepVO预训练模型下载:

https://drive.google.com/file/d/1l0s3rYWgN8bL0Fyofee8IhN-0knxJF22/view

放在./models文件夹下。

文件名为:

t000102050809_v04060710_im184x608_s5x7_b8_rnn1000_optAdagrad_lr0.0005.model.train

(3)下载ground truth pose

从 KITTI Visual Odometry下载ground truth pose

下载地址:

存放在:./KITTI/pose_GT/文件夹下。

2、运行preprocess.py

根据KITTI devkit中的readme文件删除未使用的图像;

将KITTI的绝对姿态(12个浮点数 [R|t])转换为6个浮点数(欧拉角 + 平移);

并将转换后的绝对姿态保存为.npy文件

3、下载预训练模型FlowNet ( CNN part ) 

下载地址:

https://drive.google.com/drive/folders/16eo3p9dO_vmssxRoZCmWkTpNjKRzJzn5

随便下载哪个都可以。

下载之后放在./pretrained目录下

4、指定路径和超参数

在文件paras.py中指定数据集的路径和超参数

模型训练和验证时需要的所有参数全部在这里设置(这个工程思想很好,避免在脚本文件中带上非常多的参数)。

如果您的计算资源有限,请注意以下参数:

batch_size:根据您的GPU内存选择批处理大小

img_w、img_h:将图像降采样以适应GPU内存

pin_mem:加速GPU和内存之间的数据交换,如果您的RAM不够大,请将其设置为False。

5、训练模型

运行main.py训练模型

训练的模型和优化的参数保存在:models目录下;

记录存放在:records目录中。

6、评估模型

运行test.py预测位姿

输出在:result目录中;

文件名类似于:out_00.txt等。

7、可视化

运行visualize.py,可视化预测的位姿

8、其他文件

model.py:模型在这里调优

data_helper.py:定制PyTorch dataset and sampler

三、测试结果

使用预训练模型,对01、04、05、10四个序列进行测试,测试结果如下。

参考文献:

[1] 1709.08429.pdf (arxiv.org)

[2] GitHub - ChiWeiHsiao/DeepVO-pytorch: PyTorch Implementation of DeepVO

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
DeepVO是一种基于人工智能的视觉里程计模型,它能够根据图像序列准确地估计相机的运动轨迹。视觉里程计是指通过计算相邻图像之间的相对位移,从而推测出相机或者车辆的运动轨迹。传统的视觉里程计方法通常需要进行特征提取、匹配和三角化等步骤,而DeepVO则使用了深度学习算法,可以直接从图像中直接学习运动模式,无需显式地提取特征。DeepVO主要由两个模块组成:视觉前端和运动估计网络。 首先,视觉前端处理图像数据,它将输入的连续图像序列转换成特征序列,这些特征可以在后续的运动估计网络中使用。视觉前端采用了卷积神经网络(CNN)结构,通过多个卷积和池化层提取图像的空间特征。这些特征具有很强的判别性,有助于准确估计相机的运动。 然后,在运动估计网络中,利用长短期记忆网络(LSTM)进行运动估计。LSTM可以有效地捕捉图像序列的时序信息,有助于提高视觉里程计的准确性。运动估计网络的输入是经过视觉前端处理的图像特征序列,通过多层LSTM网络进行运动估计,并输出相机的位置和姿态。 DeepVO的训练使用了监督学习的方法,通过将真实的相机轨迹作为标签数据来训练网络模型。在训练过程中,DeepVO通过最小化真实轨迹和预测轨迹之间的差异来优化网络参数。经过大量的训练,DeepVO可以准确地估计相机的运动,并在实际应用中具有较好的性能。 总之,DeepVO是一种利用深度学习算法进行视觉里程计的方法。它通过视觉前端和运动估计网络结合,能够有效地从图像序列中学习相机的运动模式,具有较高的精度和鲁棒性。它在自动驾驶、机器人导航等领域具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值