文章目录
FFB6D搭建环境
本文为cvpr21-FFB6D: A Full Flow Bidirectional Fusion Network for 6D Pose Estimation的环境搭建教程,使用的服务器版本为Ubuntu16.04,Python版本为3.6,使用linemod数据集为例
本文顺序安装源码网站需要的环境依次安装,需要搭建的环境为apex,normal speed,RandLA
搭建前的准备(根据需要选择性浏览)
- 使用anaconda创建虚拟环境
conda create -n ffb6d python=3.6 conda activate ffb6d
- 安装requirements.txt中的所需环境
requirements.txt中需要进行一些修改,yaml改为pyyaml,pytorch和torchvision版本根据显卡和cuda版本合理选择,源码需要使用cuda10.1或10.2。在最后加上以下库pip install -r requirements.txt
tqdm, tensorboardX,pandas,scikit-learn,termcolor,删除pprint(Python中自带) - 使用源码安装cuda
此处可参考教程,如何在服务器上安装多个版本的cuda
安装apex
直接pip安装即可
pip install apex
安装normal speed
打开normal speed的github网站,发现需要三个依赖库:opecv3,numpy,pybind11,numpy在requirements.txt中以安装,opencv3需要使用源码安装(使用pip安装在后续搭建环境会报错)
安装opencv3
安装opencv3需要一些依赖项,如果都安装的话按照下面步骤应该不会出错,如果出错应该是依赖项的问题,这个请自行百度并让服务器管理员安装(安装依赖项需要sudo权限)
本文以opencv3.4.15为例进行安装,首先进入官网下载opencv3.4.15的源码(source)
之后下载opencv_contrib,这是opencv的扩展项,如果不安装的话在后续编译过程会报错
opencv_contrib需要和opencv版本对应,因此需要下载3.4版本的
我直接将两个压缩包放到了服务器个人文件的根目录下(即/home/MyName/opencv-3.4.15.zip
,MyName为用户名)
解压opencv
unzip opencv-3.4.15.zip
将opecv_contrib解压至opencv下
unzip opencv_contrib-3.4.zip -d opencv-3.4.15
之后执行
cd opencv-3.4.15
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/MyName/opencv34 -D WITH_TBB=ON -D WITH_V4L=ON -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ ..
这里的CMAKE_INSTALL_PREFIX参数是opencv的安装路径,我放在
/home/MyName/Opencv34
中,OPENCV_EXTRA_MODULES_PATH为opencv_contrib的路径
漫长等待ing
之后安装
make -j16
make install
j16表示使用16线程安装,根据服务器性能决定
出现上图就表示安装以完成
添加环境变量
gedit ~/.bashrc
添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/MyName/opencv34/lib/pkgconfig
export PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/MyName/opencv34/lib64/
之后使环境变量生效
source ~/.bashrc
验证
pkg-config --modversion opencv
# 显示版本号表示成功
安装pybind11
直接pip安装
pip install pybind11
安装normal speed
下载源码到根目录
git clone https://github.com/hfutcgncas/normalSpeed.git
进入/home/MyName/normalSpeed/normalSpeed/
中打开CMakeList.txt
并添加
红框部分是opencv和pybind11的安装目录
切换工作目录并安装
cd /home/MyName/normalSpeed/normalSpeed/
python setup.py install
显示上图表示安装完成
安装RandLA
cd ffb6d/models/RandLA/
sh compile_op.sh
这里直接参考源码github即可
运行代码前的准备
将linemod数据集解压至
ffb6d/datasets/linmode
修改ffb6d/train_lm.py中的代码,对于高版本pyymal,直接运行可以会出现TypeError: load() missing 1 required positional argument: 'Loader'
这个错误
# 第139行
self.lm_r_lst = yaml.load(lm_r_file)
# 修改为
self.lm_r_lst = yaml.load(lm_r_file, Loader=yaml.FullLoader)
按照相同方法修改ffb6d/datasets/linmod_dataset.py
中的第46行
运行代码
按照github中的说明运行即可,注意gpu数量别设置错了,理论上没啥问题了