Single Shot 6D Object Pose Prediction代码复现--测试

Singleshot 6D Object Pose Prediction代码复现–测试

初研究6D位姿估计,在网上看到了Real-Time Seamless Single Shot 6D Object Pose Prediction这篇文章,并有开源代码https://github.com/Microsoft/singleshotpose/,所以就认真研读了论文,并复现了一下源代码。这篇文章主要记录我复现测试部分代码的过程。

我的环境是:ubuntu16.04 cuda9.0 python2.7+pytorch0.3.1
具体过程如下:

一、准备工作

1.创建环境

conda create -n pose python=2.7  # 创建conda环境
conda activate pose              #激活环境pose

2.安装pytorch
直接安装会报错,所以我参考这篇文章进行安装。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/  # 使用清华镜像源
conda config --set show_channel_urls yes
conda install pytorch=0.3.1 torchvision cuda90 -c pytorch
pip install torchvision==0.2.1

此时可以测试torch是否安装成功:
打开终端,在pose环境下运行python然后输入:
在这里插入图片描述
证明安装成功。

3.安装以下依赖项:numpy,scipy,PIL,opencv-python

conda install --channel https://conda.anaconda.org/menpo opencv
conda install numpy
conda install scipy

安装PIL时:

conda install -c http://conda.anaconda.org/reeder pillow

4.下载并准备数据集

wget -O LINEMOD.tar --no-check-certificate "https://onedrive.live.com/download?cid=05750EBEE1537631&resid=5750EBEE1537631%21135&authkey=AJRHFmZbcjXxTmI"
wget -O backup.tar --no-check-certificate "https://onedrive.live.com/download?cid=0C78B7DE6C569D7B&resid=C78B7DE6C569D7B%21191&authkey=AP183o4PlczZR78"
wget -O multi_obj_pose_estimation/backup_multi.tar --no-check-certificate  "https://onedrive.live.com/download?cid=05750EBEE1537631&resid=5750EBEE1537631%21136&authkey=AFQv01OSbvhGnoM"
wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar

此时,由于我的Linux系统无法连接外网,所以我直接采用作者说的直接复制网址在windows上下载,最后下载成功:
在这里插入图片描述
然后将他们都放在Linux系统上,继续进行:
在终端下进行:

wget https://pjreddie.com/media/files/darknet19_448.conv.23 -P cfg/
tar xf LINEMOD.tar
tar xf backup.tar
tar xf multi_obj_pose_estimation/backup_multi.tar -C multi_obj_pose_estimation/
tar xf VOCtrainval_11-May-2012.tar

然后将解压好的数据集权重放到相应的文件夹中。
二、测试
1、单目标情况:Linemod数据集

python valid.py --datacfg cfg/ape.data --modelcfg cfg/yolo-pose.cfg --weightfile backup/ape/model_backup.weights

运行结果:(一张图截不下所以分三次截全)
Single Shot 6D Object Pose Prediction代码复现--测试_第1张图片Single Shot 6D Object Pose Prediction代码复现--测试_第2张图片Single Shot 6D Object Pose Prediction代码复现--测试_第3张图片使用valid.ipynb来测试模型并可视化结果:我是在jupyter上把valid.ipynb转为valid.py文件在pycharm上运行测试的。步骤如下:
首先在终端上进行以下步骤:

pip install matplotlib
pip install jupyter notebook

在一个新终端下运行:

jupyter notebook

会直接跳到浏览器上打开界面:
Single Shot 6D Object Pose Prediction代码复现--测试_第4张图片点击“上传”选择要上传的文件,然后点“打开”
Single Shot 6D Object Pose Prediction代码复现--测试_第5张图片然后点击“上传”
在这里插入图片描述然后可以看到如下界面:此时你可以选择直接在jupyter上运行文件(要在相应的环境下运行),也可以转为.py文件在pycharm上运行。我选择后者,转换步骤如下:
Single Shot 6D Object Pose Prediction代码复现--测试_第6张图片点击“文件”,点击“下载”,选择“python(.py)”,然后选择保存路径就可以下载保存了。
Single Shot 6D Object Pose Prediction代码复现--测试_第7张图片
我保存到了singleshotpose-master下新建的文件夹jupyter下。
Single Shot 6D Object Pose Prediction代码复现--测试_第8张图片
然后将原代码中的valid.py备份(valid–原.py),将转换后的valid.py放到文件夹下,进行运行测试:
Single Shot 6D Object Pose Prediction代码复现--测试_第9张图片

python valid.py --datacfg cfg/ape.data --modelcfg cfg/yolo-pose.cfg --weightfile backup/ape/model_backup.weights

可以看到输出图片如下:
Single Shot 6D Object Pose Prediction代码复现--测试_第10张图片2、多目标情况:OCCLUSION数据集
运行代码:

python valid_multi.py cfg/yolo-pose-multi.cfg backup_multi/model_backup.weights

输出结果如下:
Single Shot 6D Object Pose Prediction代码复现--测试_第11张图片Single Shot 6D Object Pose Prediction代码复现--测试_第12张图片Single Shot 6D Object Pose Prediction代码复现--测试_第13张图片
多目标情况也进行可视化:与单目标的可视化方法一样。将对应的文件夹multi_obj_pose_estimation下的valid_multi.jpynb在jupyter上转为.py文件,备份原valid_multi.py文件(valid_multi–原.py),将转换好的放到文件夹下,进行运行即可。

你可能感兴趣的:(位姿估计,深度学习(代码),深度学习,python,linux)