1. 程式人生 > >多人臉部\肢體\手部識別OpenPose安裝

多人臉部\肢體\手部識別OpenPose安裝

專案網址:

  1. 作業系統: win7, win8, win10; ubuntu14.04, 16.04
  2. cuda: 7.5, 8
  3. cuDNN5.1
pose_face_hands.gif
pose_face_hands.gif

windows下的安裝:

OpenPose目前可以在Win7,Win8或者Win10下成功安裝.

安裝所需的庫檔案:

按照順序安裝VS2015 -> CUDA8 -> cuDNN5.1.

雙擊{openpose_path}\windows\download_3rdparty_and_models.bat
下載所需的依賴檔案和模型。
雙擊{openpose_path}\windows\OpenPose.sln
右鍵選擇VS2015開啟工程檔案.

嘗試編譯和執行demo:

右鍵單擊 OpenPoseDemo --> Set as StartUp Project.
將VS2015工程模式從debug改為release.
按F5編譯執行. 在編譯之後,openpose會自動開啟網路攝像頭, 對拍攝到的影象進行識別.

在shell中執行exe檔案(也就是在VS外執行exe),需要:

  1. 將所有{openpose_folder}\3rdparty\windows\caffe\bin\中的dll檔案拷貝到{openpose_folder}\windows\x64\Release.
  2. 將所有{openpose_folder}\3rdparty\windows\opencv\x64\vc14\bin\中的dll檔案拷貝到 {openpose_folder}\windows\x64\Release
  3. 開啟Window的shell. 同時按下windows鍵和X鍵,然後輸入A,就可以開啟windows的power shell.
  4. 進入OpenPose資料夾, 假設OpenPose下載到了 C:\openpose資料夾中. 在power shell中輸入:
    cd C:\openpose\
    執行例子:
    bin\OpenPoseDemo.exe --video examples\media\video.avi --face --hand

在Ubuntu下安裝:

目前支援16.04, 14.04以及cuda7.5和cuda8. 最好是cuda8

首先需要配置cuda環境和cuDNN.
之後安裝QTcreator, 作為未來Cpp或者python的程式設計IDE
然後安裝opencv(這裡可以簡單地只用sudo apt-get install libopencv-dev安裝老版本的opencv)
如果要安裝比較新的opencv, 甚至和constrib這個不太穩定的模組一起安裝, 推薦用cmake-gui對opencv的安裝檔案generate和configure.在configure的時候仔細選擇好相關的設定.
設定選項可以參考:

configure成功後,在shell中輸入make, sudo make install 完成安裝即可.

用cmake-gui安裝基本上都沒有什麼問題,比直接命令列cmake -D XXX .. 成功率高得多.可能是cmake-gui內部做了優化,解決了一些配置上的問題.

安裝完opencv後,就是安裝caffe了.可以採用openpose自帶的caffe.也可以安裝自己的caffe. 可以採用openpose自帶的caffe(版本似乎是2016年3月釋出的caffe版本. ), 也可以自己從官網下載安裝.

protobuf版本檢查

這裡首先需要對protobuf的版本一致性問題進行檢查. 這是因為安裝caffe的shell指令碼(openpose_file/3rdparty/caffe/install_caffe_if_cuda8.sh)會自動下載安裝protobuf, 自動下載安裝的這個版本是2.6.1, 大概率比系統自帶的版本或者python(anaconda)老. 在編譯時就會報這樣的錯誤:

In file included from .build_release/src/caffe/proto/caffe.pb.cc:5:0:
.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
 #error This file was generated by a newer version of protoc which is
  ^
.build_release/src/caffe/proto/caffe.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
 #error incompatible with your Protocol Buffer headers.  Please update
  ^
.build_release/src/caffe/proto/caffe.pb.h:14:2: error: #error your headers.

檢查一下protobuf的版本:
protobuf --version 或者sudo protobuf –-version
就會發現出現的版本號不一致的情況.
另外, 進一步的搜尋還可以發現,在anaconda中也安裝了protobuf.
為了保持系統內部以及anaconda-protobuf版本的一致性,可以從下載anaconda的protobuf同樣版本的protobuf原始檔,自己編譯安裝.

