服務器非root用戶配置Caffe MobileNet SSD環境

MobileNet SSD速度快計算量適中,適合在移動端進行目標檢測,但其運行環境很難配置,參考https://blog.csdn.net/weixin_35754503/article/details/89314033,小辣雞作者在踩完以上所有坑的情況下,又多踩了許多坑,意識到服務器非root配置環境的路上沒有捷徑,並不是所有error都可以搜到答案,積極培養自己對error的適應能力,才能開開心心的去踩下一個。


前期準備

首先:你要有一臺服務器,小辣雞這裏用的是Redhat
其次:確認一下你真的沒有root權限,不要遭不該遭的罪 (來sudo一下)
心理:雖然這篇文章解決不了你遇到的全部問題,但是我相信你一定可以的
建議和上面的參考一起看huh。

簡單說一下

配置caffe ssd的流程大約是這樣的:

  1. clone caffe ssd代碼
  2. 安裝anaconda
  3. 安裝依賴庫
  4. 配置環境變量
  5. 按照官方指引安裝caffe ssd
  6. cmake連接文件,檢查是否報錯或庫、包的版本、路徑不對,若不對返回3
  7. make all編譯文件,若報錯,返回3
  8. 繼續按照官方指引完成安裝

流程開始

建議在你的根目錄下建立兩個文件夾:local,用來存放自己安裝的依賴包;temp,用來下載安裝包。

首先,下載caffe ssd,
git clone https://github.com/weiliu89/caffe.git

許多依賴包可以通過anaconda下載,省時省力,但也有可能會帶來不必要的麻煩,(:anaconda在環境變量的優先級通常比自己指定的要靠前,anaconda自帶的庫有可能會被cmakelist優先找到 典型錯誤:cmake後的信息找到的是conda下的hdf5,然而anaconda通常會下載最新版本的包,會導致版本不匹配,然而卸載這個包又會導致其依賴庫一起被卸載掉,這樣的解決辦法:卸載掉衝突的包再裝回有用的、被當做依賴包一起卸載掉的包,典型的錯誤提示:unreference to…)。這裏推薦下載anaconda2。

依賴庫

:不僅要裝庫,庫的版本也很重要。
由於服務器自帶的包的個數和版本不同,你需要在cmake後的信息中尋找缺失的包,:僅僅找缺失的包還不夠,你要檢查每個包所對應的路徑是否是你希望安裝中所使用的路徑,如果不是,原因大約:1. 你指定的路徑有誤,修改路徑 2. 找到的包是anaconda lib下的,在anaconda裏卸載這個包,並在同意卸載輸入yes之前看好一同被卸載的依賴包中是否有你需要的包,如果有,在卸載後用conda install再裝好 3. 微笑提示:vim .bashrc中修改環境變量之後要source .bashrc。

配套庫以及我使用的版本
boost 1.61
cmake3.4.0
cvDNNv6.0 (到nvidia搜你匹配的版本)
hdf5 :容易和anaconda起衝突
openblas
opencv 3.4.4
python 2.7.16
:protobuf,在下載之前先看好

protoc --version

下載對應版本的protobuf

安裝方法參考https://blog.csdn.net/jiajinrang93/article/details/80337513,但要:注意版本。建議在local中,每個包都獨立建一個文件夾,然後再把temp中的安裝程序的安裝路徑指到那個專用的文件夾中,畢竟你下載的依賴庫不會很多,:但如果你不小心裝錯了版本,刪是真的難刪。

配置環境變量

到你的根目錄下

vim .bashrc

指定一下環境變量,:記得source .bashrc。

官方安裝命令

短短几句,每成功一小步,都是你進步的一大步,來吧,進入下載的ssd_caffe/caffe/

mkdir build
cd build
cmake ..
make all
make install 
make pycaffe
make runtest

:重點就在第三句cmake,由於你要指定自己下載的包的位置,

cmake .. -DBLAS=open 
-DCMAKE_BUILD_TYPE=Release
-DCUDNN_INCLUDE=/.../cudnn/include
-DCUDNN_LIBRARY=/.../cudnn/lib64/libcudnn.so
-DBOOST_ROOT=/.../local/boost/
-DOpenCV_DIR=/.../opencv 
-DCMAKE_PREFIX_PATH=/.../opencv/share/OpenCV

:句子間記得加空格,有些系統目錄下沒有提供的包,自己下載好後,指定cmake爲每個變量配置的變量名,需要去cmakelist.txt、Dependencies.cmake和Findxxx.cmake中自己找。

:這裏不僅出現錯誤,有時候它雖然連接成功,你make all還是會報錯,但這不是make all的鍋,所以在cmake的提示信息中,一定要看好每個包是不是你指定的包,是否有缺包,python是否找到等等,一切warning都有可能成爲你make all失敗的潛在風險,然而像提示clock skew和libraries may be incomplete可以不用擔心。

:make all

前面隨意安裝依賴庫的所有任性都在這個環節還給你,從0%到100%每走一步都是巨大的進步。這裏出現的錯誤原因大約分兩種:你的編譯有問題和你的依賴庫有問題。編譯基本上就是gcc版本問題,太新太老都不行,你沒有看錯,還有就是你的cmake有問題,anaconda的cmake太新,建議自己下,一般編譯的問題會很早就報錯,並且會報一堆錯誤,比如100 errors;另一種,庫的錯誤的話,原因就是unreference to…,報的錯誤也不少,但是沒有第一種多,這時就要看具體分析了,察覺蛛絲馬跡,比如你發現每個找不到的東西里都帶jasxxx,到網上搜一搜就會發現有一個叫jasper的庫,手動下載裝一下,然後配環境變量吧。


一旦make all過了後面就應該很順利了,至少是離成功不遠了。加油裝吧。

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