Ubuntu系統---安裝Caffe (+OpenCV+Python+CPU-only)


安裝配置Ubuntu14.04+Caffe

(+OpenCV+Python+CPU-only) 記錄

【作者:Wu Ping。時間:20180428。】

本人已經安裝很多次的Caffe了:從開始的初探到出現問題的重新安裝,或者電腦系統重裝后的再次安裝,或者因為不同的電腦版本、不同的Ubuntu版本、軟件的不同安裝方式等等原因,每一次安裝都會有不同的“不順利經歷”,順次解決問題即可。雖然遇到的問題不盡相同,但是總體流程基本相同。

“安裝過程,因為平台不同、設備不同、操作者不同,會遇到各種奇怪的問題和報錯信息,請善用Caffe官網的Issues和caffe-user論壇,以及Google和Baidu。參考本指南,請下載最新版caffe-master,新版本很多文件已經變更。”

一、目錄

(1)Linux系統:Ubuntu 14.04 (64位)【這里安裝教程略】

(2)安裝開發所需要的一些基本包及安裝caffe依賴項

(3)安裝ATLAS for Ubuntu

(4)安裝OpenCV

(5)編譯Caffe

(6)測試Caffe是否安裝成功

(7)配置Pycaffe

(8)測試Pycaffe接口是否配置成功

 

二、安裝包准備(下載)

(1)Ubuntu 14.04下載網址:http://www.ubuntu.com/download/desktop

(2)OpenCV下載地址:1官網上下載https://opencv.org/releases.html 。2從sourceforge上http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.10/opencv-2.4.10.zip

(3) Caffe下載地址:https://github.com/BVLC/caffe

 

三、開始安裝【圖文說明】

1Linux系統:Ubuntu 14.04 64位)【略】

 

 

 

2)安裝開發所需要的一些基本包及安裝caffe依賴項。

首先,安裝開發所需要的一些基本包:sudo apt-get install build-essential。如果出現essential包不可用的情況,可以執行下列命令解決:sudo apt-get update。

接着,安裝其他依賴項Ubuntu14.04用戶執行: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencvdev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdbdev protobuf-compiler

如果后面安裝caffe出現“沒有什么文件或者找不到什么目錄”:make all。則sudo apt-get update,再繼續單獨執行找不到的那個相應文件。比如:

# sudo apt-get install libatlas-base-dev

# sudo apt-get install libprotobuf-dev

# sudo apt-get install libleveldb-dev

# sudo apt-get install libsnappy-dev

 

3)安裝ATLAS for Ubuntu

執行命令:sudo apt-get install libatlas-base-dev。注:ATLAS, MKL,或OpenBLAS都可以,我這里選擇安裝ATLAS。安裝atlas簡單易行。

 

4)安裝OpenCV

第一種方法(之前成功安裝,這次安裝沒成功,不知道何因):這個盡量不要手動安裝, Github上有人已經寫好了完整的安裝腳本:

https://github.com/jayrambhia/Install-OpenCV。下載該腳本,解壓".zip"文件,

1安裝2.4.10 (推薦):https://gist.github.com/bearpaw/c38ef18ec45ba6548ec0

1. 下載安裝腳本 https://github.com/bearpaw/Install-OpenCV

2. 進入目錄: Install-OpenCV/Ubuntu/2.4

進行Ubuntu/2.4目錄,對所有腳本增加可執行權限:sudo chmod +x *.sh

3. 安裝依賴項: # Install-OpenCV/Ubuntu

# sh ./dependencies.sh

4. 執行腳本 sh /2.4/opencv2_4_10.sh 或者 sh /2.4/opencv2_4_9.sh

即一:

$ git clone https://github.com/bearpaw/Install-OpenCV

$ cd Install-OpenCV/Ubuntu/2.4

$ sh ./opencv2_4_10.sh


   編譯過程很慢,中間我還報過一次錯,不得不重新來了一次。如果覺得難度不夠的話,可以選擇官網的安裝包:http://opencv.org/,我這里是根據大神編譯過的版本進行安裝的。

 

即二:

# cd caffe

# sudo git clone https://github.com/jayrambhia/Install-OpenCV

# cd Install-OpenCV/Ubuntu

# sudo sh dependencies.sh

# cd 2.4

# sudo sh opencv2_4_10.sh

 

2安裝2.4.9(不推薦)

這塊兒時間比較長,保證網絡連接,需要聯網下載安裝包,大概三十分鍾,記不清了。。

 

第二種方法(手動安裝,這次成功了。)詳見附《ubuntu14.04中安裝opencv2.4.10

 

