【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
# 提取解壓壓縮包
# 重新命名資料夾為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.下載資料集
- 下載YCB-Video資料集,提取碼52xx,解壓生成:PoseCNN/data/YCB
- 下載SUN2012資料集,解壓生成:PoseCNN/data/SUN2012/data
- 下載ObjectNet3D資料集,解壓生成:PoseCNN/data/ObjectNet3D/data
至此,環境配置完畢。接下來直接貼出原作者步驟:
Running the demo
-
Download our trained model on the YCB-Video dataset from here, and save it to $ROOT/data/demo_models.
-
run the following script
./experiments/scripts/demo.sh # 預設用0號GPU執行! # 或者 ./experiments/scripts/demo.sh --gpuid 1 # 指定1號(也可以選擇你喜歡的GPU)執行空格很重要!
Running on the YCB-Video dataset
-
Download the YCB-Video dataset from here.資料集上一步已經下好了,這一步不用管~
-
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
-
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
更多可以看下面的參考連結,很詳細。更多多的希望通讀程式碼!通讀程式碼!通讀程式碼!
參考:
- PoseCNN RSE-Lab,RSE-Lab
- PoseCNN GitHub程式碼,yuxng
- YCB-Video資料集下載,提取碼52xx,wangg12
- PoseCNN程式碼實現大綱,Kaju-Bubanja
- PoseCNN程式碼實現詳細,Luedeke
- 《論文筆記——PoseCNN》,XJTU_Bugdragon
相關文章
- 檢測網路狀態
- 檢測網路狀態 - flutterFlutter
- iOS 檢測網路狀態iOS
- 單人的姿態檢測|tensorflow singlepose
- 網路狀態檢測的利器 - ss命令
- 秋色園網站轉移過程記錄篇網站
- PyraNet:基於特徵金字塔網路的人體姿態估計 | 經典論文復現特徵
- 伺服器zfs檔案系統修復過程記錄伺服器
- 虛擬機器資料丟失恢復過程記錄虛擬機
- 網路安全筆記-入侵檢測系統筆記
- 網路定址過程
- 記錄一次現網MySQL記憶體增長超限問題定位過程MySql記憶體
- Mediapipe入門——搭建姿態檢測模型並實時輸出人體關節點3d座標API模型3D
- Android檢測網路狀態,判斷當前網路是否可用Android
- docker使用redis過程出現的問題記錄DockerRedis
- Cisco網路工程師和網路安全課程學習記錄工程師
- 【OpenCV教程】輪廓檢測過程OpenCV
- 吳恩達《卷積神經網路》課程筆記(3)– 目標檢測吳恩達卷積神經網路筆記
- 網站漏洞檢測對漏洞檢測修復方案網站
- 使用NumPy演示實現神經網路過程神經網路
- 伺服器資料恢復案例:FreeNAS資料恢復過程記錄伺服器資料恢復
- 資料恢復記錄:硬碟分割槽損壞修復SqlServer資料庫過程資料恢復硬碟SQLServer資料庫
- MYSQL Group Replication搭建過程記錄MySql
- SpinalHDL上板過程記錄
- Issac_GYM重要過程記錄
- LLM本地部署全過程記錄
- Java UrlRewrite 實現網站URL重寫過程實錄Java網站
- 交換機通過Loopback Detection檢測(裝置所在網路環路)OOP
- 通過持續Ping來檢測網路質量
- 使用PyTorch演示實現神經網路過程PyTorch神經網路
- 虛擬機器 NAT 網路靜態ip配置記錄虛擬機
- 網路 - DNS解析過程原理DNS
- 升級 PHP7 過程記錄PHP
- Red Hat核心升級過程記錄
- 面試就業過程的記錄了面試就業
- atc轉換過程問題記錄
- 布匹缺陷檢測baseline提升過程
- 網路熱詞記錄