1. 程式人生 > >Caffe安裝筆記二:Caffe安裝過程

Caffe安裝筆記二:Caffe安裝過程

下面開始正題,caffe的安裝過程。因為出問題很多,所以實際上我是嘗試了python2和python3兩種python的介面。下面一併放出來。

1. 安裝build-essential

sudo apt-get install
build-essential
這個是一些基本的庫,具體包括哪些,安裝前確認時會顯示,印象中有gcc等等。

2. boost安裝

caffe官網給出的是sudo apt-get install --no-install-recommends libboost-all-dev
我不知道他特意加個--no-install-recommends幹啥。另外,在installation主頁上標明瞭Boost>=1.55
,但是如果用上面那條命令的話,預設裝上的是1.54。我現在還不能完全確定1.54是不是不行,但是為了保險起見,請使用
sudo apt-get install libboost1.55-all-dev
關於boost在makefile.config中的配置,這是個坑,下面詳細講講。
2.1. python2/Anaconda2
對於python2,只要執行完上面的安裝就可以了,makefile中的配置項無需做特別設定。
2.2. python3/Anaconda3
對於python3,boost安裝方面沒啥要留意的。需要特別注意的是makefile.config中,有一行
# Uncomment to use Python 3 (default isPython 2)
PYTHON_LIBRARIES := boost_python-py34python3.5m
這一項很有迷惑性,而且我也迷糊了很久,因為相關有一項是PYTHON_LIB,一開始我以為是相同的重複項。但是如果這句stay comment的話,make caffe和pycaffe都能成功通過,但是使用時卻會報錯:
ImportError: /home/zero/Documents/caffe-master/python/caffe/_caffe.so:undefined symbol: 
_ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
這個錯誤的意思是,boost版本不匹配。
boost.python是啥東西呢?我理解的是boost.python是一個類似翻譯器的東西,所以如果你是python3的程式,卻用了python2的翻譯器,那語法、定義等等各方面必然會有衝突。我記得在某篇帖子中看到過,str、int等等的定義,在兩者中是不同的,所以有時會有報錯資訊說找不到str啦int啦之類。當時沒有把沒一個錯誤都記下來。
然後,如果我們去makefile中查詢這個變數PYTHON_LIBRARIES,會發現有這麼一句:
PYTHON_LIBRARIES ?= boost_python python2.7
這句的意思是說,如果不出意外,使用的是2版本的python和boost.python。但是這裡有個問題,如果把makefile.config裡面那句uncomment,原來預設的是"PYTHON_LIBRARIES :=boost_python3 python3.5m",直接去掉的話會報錯說找不到-lboost_python3。這裡我無法解釋原理,但是去/usr/lib/x86_64-linux-gnu/資料夾下面去找找,你會找到屬於python3的boost版本,可能是33,也可能是34。確定後,把makefile中的名稱換成相應名稱就可以了。3.5m的,我不瞭解為何要加m。修改後應該是:
PYTHON_LIBRARIES := boost_python-py34python3.5m

3. protobuf安裝

protobuf官方產品預設是不支援python3的,所以通過預設的apt-get命令安裝的libprotobuf和protobuf complier僅適用於python2系列。
而對於python3,以前支援python3的是民間組織搞的一個protobuf-py3,似乎是基於2.5的一個改貨。但是現在下不到了。試過pip3-protobuf,當時也不行。但是現在想來,我或許是之前裝過protobuf2.5沒解除安裝乾淨的關係,如果有興趣的話,倒是可以試試pip3的方式。不過我這裡還是建議手動安裝。
有人在帖子中說protobuf-3.0.0-alpha有問題,我試過也確實不行,但是當時嘗試的環境依然是protobuf2沒卸乾淨,所以到底alpha行不行,這裡說不好,不過我確定beta是可以的,所以我們直接去下載protobuf-3.0.0-beta-2。注意分別下載cpp和python兩個版本的。

