【親測可用】Jetson nano安裝openpose

因爲項目原因,需要在Jetson nano上跑openpose,在網上找相關資源,只找到了 小乖的晴天的一篇名爲Jetson nano安裝openpose的文章,這篇文章真的是幫了我大忙,在這裏向這位博主表示衷心的感謝。本人按照這位博主的教程一步一步操作,其中因爲自己的一些操作失誤原因,踩了一些坑,總共寫了三次系統,用了四天的時間,終於在板子上跑來了openpose,這裏將自己踩過的一些坑分享給大家,希望能夠幫助到有同樣需要的夥伴們。

參考: 小乖的晴天

本文直接從安裝openpose環境開始講起,此時假設你已經有一塊已寫入系統的板子。

 

一、準備openpose安裝環境——caffe

建議使用openpose自帶caffe(不過需要先安裝好caffe的依賴)

不需要過多操作,保證openpose——3rdparty——caffe文件夾和github上一樣即可

(直接clone整個openpose,3rdparty裏會有caffe這個文件夾,但裏邊是空的,攤手~)

openpose 的 caffe 下載地址:

https://github.com/CMU-Perceptual-Computing-Lab/caffe/tree/b5ede488952e40861e84e51a9f9fd8fe2395cc8a

關於安裝caffe依賴:

caffe需要一些依賴,否則後面編譯會報錯。具體步驟如下。

Jetson nano已經安裝好CUDA,cuDNN,以及OpenCV,但是需要配置一些,配置可以參考:

https://blog.csdn.net/beckhans/article/details/89138876(第3部分,檢查已經安裝的系統組件)

這一塊建議按照這個步驟做,可以少踩很多坑!

1.安裝protobuf 2.6

因爲caffe不支持3.0以上的protobuf,所以這裏用2.6,這是在單獨安裝caffe時出現的問題,不知道使用openpose自帶caffe是否還對protobuf有要求,有試過的同學可以交流一下。

protoc --version  可查看當前protoc的版本

whereis protoc 可以查看哪些路徑下安裝了protoc

下載protobuf 2.6:
https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz

安裝:

安裝完成,如果可以查看版本號,則證明安裝成功,如果出現錯誤:

protoc: error while loading shared libraries: libprotocbuf.so.9: cannot open shared

 在 /etc/ld.so.conf.d/目錄下創建 bprotobuf.conf文件,文件內容如下:

/usr/local/lib

這裏要注意:你可能沒有在/etc/ld.so.conf.d/目錄下創建 bprotobuf.conf文件的權限,所以要給當前用戶加讀寫ld.so.conf.d目錄下文件的權。#當前路徑爲/etc

sudo chmod 777 -R ld.so.conf.d

創建好bprotobuf.conf文件後,在 /etc/ld.so.conf.d/目錄下輸入命令:

sudo ldconfig

再輸入protoc --version,就可以查看protobuf版本號了。

2.安裝其他依賴

注意:千萬不要去切換apt-get的源。因爲apt-get的默認源在國外,下載包速度很慢,當時本人將apt-get的源換成了國內的,結果有些依賴包就下載不下來。

sudo apt-get install libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev 
 
sudo apt-get install --no-install-recommends libboost-all-dev
 
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 
sudo apt-get install git build-essential

安裝時,注意不要更新protobuf,不要使用sudo apt upgrade

如果出現sudo apt-get install 命令不能用的情況,kill -9 相關進程也沒有用,可以試試萬能重啓。

 

關於 pybind11

如果這個文件夾爲空,後續編譯時會報錯

openpose——3rdparty——pybind11文件夾也存在可能爲空的問題

openpose 的 pybind11 下載地址:

https://github.com/pybind/pybind11/tree/085a29436a8c472caaaf7157aa644b571079bcaa

可以單獨下載這兩個文件夾,進行替換,注意文件夾名稱保持不變,還是“caffe”和“pybind11”,不然可能存在路徑問題。


二、編譯openpose

1.保證openpose——3rdparty——caffe 和 pybind11 兩個文件夾非空且內容和github上一樣

2.安裝cmake-gui

因爲jetson nano的系統是Ubuntu 18,所以需要cmake>=3.12(一般默認爲3.10)

卸載低版本cmake(如果已安裝)