安裝完成後, 從openpose_file/3rdparty/caffe/install_caffe_if_cuda8.sh 去掉和protobuf相關的下載安裝命令,保留其它.

# sudo apt-get --assume-yes install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler # default protobuf2.6.1 conflicts with system protobuf and anaconda-protobuf version
sudo atp-get --assume-yes install libleveldb-dev libsnappy-dev libhdf5-serial-dev
sudo apt-get --assume-yes install --no-install-recommends libboost-all-dev

如果返回無法找到 caffe.pb.h的錯誤,可以自己編譯 該檔案後放入指定的路徑(openpose_file/3rdparty/caffe/include/proto)中.

caffe的設定

在安裝caffe之前,還需要修改openpose_file/3rdparty/caffe/Makefile.config.Ubuntu16_cuda8.example檔案中的相關設定.

首先需要註釋掉所有python相關的設定. 特別是caffe官方支援的anaconda是python2.x版本的anaconda2, 如果要編譯anaconda3的pycaffe, 請慎重. 這是因為anaconda3自帶的檔案和系統檔案會發生衝突, 編譯時返回類似於std::CXX_11_xxx之類的錯誤. 詳見後面補充二.

openpose的安裝

安裝好之後就是opencv和openpose的安裝. 使用的是在ubuntu資料夾下的install_openpose_if_cuda8.sh指令碼.期間可能會報錯,類似:
libQt5Core.so.5: undefined reference to xxx
原因是QT安裝在了使用者目錄下,當時沒有配置環境變數,出現了連結錯誤.
解決方案:利用export 命令設定環境變數:[Qt安裝目錄下/version number /gcc_64/lib]
在終端輸入:export LD_LIBRARY_PATH=/home/dl/Software/Qt5.5.1/5.5/gcc_64/lib/
如果是編譯opencv相關的部分時出現了QT相關的錯誤資訊, 很有可能是在opencv安裝時沒有配置with QT=on. 重新安裝opencv, caffe 和openpose即可.
安裝完成後,將shell的當前工作路徑切換到OpenPose的根目錄下, 輸入
./build/examples/openpose/openpose.bin --video examples/media/video.avi --face --hand

參考:

補充一:

QT5.5.1安裝
1.進入Qt5.3.1的安裝目錄:例如我的目錄:cd /home/warsllon/SoftWare/Qt5.3.1;
2.執行命令:./MaintenanceTool;
3.進入圖形化介面,按照操作解除安裝即可。
在ubuntu下使用Qt 編譯時候遇上了cannot find -lGL錯誤,使用命令
sudo apt-get install libqt4-dev或者sudo apt-get install libgl1-mesa-dev或者libgl1-mesa-dev或者libglu1-mesa-dev
就可以解決問題

補充二:

這裡需要記錄一下的是, 網上有種方法是在編譯時首先註釋掉Makefile.config.Ubuntu16_cuda8.example檔案中anaconda3的相關設定,然後等待編譯到pycaffe再取消註釋繼續make. 具體而言,就是:

  1. 將終端路徑修改為openopse_file資料夾下,輸入:
    bash ./ubuntu/install_caffe_and_openpose_if_cuda8.sh
  2. 執行指令碼. 編譯到pycaffe時,會報錯.這時候再修改openpose_file/3rdparty/caffe/Makefile.config.Ubuntu16_cuda8.example
    檔案,恢復python-anaconda的設定.
  3. 再次執行
    bash ./ubuntu/install_caffe_and_openpose_if_cuda8.sh
    就可以完成caffe的安裝.

但是這樣即便make成功,安裝也成功,但是在anaconda3支援的所有python環境中,始終都不能成功import caffe包.

補充三:

Issues with compiling caffe with python, undefined reference to `std::__cxx11::…'
出現這種錯誤就是因為anaconda的檔案和系統檔案衝突的緣故.

補充四:

在編譯caffe時遇到錯誤需要重新編譯時(anaconda的那個問題不包括在內),需要在生成資料夾下輸入:
make clean
清除make生成的檔案,重新編譯後才能得到正確的結果.