解壓後
./configure --prefix=/path/protobuf    # 這裡指定的路徑可以是任意
make
make check
make install
然後配置路徑,將protobuf下的lib和include加入makefile.config,同時,protobuf要加入bashrc裡面。
export PATH=$PATH:/path/protobuf/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/protobuf/lib
然後protoc–version檢視版本是否正確。如果顯示的是protoc2.5.0,那是有問題的。我曾經執行apt-get installlibprotobuf-dev,後來又purge解除安裝,但是執行protoc --version後還是能看到2.5.0的資訊。如果是預設系統執行命令後會提示沒有protobuf,所以最好在安裝前先查一下。萬一有,怎麼幹淨的解除安裝,這個我真不清楚。
關於系統許可權問題
這裡講一下系統許可權的問題,初入手ubuntu很容易迷糊,username賬戶、sudo、su這是三個不同的東西。bashrc配置過的路徑僅針對username賬戶有效,怎麼樣能夠全域性有效?理論是是修改/etc/profile,但是實際測試過不太好用。sudo的許可權是不同於su賬戶的,所以下一步安裝python依賴我寧願用su也不要用sudo。理論上修改sudo的配置檔案/etc/sudoers就能夠達到不清除使用者賬戶環境配置的效果,但是實測無效。
然後是pip,系統關聯anaconda3之後,預設pip是anaconda的pip,但是如果你執行sudo pip的話執行的是系統預設python2的pip,這些地方一定要注意。所以後面很多路徑配置後,執行sudo命令會提示找不到這個那個,原因是在做環境變數配置時僅針對當前使用者做了配置。
另外有網優提到過,在caffemake的時候不要用sudo,不然後面會把部分檔案加入許可權限制,導致在make pycaffe的時候出問題。
解壓protobuf的Python版本,進入目錄後
cd Documents/pyprotobuf/protobuf-3.0.0-beta-2/python
python setup.py build
python setup.py test
python setup.py install
最後一步需要sudo或者su許可權。我們還是把su也配置好anaconda,然後進入su賬戶執行安裝。這裡一定要注意python的版本問題,如果裝了anaconda3,那麼username賬戶下面python進去後是3.5.1,這時一定要注意,測試下su賬戶下python進去後是什麼,如果不修改su的bashrc,那麼直接python進去的是2.7.6。可以直接從username下的bashrc中把anaconda的路徑配置copy過去。
安裝完python的protobuf後,進入python進行測試:
Import google.protobuf
from google.protobuf.internal importenum_type_wrapper

3. hdf5

python2/3下照常安裝就好,應該沒什麼太大問題。
sudo apt-get install libhdf5-serial-dev
anaconda自己自帶hdf5,不需要安裝,但是需要注意配置。在makefileconfig中,要把anaconda的lib和include加入路徑配置當中,所以在make的時候,會依照該配置尋找anaconda中的動態連結庫檔案libhdf5.so.10,但是系統找不到,怎麼辦呢?這裡有兩種解決辦法。
一種是在bashrc中加入anaconda的lib路徑:
LD_LIBRARY_PATH=home/zero/anaconda3/lib:$LD_LIBRARY_PATH
exportLD_LIBRARY_PATH
但是這樣會引發別的問題,make時,opencv方面會報錯,
undefined reference [email protected]_4.0'
按照晉倪的文章,這就需要手動安裝opencv,並在配置時設定加上-DBUILD_TIFF=ON
但是我嫌麻煩,所以開闢新路徑。
第二種方式就是對hdf本身動手腳,一種辦法是在/usr/lib/x86_64-linux-gnu
資料夾下面找,看有libhdf5.so.x幾,就把它連結為10,然後make時就找到啦。比如
sudo ln -s libhdf5.so.7 libhdf5.so.10
但是這不就是狸貓換太子?有網友說照著這個做,報錯說libhdf5版本不對。所以可能9換7可以,10換8就不行。然後有個哥們比較逗的是,直接把so檔案複製到/usr/lib/x86_64-linux-gnu資料夾下面,我試了下:
sudo cp libhdf5_hl.so.10/usr/lib/x86_64-linux-gnu/
sudo cp libhdf5.so.10/usr/lib/x86_64-linux-gnu/
然後,似乎是可以的。

4. opencv