sudo apt purge cmake-qt-gui

執行

sudo apt-get install qtbase5-dev

下載最新版本cmake:

https://cmake.org/download/

解壓文件,使用命令行進入文件夾,依次運行

./configure --qt-gui
./bootstrap && make -j8 && sudo make install -j2

注:make install時,如果不加sudo可能會報權限錯誤

-j2,可以量力而行,2可以改爲更大的數,但需保證是2的倍數

如果安裝成功可以看到這樣的圖標(本文中安裝的是cmake 3.14)

 

3.編譯openpose

  • 新建build文件夾
  • 打開cmake,源文件:openpose文件夾;目標文件:openpose下新建build文件夾

如果openpose文件夾下之前沒有build。會有如下提示,選擇“Finish”就好。

實際操作界面

  • Configure

點擊“Configure”按鈕,如果成功,會提示“Configuring done”。這時,會出現一些選項

使用openpose自帶caffe需要按照下圖勾選:

千萬注意不要勾選錯了,否則會很麻煩!

注意:最後一項不要選!!!

說明:

1.BUILD_CAFFE:使用自帶caffe進行編譯

2.BUILD_EXAMPLE:可以使用openpose示例程序

3.BUILD_PYTHON:如果需要使用Python的API,需要勾選此項

4.USE_CUDNN:使用CUDNN加速,不勾選後期調整網絡也能跑

注:WITH_OPENCV_WITH_OPENGL:不用勾選,jetson nano沒有OPENGL,如果勾選編譯時會報錯,或者也可以先安裝所需文件,不過本文沒有嘗試。

注意:如果之前自己安裝過caffe,但是現在想用openpose自帶的caffe,一定記得刪除之前caffe的環境變量。
 

sudo vim  ~/.bashrc

刪除環境變量/caffe/python,保存文件後記得source一下

source ~/.bashrc

如果想要使用自己安裝的caffe,不需要勾選BUILD_CAFFE,而是設置下面兩項內容,讓cmake可以找到caffe

  • Generate

點擊“Generate”,如果成功,會提示“Generate done”

  • make

進入openpose——build,然後make,然後等待,直到100%。


cd openpose/build/
sudo make -j2

三、運行openpose

如果上面的步驟都沒問題,那麼恭喜你,基本上可以成功運行openpose程序了。

Jetson nano算力有限,如果直接照搬quickstart的示例,很可能發現Jetson nano卡住不動,最後什麼也沒出來,提示“killed”。

這時候,需要縮小網絡,如果需要外接攝像頭,還需要縮小相機畫面大小,否則nano也可能自己關機了

比如直接使用攝像頭:

 ./build/examples/openpose/openpose.bin -camera_resolution 320x160 -net_resolution 64x32

注意:兩個數值可以調整,但需要是16的倍數

其他示例也需要設置網絡大小,否則很難在Jetson nano上跑起來,

比如處理視頻:

./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution 64x32

比如處理圖片:

./build/examples/openpose/openpose.bin --image_dir examples/media/ --net_resolution 64x32

 

注意:處理圖片時,example/media/文件中有多張圖片,如果想要快速檢測,可以只留一張圖片在此文件夾中,其他圖片另存備份。

 

關於網絡大小:

其實128x96效果比較好(這也是本文嘗試的最大值),但是很容易自動關機。網絡太小時,需要離攝像頭很近,才能檢測出姿態,如果距離較遠,會檢測不出姿態或者姿態不準確。而網絡較大時,距離較遠就可以準確識別姿態,但是會比較緊張,因爲Jetson nano隨時會關機。

關於攝像頭:

可以用樹莓派攝像頭,但是好像需要進行一些設置。

也可以用usb口的攝像頭,即插即用(本文用的這種),比較方便。


【參考】:

安裝系統:

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

openpose準備工作:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/prerequisites.md

openpose安裝:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation.md

openpose在jetson nano上示例:

https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/quick_start.md

https://developer.ridgerun.com/wiki/index.php?title=Setting_up_OpenPose_on_NVidia_Jetson_TX2

安裝protobuf:

https://blog.csdn.net/yunyi4367/article/details/78071872

安裝caffe依賴:

https://blog.csdn.net/beckhans/article/details/89393280

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章