源代码链接:GitHub - zju3dv/clean-pvnet: Code for "PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation" CVPR 2019 oral
目录
1、下载代码
2、配置环境
3、Compile cuda extensions under lib/csrc
4、Set up datasets:
(1)数据集
(2)训练好的权重文件
(3)测试成功
git clone https://github.com/zju3dv/clean-pvnet.git
conda create -n pvnet python=3.7
conda activate pvnet
# install torch 1.1 built from cuda 9.0
pip install torch==1.1.0 -f https://download.pytorch.org/whl/cu100/stable
pip install Cython==0.28.2
sudo apt-get install libglfw3-dev libglfw3
pip install -r requirements.txt
注意:
yacs==0.1.4
numpy==1.21.6
torchvision==0.2.1
opencv-python==3.4.2.17
tqdm==4.28.1
pycocotools==2.0.0
matplotlib==2.2.2
plyfile==0.6
scikit-image==0.14.2
scikit-learn
PyOpenGL==3.1.1a1
ipdb==0.13
cyglfw3==3.1.0.2
pyassimp==3.3
progressbar==2.5
open3d-python==0.5.0.0
tensorboardX==1.2
cffi==1.11.5
后续安装了transform3d(见第4节)
~/3dTracking/clean-pvnet$ pip install transforms3d
Collecting transforms3d
Using cached transforms3d-0.4.1.tar.gz (1.4 MB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: transforms3d
Building wheel for transforms3d (setup.py) ... done
Created wheel for transforms3d: filename=transforms3d-0.4.1-py3-none-any.whl size=1376757 sha256=890c7940063b6c9fca40c910e5bafea777f001ed762debc2f5055e2f408dcc54
Stored in directory: /home/rakuli/.cache/pip/wheels/0b/2a/fe/379cf61e108f06750107439af6531daf372d7de2c390a939b4
Successfully built transforms3d
Installing collected packages: transforms3d
Successfully installed transforms3d-0.4.1
lib/csrc
ROOT=/path/to/clean-pvnet
cd $ROOT/lib/csrc
export CUDA_HOME="/usr/local/cuda-10.2"
cd ransac_voting
python setup.py build_ext --inplace
cd ../nn
python setup.py build_ext --inplace
cd ../fps
python setup.py build_ext --inplace
# If you want to run PVNet with a detector
cd ../dcn_v2
python setup.py build_ext --inplace
# If you want to use the uncertainty-driven PnP
cd ../uncertainty_pnp
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libsuitesparse-dev
sudo apt-get install libatlas-base-dev
python setup.py build_ext --inplace
因为我的cuda版本是10.2,所以在export cuda_home的时候修改了路径
这一部分的输出日志较长(因为我还是希望保存一下),见以下链接:https://blog.csdn.net/weixin_54470372/article/details/128293517
从以下链接下载linemod数据集;
OneDrive for Business
ROOT=/path/to/clean-pvnet
cd $ROOT/data
ln -s /path/to/linemod linemod
ln -s /path/to/linemod_orig linemod_orig
ln -s /path/to/occlusion_linemod occlusion_linemod
# the following is used for tless
ln -s /path/to/tless tless
ln -s /path/to/cache cache
ln -s /path/to/SUN2012pascalformat sun
我没有建立软链接,直接将LINEMOD压缩包解压在data文件夹内,文件夹名改为linemod
运行以下命令进行数据集的prepare
python run.py --type linemod cls_type cat
输出日志如下:
~/3dTracking/clean-pvnet$ python run.py --type linemod cls_type cat
100%|███████████████████████████████████████████████████████████████████████████████████████████████| 177/177 [00:00<00:00, 5575.48it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████| 10000/10000 [00:08<00:00, 1139.37it/s]
100%|██████████████████████████████████████████████████████████████████████████████████████████| 10000/10000 [00:00<00:00, 11956.80it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████| 1002/1002 [00:00<00:00, 6410.46it/s]
100%|███████████████████████████████████████████████████████████████████████████████████████████| 1187/1187 [00:00<00:00, 347379.21it/s]
再从以下链接下载名为cat_199.pth文件,保存至data/model/pvnet/cat文件夹内,更改文件名为199.pth
https://1drv.ms/f/s!AtZjYZ01QjphgQBQDQghxjbkik5f
运行以下命令进行测试
python run.py --type evaluate --cfg_file configs/linemod.yaml model cat cls_type cat
python run.py --type evaluate --cfg_file configs/linemod.yaml test.dataset LinemodOccTest model cat cls_type cat
注:
(1)第一次运行时会从pytorch官网下载resnet的预训练文件
(2)由于报错,安装了transform3d
File "lib/evaluators/linemod/pvnet.py", line 19, in
from transforms3d.quaternions import mat2quat, quat2mat
ModuleNotFoundError: No module named 'transforms3d'
(3)由于报错,添加执行权限
RuntimeError: error executing torch_shm_manager at "/home/r**/anaconda3/envs/pvnet/lib/python3.7/site-packages/torch/bin/torch_shm_manager" at /pytorch/torch/lib/libshm/core.cpp:99
解决:
chmod +x /home/r*/anaconda3/envs/pvnet/lib/python3.7/site-packages/torch/bin/torch_shm_manager