安裝配置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 。
三、開始安裝【圖文說明】
(1)Linux系統: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。 如果能看到照片,那就表示成功。