5)編譯Caffe

 上述基本環境准備好后,下載:https://github.com/BVLC/caffe后,進入caffe目錄,復制一份Makefile.config 命令:cp Makefile.config.example Makefile.config。

然后,根據自己環境修改相應內容:

   1 取消 CPU_ONLY := 1前面的注釋。

   2. cuda 安裝路徑改為自己的路徑 : CUDA_DIR := /usr/local/cuda-6.5

   3. 配置路徑:實現caffe對python和matlab接口的支持。

這里僅僅在CPU下配置環境所以只修改 CPU_ONLY := 1。

接下來就可以編譯Caffe:

1,sudo make all -j2

2,sudo make test

3,sudo make runtest

Make all 后的截圖如下:

 

Make test后的截圖如下:

 

Make runtest后的截圖如下:

 

6)測試Caffe是否安裝成功

以mnist的為例,檢驗caffe是否裝成功,以下命令都在CAFFE根目錄下運行:

1.准備數據

sh ./data/mnist/get_mnist.sh

sh ./examples/mnist/create_mnist.sh

2.訓練模型:

sh ./examples/mnist/train_lenet.sh

需要修改sudo vi lenet_solver.prototxt 先進入命令模式,使用a進入編輯模式,修改完之后,使用esc退出編輯模式,進入末行模式,再使用“:wq”保存修改並退出(“:q!”為退出但不保存修改):

# solver mode: CPU or GPU

solver_mode: CPU

3.測試模型:

sh ./examples/mnist/test_lenet.sh

新建test_lenet.sh:

1. #!/usr/bin/env

2. "空行"

3.

./build/tools/caffe test model=examples/mnist/lenet_train_test.prototxt weights=examples/mnist/lenet_iter_10000.caffemodel iterations 100

 

7)配置Pycaffe

第一步:安裝Python-caffe接口的依賴包。

第一種方法(直接執行安裝requirement里面的包,沒成功)。確保前面的:1,sudo make all -j2;2,sudo make test;3,sudo make runtest等不出錯,如果某一行報錯之后想要重試,建議先make clean再重新開始。更新安裝依賴。

cd caffe 

cat python/requirements.txt | xargs -L 1 sudo pip install 

確定使用的是anaconda提供的python環境,然后進入caffe/python, 執行下列命令,

確保pip已經安裝

sudo apt-get install python-pip

for req in $(cat requirements.txt); do pip install $req; done  #python運行需要的庫。 

再次回到caffe根目錄我們可以執行:

在caffe根目錄的python文件夾下,有一個requirements.txt的清單文件,上面列出了需要的依賴庫,按照這個清單安裝就可以了。

在安裝scipy庫的時候,需要fortran編譯器(gfortran),如果沒有這個編譯器就會報錯,因此,我們可以先安裝一下。

回到caffe的根目錄,然后執行安裝代碼:

cd ~/caffe

sudo apt-get install gfortran

cd ./python

for req in $(cat requirements.txt); do pip install $req; done

安裝完成以后,再次回到caffe根目錄我們可以執行:

sudo pip install -r python/requirements.txt

就會看到,安裝成功的,都會顯示Requirement already satisfied, 沒有安裝成功的,會繼續安裝。

 

第二種方法(直接安裝,這次成功)。按照Requirement.txt里面的手動安裝,執行如下命令: 

sudo apt-get install Cython python-numpy python-scipy python-skimage python-matplotlib ipython python-h5py python-leveldb python-networkx python-nose python-pandas python-gflags python-protobuf python-gflags python-yaml 

sudo apt-get install python-sklearn  protobuf-c-compiler protobuf-compiler

make pycaffe 出現問題如下:

 

 

因為存在低版本的,所以總是報錯,本人預想卸載低版本的后再升級,而后通過下方法也可以實現:

sudo pip install six --upgrade --target="/usr/lib/python2.7/dist-packages" 
類似的:
sudo pip install leveldb --upgrade --target="/usr/lib/python2.7/dist-packages"
 

第二步:加入PythonPath

             第一種方法:添加~/caffe/python到$PYTHONPATH。

$ gedit ~/.bashrc    #vim 或者gedit,打開bashrc 

           export PYTHONPATH=/home/usrname/caffe/python:$PYTHONPATH   #添加到文件最后,本人是export PYTHONPATH=/home/wp/caffe/python:$PYTHONPATH。

$ source ~/.bashrc    #使更改生效。這樣,在其他地方打開python,也可以import caffe了。

 

第二種方法:添加~/caffe/python到$PYTHONPATH。

$ sudo gedit /etc/profile

