赞
踩
初研究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
运行结果:(一张图截不下所以分三次截全)
使用valid.ipynb来测试模型并可视化结果:我是在jupyter上把valid.ipynb转为valid.py文件在pycharm上运行测试的。步骤如下:
首先在终端上进行以下步骤:
pip install matplotlib
pip install jupyter notebook
在一个新终端下运行:
jupyter notebook
会直接跳到浏览器上打开界面:
点击“上传”选择要上传的文件,然后点“打开”
然后点击“上传”
然后可以看到如下界面:此时你可以选择直接在jupyter上运行文件(要在相应的环境下运行),也可以转为.py文件在pycharm上运行。我选择后者,转换步骤如下:
点击“文件”,点击“下载”,选择“python(.py)”,然后选择保存路径就可以下载保存了。
我保存到了singleshotpose-master下新建的文件夹jupyter下。
然后将原代码中的valid.py备份(valid–原.py),将转换后的valid.py放到文件夹下,进行运行测试:
python valid.py --datacfg cfg/ape.data --modelcfg cfg/yolo-pose.cfg --weightfile backup/ape/model_backup.weights
可以看到输出图片如下:
2、多目标情况:OCCLUSION数据集
运行代码:
python valid_multi.py cfg/yolo-pose-multi.cfg backup_multi/model_backup.weights
输出结果如下:
多目标情况也进行可视化:与单目标的可视化方法一样。将对应的文件夹multi_obj_pose_estimation下的valid_multi.jpynb在jupyter上转为.py文件,备份原valid_multi.py文件(valid_multi–原.py),将转换好的放到文件夹下,进行运行即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。