前段时间偶然在github上发现了一个前端和深度学习相结合用来进行特征点提取和描述子计算的开源slam框架,想作为课题的一部分研究,结果,没想到研究之前的过程会如此曲折,今天刚刚编译成功,感觉真的是:我太难了。。。
好了言归正传,开始讲一下编译过程中出现的一些问题:
问题1、首先讲一下我的电脑配置:
ubuntu 16.04
gcc 5.4.0
g++ 5.4.0
cmake 3.11.3
pytorch 1.0.1(根据原github上给的方法下载)
cuda 10.0
cudnn:7.6.5
然后,说一下问题出现的缘由,由于原本的按照
git clone --recursive -b v1.0.1 https://github.com/pytorch/pytorch
指令下载pytorch发现速度实在太慢,而且有几次发现下载的third_party目录下的一些文件夹是空的,可能是网络不稳定,非常麻烦(这里注意,git clone 这行指令一个字都不要省略,说起来都是泪!!),所以我觉得既然是pytorch,那个版本都一样,而且作者也说了支持高版本的,所以我就从官网上下载文件来安装,安装的也不是1.0.1,安装完在python中可以import,然而运行build.sh每次到100%之后就会出现:
../lib/libORB_SLAM2.so: undefined reference to pangolin::Split(std::string const&, char)'
../lib/libORB_SLAM2.so: undefined reference to pangolin::BindToContext(std::string)' ../lib
/libORB_SLAM2.so: undefined reference to DBoW2::FORB::toString(cv::Mat const&)' ../lib
/libORB_SLAM2.so: undefined reference to pangolin::CreateWindowAndBind(std::string, int, int, pangolin::Params const&)' ../lib/libORB_SLAM2.so: undefined reference to
DBoW2::FORB::fromString(cv::Mat&, std::string const&)' ../lib/libORB_SLAM2.so: undefined
reference to pangolin::CreatePanel(std::string const&)'
都是一些未定义的引用,为了解决这个问题,我在google上搜了很久,发现了一些类似的问题,然而都没有解决:
https://github.com/jiexiong2016/GCNv2_SLAM/issues/26
https://github.com/jiexiong2016/GCNv2_SLAM/issues/2
我自己还提了一个问题,然而并没有人回答,还是自己解决的(万事还得靠自己啊):
https://github.com/jiexiong2016/GCNv2_SLAM/issues/38
csdn上也有人有类似的问题:
https://blog.csdn.net/amazingren/article/details/82357179
他的方法也不适用,于是我各种重装,重装cuda,重装cudnn,重装cmake,等等,全都不行,各种问题,最后还是老老实实:
git clone --recursive -b v1.0.1 https://github.com/pytorch/pytorch
这里一定要注意,必须是1.0.1,其他的可能会出现一些莫名其妙的问题,为了保险,就执行这个命令下载。当然首先先得把之前别的版本的pytorch卸载。另外注意别轻易卸载cmake,会影响ros。
这里推荐一个可以提高一些下载速度的方法:参照我的博客 。
但是这个只能提升一些速度,因为源码中third_party是引用别人的,所以这块下载的很慢。
此外,安装pytorch不需要完全安装,不需要执行setup.py,只需要
python ../tools/build_libtorch.py
执行成功之后在pytorch/torch/lib/tmp_install/lib/目录下会有libtorch.so,那就可以了
问题2:执行build.sh的时候,返回错误
Could not find a package configuration file provided by "Torch" with any of
the following names:
TorchConfig.cmake
torch-config.cmake
原因也是因为 作者的表述有问题,虽然生成的libtorch在pytorch/torch/lib/tmp_install/lib/下,但是使用的时候我们需要他的cmake文件,这个地址不同版本的也不一样,1.0.1在pytorch/torch/lib/tmp_install/share/cmake/Torch下,所以将build.sh内容修改为:
-DTORCH_PATH=/home/***/pytorch/torch/lib/tmp_install/share/cmake/Torch
再次编译,应该就没问题了。
其实过程中还遇到许多别的问题,当时也忘记了记录下来,但是这两个是比较关键的,希望对大家有帮助,因为网上真找不到这个问题的解决方法,如果还在编译GCNV2过程中遇到了别的问题,欢迎给我留言。(如果我遇到过的话,,,)
2019.3.9更新
最近因为一些原因重装了pytorch,下载的真是叫一个慢啊,在此为了方便大家,特地上传pytorch1.0.1源码,方便大家下载:
云盘链接 提取码:1xq6