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

【注】:本文地址:【3D】姿态检测网络PoseCNN复现过程记录.时光清浅,岁月嫣然
若转载请于明显处标明出处。

ps.搬一下自己在博客园写的文章。

最近在研究室内6D姿态检测相关问题,计划在PoseCNN网络基础上进行改进实现。但是在第一步的复现过程中踩了无数的坑,最终成功运行了demo,目前网络训练完毕,test结果照原文要差一点。
有问题欢迎一起交流进步!

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

本人系统环境:

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

环境配置


1.搭建虚拟环境

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

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

2.pip install
  • pip install opencv-python

如果不行试一下: sudo apt-get install libopencv-dev

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

3.TensorFlow

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

  • sudo apt-get install gcc-4.8

  • sudo apt-get install g+±4.8

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

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

  • sudo update-alternatives --config gcc 输入选择 1

  • sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g+±4.8 10

  • sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g+±5 30

  • sudo update-alternatives --config g++ 输入选择 1

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

  • gcc --version

  • g++ --version

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

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

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

下面下载安装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测试一下。

4.Eigen
# 原网址没了(wget https://bitbucket.org/eigen/eigen/get/3.3.0.zip)
# 用这个网址下载
wget https://gitlab.com/libeigen/eigen/-/archive/3.3.0/eigen-3.3.0.zip
# 提取解压压缩包
# 重命名文件夹为eigen
cd eigen
mkdir build && cd build
cmake ..
make
sudo make install

5.Nanoflann
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

6.Pangolin
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 .

7.Boost
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

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

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

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


10.Compile lib/kinect_fusion

先注释掉/usr/local/cuda/include/crt/common_functions.h的第75行
#define __CUDACC_VER__ "__CUDACC_VER__ is no longer supported. Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."
因为这个issue
要是只读权限无法修改,就用sudo chmod 777 /usr/local/cuda/include/crt/common_functions.h修改一下权限。

cd kinect_fusion
mkdir build
cd build
cmake ..
make

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


11.Compile lib/synthesize
cd ..
cd ..
cd synthesize
mkdir build
cd build
cmake ..
make

Compile the new layers under $ROOT/lib we introduce in PoseCNN.
(注意下面的$ROOT要换成你实际的PoseCNN代码路径!!!)

cd $ROOT/lib
sh make.sh
  • run python setup: python setup.py build_ext --inplace

  • Add pythonpaths

  • Add the path of the built libary libsynthesizer.so to python path

export PYTHONPATH=$PYTHONPATH:$ROOT/lib:$ROOT/lib/synthesize/build

12.下载数据集

至此,环境配置完毕。接下来直接贴出原作者步骤:

Running the demo

  1. Download our trained model on the YCB-Video dataset from here, and save it to $ROOT/data/demo_models.

  2. run the following script

    ./experiments/scripts/demo.sh # 默认用0号GPU运行!
    # 或者
    ./experiments/scripts/demo.sh --gpuid 1 # 指定1号(也可以选择你喜欢的GPU)运行空格很重要!
    

Running on the YCB-Video dataset

  1. Download the YCB-Video dataset from here.数据集上一步已经下好了,这一步不用管~

  2. Create a symlink for the YCB-Video dataset (the name LOV is due to legacy, Learning Objects from Videos)
    建立软连接,让代码知道你数据集放哪了。

    cd $ROOT/data/LOV
    ln -s $ycb_data data
    ln -s $ycb_models models
    
  3. Training and testing on the YCB-Video dataset

    cd $ROOT
    
    # training
    ./experiments/scripts/lov_color_2d_train.sh $GPU_ID
    
    # testing
    ./experiments/scripts/lov_color_2d_test.sh $GPU_ID
    
    

更多可以看下面的参考链接,很详细。更多多的希望通读代码!通读代码!通读代码!


参考:

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论
要在Windows上搭建3D目标检测的环境,你需要进行以下步骤: 1. 安装CUDA和cuDNN:首先,确保你的计算机上已经安装了NVIDIA的GPU和最新版本的CUDA和cuDNN。你可以从NVIDIA的官方网站下载并安装它们。 2. 安装Anaconda:在Windows上安装Anaconda是一个方便的方法,可以帮助你配置Python环境和依赖库。从Anaconda的官方网站下载并安装Anaconda。 3. 创建虚拟环境:在Anaconda Prompt上,使用conda命令创建一个虚拟环境,并安装Python和必要的依赖库。例如,执行以下命令: ``` conda create --name env_name python=3.6 conda activate env_name conda install numpy opencv pytorch torchvision -c pytorch ``` 4. 下载数据集:选择一个3D目标检测数据集,比如KITTI、SUN RGB-D等,并从官方网站上下载数据集。 5. 下载代码:从GitHub上下载3D目标检测的代码,例如MV3D、AVOD、SECOND等。 6. 配置环境变量:将CUDA和cuDNN的路径添加到环境变量中,例如: ``` set PATH=%PATH%;C:\Program Files\NVIDIA Corporation\cuda\bin;C:\Program Files\NVIDIA Corporation\NvToolsExt\bin;C:\Program Files\NVIDIA Corporation\cuDNN\bin set CUDA_HOME=C:\Program Files\NVIDIA Corporation\cuda set CUDA_TOOLKIT_ROOT_DIR=C:\Program Files\NVIDIA Corporation\cuda set CUDA_PATH=C:\Program Files\NVIDIA Corporation\cuda set CUDNN_HOME=C:\Program Files\NVIDIA Corporation\cuDNN ``` 7. 训练模型:使用PyTorch等深度学习框架,训练一个3D目标检测模型,比如MV3D、AVOD、SECOND等。 8. 测试模型:使用训练好的模型,在测试集上进行测试,并评估模型的性能指标,比如准确率、召回率、精确度等。 需要注意的是,不同的3D目标检测模型可能需要不同的依赖库和环境配置,因此在搭建环境时需要根据模型的要求进行相应的配置。
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文洪涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值