python2的我直接就禁用opencv了,所以有興趣可以自己試試看。當時也是報錯
undefined reference [email protected]_4.0'
可能對於python2/3,真的要手動安裝。
對於anaconda,直接照常安裝就行了。
sudo apt-get install libopencv-dev

5.其他

sudo apt-get install libleveldb-devlibsnappy-dev 
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-devlibgoogle-glog-dev liblmdb-dev
這些似乎都不會出太大問題。

6. 安裝python依賴庫

anaconda使用者可以跳過此步,這一步僅針對原生python而言。
首先安裝一些必備的編譯器:
sudo apt-get install gcc-gfortran.x86_64
sudo apt-get install gfortran
然後安裝pip(針對python2):
sudo apt-get install python-pip
或者(針對python3):
sudo apt-get install python3-pip
使用的時候是pip或者pip3,分別針對兩個版本的python。
然後執行caffe的python下面的requirements.txt中的模組安裝。
官網給出的命令:
for req in $(catrequirements.txt); do pip install $req; done
執行此命令需要su許可權,你可以先進入su賬戶,如果不用su而用sudo的話則命令改為:
for req in $(cat requirements.txt); do sudopip3 install $req; done
不過網上還是看到有人說不要用他的文件,自己一個一個裝比較好。確實在安裝過程中會有不能完全安裝而留意不到的情況,所以最好手動安裝,沒裝完一個看返回資訊是否是安裝成功。例如:
sudo pip3 install 'python-gflags>=2.0'
需要選擇版本的話記得加引號。

7. 安裝caffe及配置makefile檔案

先下載Caffe。github上下載好caffe庫:https://github.com/BVLC/caffe,複製到ubuntu下,解壓。然後按照官網說法修改config
cd /home/zero/Documents/caffe-master
cp Makefile.config.example Makefile.config
直接用gedit開啟
CPU_ONLY := 1 #這句要去掉comment。因為我們只用cpu
# USE_OPENCV := 0 #不用opencv的話也可以去掉,不過最好留著吧。我是在python2下面實在懶才去掉的。
PYTHON_INCLUDE := /usr/include/python2.7 \
              /usr/lib/python2.7/dist-packages/numpy/core/include