用sudo,只用gedit /etc/profile修改后無法保存

# 末尾添加: export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

我的是:export PYTHONPATH=/home/wp/CAFEE/caffemaster/python:$PYTHONPATH

#export PYTHONPATH=自己caffe文件夾下的python路徑,一定要是自己的路徑!!!

# 用完整路徑,不要用~

$ source /etc/profile    #使之生效

 

8)測試Pycaffe接口是否配置成功

編譯python接口:$  make pycaffe -j8

 

 

 

度娘,有說這么就是配置好了,也有說這么不是配置好的,是依賴項沒有裝全。本人記得之前配置過,貌似也不是這樣子的,幾經五六次的重新【配置加解決問題都是這樣的結果,無可奈何不影響用就行了,繼續。

 

運行python,進入caffe/python ,運行

$ python2.7

Python 2.7.12 (default, Jul  1 2016, 15:12:24)

[GCC 5.4.0 20160609] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import caffe

>>>

 

測試1,任意路徑下執行:

[code]$ python

Python 2.7.6 (default, Jun 22 2015, 17:58:13)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import caffe

>>> 

 

測試2:

wp@ubuntu:~$ ipython

Python 2.7.6 (default, Oct 26 2016, 20:30:19)

Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.

? -> Introduction and overview of IPython's features.

%quickref -> Quick reference.

help -> Python's own help system.

object? -> Details about 'object', use 'object??' for extra details.

In [1]: import caffe

In [2]:

輸入python,如果顯示如紅框所示,說明當前python是系統默認的python。 說明剛才添加的環境變量沒有起作用,需要用命令激活:source .bashrc 如果顯示如藍框所示,說明當前python用的是Anaconda里的python。安裝成功!例如結果:

 

 

附錄:

具體地,在ubuntu14.04中安裝opencv2.4.10

安裝索引:

第一部分---安裝

1. 下載源碼2.4.10

2. 解壓 $unzip opencv-2.4.10.zip

3. 創建release目錄

   $cd opencv-2.4.9

   $mkdir release

4. 裝依賴包(網查教程)

5. 進release文件夾

   $cd release

6. 編譯安裝(耗時有點長哦)

   $cmake

   $make all

   $make install

第二部分---測試是否安裝成功

1. 建立一個test.cpp文件

2. 寫一個cmake的makefile(CMakeLists.txt)

3. 編譯+運行+例子測試

上述可參考https://blog.csdn.net/wb4916/article/details/54021717。

具體實現圖文過程:

1. 先下載OpenCV的源碼。從sourceforge上 http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.10/opencv-2.4.10.zip 。或者官網上下載https://opencv.org/releases.html

 

2. 解壓到任意目錄。

終端命令$ unzip opencv-2.4.10.zip,或者直接提取。

 

3. 進入源碼目錄,創建release目錄

$ cd opencv-2.4.10

$ mkdir release

 

4. 可以看到在OpenCV目錄下,有個CMakeLists.txt文件,需要事先安裝一些軟件

$ sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev

 

5. 進入release目錄,安裝OpenCV是所有的文件都會被放到這個release目錄下

$ cd release

 

6. cmake編譯OpenCV源碼,安裝所有的lib文件都會被安裝到/usr/local目錄下

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

 

檢查一下:wp@wp-ms-7519:~/opencv-2.4.10/release$ cmake --version

cmake version 2.8.12.2

 

7. 安裝

$ sudo make install

 

8. 測試,在某個目錄下建立一個test.cpp文件

#include <cv.h>

#include <highgui.h>

using namespace cv;

int main(int argc, char* argv[])

{

    Mat image;

    image = imread(argv[1], 1);

 

    if (argc != 2 || !image.data)

    {

        printf("No image data\n");

        return -1;

    }

 

    namedWindow("Display Image", CV_WINDOW_AUTOSIZE);

    imshow("Display Image", image);

    waitKey(0);

    return 0;

}

 

9. 寫一個cmake的makefile,也叫CMakeLists.txt

project(test)

find_package(OpenCV REQUIRED)

add_executable(test test)

target_link_libraries(test ${OpenCV_LIBS})

cmake_minimum_required(VERSION 2.8)

 

10. 編譯+運行

(請注意camke的后面還有一個點)

cmake .

make

 

這樣就得到了一個可執行文件test。

 

11.  找一張xx.jpg圖片做個測試,注意要和上面那個test可執行文件放在同一目錄下面,這里名字取的是test.jpg。

 

12.  在可執行文件下執行$ ./test test.jpg。 如果能看到照片,那就表示成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM