Caffe——環境安裝和配置(CPU)

1、介紹

Caffe,全稱Convolutional Architecture for Fast Feature Embedding,是一個兼具表達性、速度和思維模塊化的深度學習框架。由伯克利人工智能研究小組和伯克利視覺和學習中心開發。雖然其內核是用C++編寫的,但Caffe有Python和Matlab相關接口。Caffe支持多種類型的深度學習架構,面向圖像分類和圖像分割,還支持CNN、RCNN、LSTM和全連接神經網絡設計。Caffe支持基於GPU和CPU的加速計算內核庫,可以在CPU和GPU直接無縫切換,如NVIDIA cuDNN和Intel MKL。項目託管地址:https://github.com/BVLC/caffe.git

2、系統環境

  1. Ubuntu-18.04-LTS
  2. GCC-7.4.0

3、編譯依賴環境

(1)protobuffer(必須)
Google開發的結構化數據存儲格式,caffe中使用protobuffer作爲權值和模型參數的載體,負責將文件讀取到內存。
(2)opencv (必須)
caffe中使用opencv完成一些圖像的存取和預處理功能,使用OpenCV源碼編譯安裝。
(3)boost (必須)
擴展的C++標準庫,其中的智能指針是其特色。
(4)lmdb (必須)
內存映射行數據庫管理器。
(5)leveldb (必須)和 snappy (必須)
壓縮和解壓縮的C++庫,比zlib庫快。

4、安裝依賴

4.1 基本依賴(依據下面的命令將基本依賴庫安裝)

sudo apt-get install libsnappy-dev libhdf5-serial-dev libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libleveldb-dev (hdf5 lmdb leveldb snappy庫)
sudo apt-get install --no-install-recommends libboost-all-dev (安裝boost庫)
sudo apt-get install autoconf automake libtool curl make g++ unzip (輔助工具,可能會用到,可不安裝)

4.2 第三方庫安裝編譯

  1. protobuf編譯安裝
    (1)克隆源碼:git clone https://github.com/protocolbuffers/protobuf.git
    (2)下載依賴的第三方庫:
git init
git submodule update --init -recursive
cd [protobuf\_dir]
./autogen.sh
./configure --prefix=/opt/protobuf (指定安裝目錄)
make -j8
make check
sudo make install (protobuf安裝完成)
  1. opencv編譯安裝
    (1)下載源碼:https://opencv.org/releases/
    (2)安裝opencv依賴項和安裝步驟
依賴項:
apt-get install bison flex m4 build-essential libmpc-dev gcc gcc-multilib (gcc相關依賴和工具)
apt-get install libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev (opencv依賴庫)
apt-get install cmake git pkg-config

安裝步驟:
cd [opencv\_dir] (切換到opencv源碼頂層目錄)
mkdir build (創建build目錄,opencv的編譯是由cmake工具執行的)
cd build
cmake .. -DCMAKE\_BUILD\_TYPE=Release-DCMAKE\_INSTALL\_PREFIX=/opt/opencv  (指定編譯版本爲release版本,編譯好的opencv庫安裝在/opt/opencv目錄下)執行完上述命令後,cmake工具會執行依賴項檢查並同時聯網下載 ippicv\_2017u3\_lnx\_intel64\_general\_20170822.tgz文件
make -j8 (待上述文件下載完成之後)
sudo make install (opencv安裝完成)

5、caffe配置文件修改

5.1指定protoc版本

  1. 配置protoc工具搜尋路徑(protoc是.proto文件的編譯器,用於編譯caffe中定義的protobuf序列化協議文件)
  sudo vim /etc/profile
  export PATH=/opt/protobuf/bin:${PATH}  #protoc編譯器搜尋目錄
  export CPLUS\_INCLUDE\_PATH=/opt/protobuf/include:$CPLUS\_INCLUDE\_PATH#添加protoc工具頭文件搜索目錄
  export LD\_LIBRARY\_PATH=/opt/protobuf/lib:${LD\_LIBRARY\_PATH}#protoc編譯器動態鏈接庫搜索路徑
  source /etc/profile
  1. 若系統內有兩個版本以上的protoc,修改caffe下的Makefile文件,指定使用特定版本的protoc工具編譯
    1)進入目錄:
    cd [caffe_dir]
    2)打開caffe的Makefile文件
    sudo vim Makefile
    3)大約在Makefile的第649行,修改下面這兩句,改完後保存退出
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
和
$(Q)protoc --proto_path=src --python_out=python $<

改爲(==>):
$(Q)/opt/protobuf/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
和
$(Q)/opt/protobuf/bin/protoc --proto_path=src --python_out=python $<

5.2 在Makefile.config配置文件中修改下列3項

  1. 使用caffe的cpu模式:#CPU_ONLY := 1 將此處註釋去掉
  2. 配置opencv爲3版本:#OPENCV_VERSION := 3 將此處註釋去掉,否則編譯時會出現鏈接不上該庫錯誤
  3. 添加protobuf、opencv、hdf5這三個依賴的頭文件和庫搜索路徑
    在Makefile.config.example中找到含有下面字眼的位置
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

添加頭文件和庫搜索路徑:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /opt/protobuf/include /opt/opencv/include/opencv4  /usr/include/hdf5/serial #此處使用的是opencv4.2.0
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /opt/protobuf/lib /opt/opencv/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

5.3 更新caffe相關代碼

因爲使用OpenCV 4.*的版本,所以caffe中有些opencv的常量需要更新,在caffe框架源碼的頂層目錄下進行修改:
CV_LOAD_IMAGE_GRAYSCALE 爲 cv::ImreadModes::IMREAD_GRAYSCALE
CV_LOAD_IMAGE_COLOR 爲 cv::IMREAD_COLOR
替換命令如下:
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/layers/window_data_layer.cpp
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/util/io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/util/io.cpp
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/test/test_io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/test/test_io.cpp

6、執行編譯過程

1)進入caffe框架源碼的頂層目錄執行下面命令:

cd [caffe_dir]
mv Makefile.config.example Makefile.config
make -j8
sudo make test
make runtest -j8

2)編譯結束

7、編譯caffe的python接口(pycaffe)

7.1 安裝編譯python接口的各種依賴

  • 切換到caffe源碼頂層目錄,caffe下的命令執行必須在頂層目錄下,否則執行會出錯
cd caffe
  • 使用requirements.txt文件內指定的各種依賴庫安裝依賴
pip3 install -r python/requirements.txt

其中requirements.txt文件內容如下:

Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0

特別注意:
第三方庫protobuf編譯後的版本要與python中protobuf的版本一致,若不一致可以在編譯第三方庫protobuff時,進入python目錄下執行下面命令:

cd ./python
python setup.py build
python setup.py test
python setup.py install

7.2 編譯pycaffe

make pycaffe

7.3 把caffe的python接口路徑添加到搜索目錄

  • vim /etc/profile
    最後一行添加:
export PYTHONPATH=/caffe/python:$PYTHONPATH
  • source/etc/profile

7.4 導入pytcaffe測試

  • 進入python解釋器
  • 輸入:import caffe (沒有錯誤提示則安裝成功)
    eg:print(caffe.__version__)

8、注意事項

注意事項1: 若想caffe在命令行下使用,可以參考下面的兩種方式:

(1)將自己編譯的caffe可執行文件添加進環境變量中
(2)apt-get install caffe-tools-cpu

注意事項2: 將下面幾個庫在編譯caffe第5步前拷貝到/usr/local/lib/下:

libopencv_core.so.4.2.0

libopencv_imgcodecs.so.4.2.0

libopencv_imgproc.so.4.2.0

然後再sudo ldconfig即可。
注意事項3: 使用caffe/tools/extra/plot_training_log.py.example進行日誌可視化分析時出現ImportError: Matplotlib requires dateutil>=2.1;此時需要對python-dateutil進行升級,升級方式可以參考如下:

pip3 install --upgrade python-dateutil

注意事項4: 調用caffe/python/caffe/draw.py時,若出現pydotplus不存在等現象時;需要根據提示進行安裝,參考命令如下:

pip3 install pydotplus

注意事項5: 調用caffe/python/draw_net.py可視化決策樹時,若出現下面的提示:
pydotplus.graphviz.InvocationException: GraphViz’s executables not found
此時需要安裝graphviz,在Linux下安裝方式可參考命令:

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