【3D】姿态检测网络PoseCNN复现过程记录

2019/04/10 10:10
阅读数 14

最近在研究室内6D姿态检测相关问题,计划在PoseCNN网络基础上进行改进实现。但是在第一步的复现过程中踩了无数的坑,最终成功运行了demo,但目前数据集train还是遇到了一些问题。有问题欢迎一起交流进步!

本文重点讲解网络代码复现过程,对于原文的讲解可以阅读这篇文章,满满干货!《论文笔记——PoseCNN》

本人系统环境:

  • Ubuntu 16.04
  • Tensorflow 1.8(from source)
  • Python 2.7
  • Cuda 10.1 & cuddn 7.3.1

<center> 1.搭建虚拟环境 </center>

第一步,创建专属于PoseCNN的虚拟环境,之后install的包都在此虚拟环境中。 虚拟环境的好处不用多说了吧,反正对Ubuntu系统的折腾越少越好!!! 我用 conda 创建的环境:

  • <code> conda create -n posecnn python=2.7 </code> 激活环境:
  • <code> conda activate posecnn </code> 如果不用这个环境,记得deactivate:
  • <code> conda deactivate posecnn </code>

<center> 2.pip install </center>

  • <code> pip install opencv-python </code>

如果不行试一下:<code> sudo apt-get install libopencv-dev </code>

  • <code> pip install mock enum34</code>
  • <code> pip install matplotlib numpy keras Cython Pillow easydict transforms3d </code>
  • <code> pip install OpenEXR </code>
  • <code> sudo apt-get install libsuitesparse-dev libopenexr-dev metis libmetis-dev </code>

<center> 3.TensorFlow </center>

注意一定要从源码安装,虽然很繁琐,但是经过实践证明,pip install安装出来的TensorFlow不好用。。 此外,使用gcc 4.8和g++ 4.8对后续的依赖包进行编译。

  • <code> sudo apt-get install gcc-4.8 </code>

  • <code> sudo apt-get install g++-4.8 </code>

  • <code> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10 </code>

  • <code> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 30 </code>

  • <code> sudo update-alternatives --config gcc </code> 输入选择 1

  • <code> sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10 </code>

  • <code> sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 30 </code>

  • <code> sudo update-alternatives --config g++ </code> 输入选择 1

测试一下gcc和g++的版本,显示4.8就更换完毕了:

  • <code> gcc --version </code>

  • <code> g++ --version </code>

接下来安装bazel,并选择0.10.0版本,本文选择下载sh文件进行安装,

下载地址:https://github.com/bazelbuild/bazel/releases/download/0.10.0/bazel-0.10.0-installer-linux-x86_64.sh 下载好之后,安装:

  • <code> chmod +x bazel-0.10.0-installer-linux-x86_64.sh </code> 修改文件权限
  • <code> ./bazel-0.10.0-installer-linux-x86_64.sh --user </code> 进行安装 接着添加环境变量:
  • <code> gedit ~/.bashrc </code>
  • <code> export PATH="$PATH:$HOME/bin" </code>

下面下载安装TensorFlow:

  • git clone https://github.com/tensorflow/tensorflow.git
  • cd tensorflow
  • git checkout r1.8
  • ./configure 这一步,配置文件会问很多问题,对应回答y/n即可:

注意 Python 及其sitepackage的路径要与你之后环境路径相对应 比如我在posecnn虚拟环境中运行的话,我的python路径就是 .../.conda/env/posecnn/bin/python 大部分都选择n,但是询问cuda时,要根据你的电脑实际选择

然后编译源文件:

  • bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package 生成安装包:
  • bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/software/tensorflow 最后安装:
  • pip install /tmp/tensorflow_pkg/tensorflow-1.8.0-cp27-cp27mu-linux_x86_64.whl 至此,TensorFlow的源码安装大功告成,可以import测试一下。

<center> 4.Eigen </center>

wget https://bitbucket.org/eigen/eigen/get/3.3.0.zip
# 提取解压压缩包
# 重命名文件夹为eigen
cd eigen
mkdir build && cd build
cmake ..
make
sudo make install

<center> 5.Nanoflann </center>

wget https://github.com/jlblancoc/nanoflann/archive/ad7547f4e6beb1cdb3e360912fd2e352ef959465.zip
# 提取解压压缩包
# 重命名文件夹为nanoflann
sudo apt-get install build-essential cmake libgtest-dev
cd nanoflann
mkdir build && cd build && cmake ..
make && make test
sudo make install

<center> 6.Pangolin </center>

wget https://github.com/stevenlovegrove/Pangolin/archive/1ec721d59ff6b799b9c24b8817f3b7ad2c929b83.zip
# 提取解压压缩包
# 重命名文件夹为Pangolin
cd Pangolin
# Add folowing line to the CMakeLists.txt:
# add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
mkdir build
cd build
cmake ..
cmake --build .

<center> 7.Boost </center>

wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.bz2
# 提取解压压缩包
# 重命名文件夹为boost
cd boost
./bootstrap.sh
sudo ./b2
sudo ./b2 install

<center> 8.Sophus </center>

wget https://github.com/strasdat/Sophus/archive/ceb6380a1584b300e687feeeea8799353d48859f.zip
# 提取解压压缩包
# 重命名文件夹为Sophus
cd Sophus
mkdir build && cd build
cmake ..
make
sudo make install

<center> 9.NLOPT </center>

wget https://github.com/stevengj/nlopt/archive/74e647b667f7c4500cdb4f37653e59c29deb9ee2.zip
# 提取解压压缩包
# 重命名文件夹为nlopt
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install

至此,所有依赖包配置完毕,下面针对源代码进行编译运行。


<center> 10.Compile lib/kinect_fusion </center>

先注释掉/usr/local/cuda/include/crt/common_functions.h的第64行,因为这个issue 要是只读权限无法修改,就用sudo chmod 777 /usr/local/cuda/include/crt/common_functions.h修改一下权限。

cd kinect_fusion
mkdir build
cd build
cmake ..
make

编译完记得取消注释刚刚的common_functions.h第64行


<center> 11.Compile lib/synthesize </center>

cd ..
cd ..
cd synthesize
mkdir build
cd build
cmake ..
make

至此,环境配置完毕。更多可以看下面的参考链接,很详细。


参考:

原文出处:https://www.cnblogs.com/hatimwen/p/posecnn.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部