# 這兩句,如果是要用python3或者anaconda,一概去掉,如果是原生python2.7,下面的要改為/usr/local/lib/python2.7/dist-packages/numpy/core/include
ANACONDA_HOME := /home/zero/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include\
              $(ANACONDA_HOME)/include/python3.5m\
              $(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include\
# 注意是anaconda3,或者anaconda2,帶了數字的
PYTHON_LIBRARIES := boost_python-py34python3.5m
# 這句前面講過,boost版本的問題。
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib
# 預設就用上面的,anaconda就用下面的。
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/local/protobuf/include
LIBRARY_DIRS := $(PYTHON_LIB)/usr/local/lib /usr/lib /usr/local/protobuf/lib
# 注意後面手動添加了protobuf的庫。

8. make

在caffe根目錄下
make
make test
make runtest
make pycaffe
make pytest
如果測試都通過,那就沒問題了。注意配置檔案裡面有一個
WITH_PYTHON_LAYER := 1
如果這句的註釋去掉就不能pytest了。記得googlegroup上有人這麼說過。

9. 配置環境變數:

export PATH=$PATH:/usr/local/protobuf/bin
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib
這兩句是配置protobuf的,手動安裝3beta2之後,要新增這兩句,不然系統找不到你安裝的protobuf。如果是2系列的不需要執行這一步。
# added by Anaconda34.0.0
installer
exportPATH="/home/zero/anaconda3/bin:$PATH"
上面這個是安裝anaconda3的時候自動新增的,如果在問你要不要新增時你直接回車no了,那回頭自己添上這一句。否則python進去的還是系統自帶的python2。前面提到過,晉倪的文章中說建議
LD_LIBRARY_PATH=home/zero/anaconda3/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
說如果不加就會進不去系統。我沒遇到進不去系統的情況。反而是加了這兩句會導致opencv的報錯。
exportPYTHONPATH=/home/zero/Documents/caffe-master/python:$PYTHONPATH
最後這句是caffe的配置,有人居然說可以配置為caffe/build/python,嚴重誤導了我……

10. 驗證

最後還是需要仔細驗證一下,不然可能空歡喜一場
python進去後
import caffe
如果不報錯也別急著高興
from caffe import layers as L
如果這句也不報錯,那應該是不會有問題了。
萬一第一句成功了結果第二句沒成功,可能是路徑配錯了,用dir(caffe)看看caffe都有些啥。我第一次海市蜃樓的時候只有
['__doc__', '__loader__', '__name__','__package__', '__path__', '__spec__']。說明是有問題的。
最後
雖然自己極盡所能想要做到沒有遺漏,但是由於caffe安裝過程本身重複了太多次,每次錯誤都不同,我沒有時間一一記錄和呈現。萬一有所疏漏,請及時指出。
關於參考資料,看了太多的博文,沒辦法一一列出,而且根本系統、環境的不同,操作方法也有太多的不一樣。這裡要感謝google user group上面的兩位網友,針對我的問題他們直接給出了很好的建議。

相關推薦

Caffe安裝筆記Caffe安裝過程

下面開始正題,caffe的安裝過程。因為出問題很多,所以實際上我是嘗試了python2和python3兩種python的介面。下面一併放出來。 1. 安裝build-essential sudo apt-get install build-essential這個是一些基本的

nginx筆記nginx 安裝和基本應用

支持 開發 路徑名 ip地址 led 3rd acs 必須 www lvs FWM及持久連接.note模塊類型:核心模塊:core module標準模塊:Standard HTTP modules 標準模塊Optional HTTP modules 可選模塊Mail mo

Caffe學習筆記()使用Python生成caffe所需的lmdb檔案和txt列表清單檔案

轉載請註明作者和出處: http://blog.csdn.net/c406495762 Python版本:Python2.7 執行平臺:Ubuntu14.04 最後修改時間:2017.4.20     在上個筆記中,已經學會了如何使用Caffe利用作者

[caffe筆記001]caffe依賴庫安裝(非root)

[========] 1. caffe介紹 caffe是一個訓練卷積神經網路的工具,其能夠非常好的支援CNN,最新版本整合了RNN。caffe提供python和matlab的藉口,能夠簡單有效地進行程式設計和使用。 2. caffe安裝 2.

Caffe學習筆記2Windows下安裝和搭建caffe框架

小菜在這裡要感謝實習老師張xx,是他的無私奉獻。他把他之前安裝和搭建caffe框架的過程全部記錄下來了寫成文件了,小菜是按照他caffe學習筆記一步一步安裝的,讓小菜少走了許多彎路,不過小菜在安裝的額

Docker學習筆記Docker的安裝

ros -h bionic docker customer tex 鏈接 space 版本 安裝環境:操作系統:Ubuntu 18.04 LTS,code name:bionic (#lsb_release -a)內核版本:4.15.0-29-generic(#uname

caffe】在windows平臺中安裝caffe(一)基礎安裝及簡單測試

基礎配置 本文中的配置:win10 + vs2015 + python2.5 + cmake3.12 + git2.15 + CUDA8.0 + cuDNN-8.0-5 在進行windows下的caffe安裝前,一定要把以上的這些軟體安裝好,並加入系統路徑中。

從零開始學caffe(八)Caffe在Windows環境下GPU版本的安裝

之前我們已經安裝過caffe的CPU版本,但是在MNIST手寫數字識別中,我們發現caffe的CPU版本執行速度較慢,訓練效率不高。因此,在這裡我們安裝了caffe的GPU版本,並使用GPU版本的caffe同樣對手寫MNIST數字集進行訓練。 step1: 安裝CUDA

Caffe學習系列(21)caffe圖形化操作工具digits的安裝與執行

經過前面一系列的學習,我們基本上學會了如何在linux下執行caffe程式,也學會了如何用python介面進行資料及引數的視覺化。 也許有人會覺得比較複雜。確實,對於一個使用慣了windows視窗操作的使用者來說,各種命令就要了人命,甚至會非常抵觸命令操作。沒有學過python,要自己去用python程

樹莓派學習筆記軟體包安裝

上一篇我們完成了 樹莓派ubuntu映象的燒錄和ROS的安裝,這一篇我們來講一下到底需要裝哪些軟體包 軟體1:vim(根據個人習慣) sudo apt-get install vim 軟體2:bo

LINUX UBUNTU系統學習筆記mysql資料庫的安裝

今天沒事,先來安裝個MySQL試試: 我是通過apt-get方式安裝的,sudo apt-get install mysql-server; 搞定,後面兩次確認就可以了 mysql可以正常啟動,可是在我重啟伺服器之後:開啟mysql服務,嘗試連線mysql時: ERROR

LAMP環境部署Apache源碼安裝+MySQL進制安裝+PHP源碼安裝+Nginx源碼安裝

aca org 依賴 關系 -a 創建 mbstring 環境部署 user Apache 版本:2.2.27 MySQL 版本:5.5.54-linux2.6-x86_64PHP 版本:5.3.27一、源碼安裝Apache1、首先安裝上傳工具2、上傳LAM

Maven安裝配置外掛下載

Eclipse安裝maven外掛   關於這個話題,估計已經是老生常談了,但是博主還是決定自己寫篇文章記錄下。      eclipse安裝maven外掛,在網上有各種各樣的方法,博主使用過的也不止一種,但是留下的印象總是時好時不好,同樣的方法

Kali學習筆記29預設安裝漏洞

文章的格式也許不是很好看,也沒有什麼合理的順序 完全是想到什麼寫一些什麼,但各個方面都涵蓋到了 能耐下心看的朋友歡迎一起學習,大牛和槓精們請繞道   早期Windows預設自動開啟很多服務 很多的黑客就會利用這些漏洞輕易獲取System許可權 在Linux和Windows系統中都會有很多

mysql 安裝問題mysqld: Can't create directory 'E:\Software\mysql-5.7.24-winx64\data\' (Errcode: 2 - No such file or directory)

原因:my.ini檔案中的basedir(設定mysql的安裝目錄)、datadir(設定mysql資料庫的資料的存放目錄)與MySQL解壓後的路徑不一致   解決辦法:   將basedir=E:\Software\mysql-5.7.24-winx64  改為&nbs

Kali筆記Kali安裝報錯解決

放棄了很久的Kali,最近又重新撿起來,這次已經沒有什麼明確的目的了,只是為了興趣。 準備的基礎環境是VMware Workstation 15 Player Kali是2018年4月更新的,已經都是最新的軟體了,下載好就開始進行了安裝。 硬碟引導,載入映象,下一步安裝,常規的方法順利的進行

gitlab安裝筆記_Centos7配置163yum源

進入配置目錄 cd  /etc/yum.repos.d 壓縮備份原有的配置 sudo tar cvf  base.tar.gz   *.repo 可以解壓檢視備份 sudo tar xvf base.tar.gz 刪除原有  .r

nanopi NEO2 學習筆記 3python安裝第三方GPIO

編譯 spa 修改 neo spi 分享 install 是個 選擇 如果我要用python控制NEO2的各種引腳,i2c 或 spi ,RPi.GPIO模塊是個非常好的選擇 這個第三方模塊是來自樹莓派的,好像友善之臂的工程師稍作修改移植到了NEO2上,就放在 /root/

Caffe學習筆記1linux下建立自己的資料庫訓練和測試caffe中已有網路

本文是基於薛開宇 《學習筆記3:基於自己的資料訓練和測試“caffeNet”》基礎上,從頭到尾把實驗跑了一遍~對該文中不清楚的地方做了更正和說明。 主要工作如下: 1、下載圖片建立資料庫 2、將圖片轉化為256*256的lmdb格式 3、計算影象均值 4、定義網路修改部分引

實踐caffe環境配置以及使用ssd-caffe訓練自己的資料集

1:環境配置 首先,我們把專案程式碼clone下來, 然後編譯: git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd 檢視有沒有安裝opencv pkg-co