ハードウェア技術者のスキルアップ日誌

某家電メーカーの技術者がスキルアップのために勉強したことを記録するブログです

Caffeの環境構築(Windows)

仕事でCaffeを使うことになり、環境構築をやってみたのですが、非常に苦労したため、次に同じことにならないように手順を残しておきます。

Windows上への構築をやろうとしたのですが、Caffe windowsブランチのリンクが切れているようだし、Visual studio2015も有料になっているようなのでLinuxの仮想環境上にインストールしました。

動作環境

OS:Windows10
Virtual box:6.0.6 - Ubuntu 16.04
 ⇒ ここにCPU版のCaffeをインストールする

インストール手順

・Virtual boxをダウンロードしてUbuntuを導入

①以下からVirtual boxをダウンロードしてインストール
https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp

②以下のサイトを参考にUbuntu16.04をインストールhttps://qiita.com/pyon_kiti_jp/items/0be8ac17439abf418e48

Ubuntu16.04の仮想ディスクは以下からダウンロード
http://releases.ubuntu.com/16.04/

Ubuntuのストレージ容量は40GB以上必要

 

ここからUbuntu16.04上での操作 
-----------------------------------------------------------------------------------------

・pyenv+Anacondaをインストールし、環境を新規に作成

①システムのアップデート

$ sudo apt-get update && sudo apt-get upgrade

 
②pyenvをインストール

$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev libpng-dev
$ sudo apt-get install git
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc


③anacondaをインストール

$ pyenv install anaconda3-5.2.0
$ pyenv global anaconda3-5.2.0
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.2.0/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

※anacondaのバージョンは新しすぎるとcaffeのmakeがうまくいかなかったので、
バージョンを指定する 


④anaconda環境を新規に構築

$ conda create -n py36 python=3.6
$ source activate base
$ conda remove curl
$ conda remove libcurl
$ conda deactivate
$ source activate py36

 

Opencvのインストール

Opencv-3.4.1/Opencv_contrib-3.4.1をダウンロード

$ mkdir ~/opencv
$ cd ~/opencv
$ wget -O opencv-3.4.1.tar.gz https://github.com/opencv/opencv/archive/3.4.1.tar.gz $ tar zxvf opencv-3.4.1.tar.gz $ rm opencv-3.4.1.tar.gz $ wget -O opencv_contrib-3.4.1.tar.gz https://github.com/opencv/opencv_contrib/archive/3.4.1.tar.gz $ tar zxvf opencv_contrib-3.4.1.tar.gz $ rm opencv_contrib-3.4.1.tar.gz

※opencv_contribは不要かもしれないが、念のためインストールした


②必要なライブラリをインストール

$ sudo apt install -y python python-pip python3-pip python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose python-tk python-yaml
$ sudo apt install -y build-essential cmake git pkg-config libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libhdf5-dev wget emacs vim gedit sudo
$ sudo apt install -y --no-install-recommends libboost-all-dev


Opencv-3.4.1のmake/install

$ cd opencv-3.4.1
$ mkdir build
$ cd build
$ cmake .. -DWITH_GTK=NO -DWITH_CUDA=ON -DWITH_CUBLAS=1
$ make -B -j12 all
$ sudo make install

※かなり時間がかかるので気長に待つ 


④.bashrcにPATH追加

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

 

・Caffeのmake/install

GithubからCaffeをダウンロード

$ git clone https://github.com/BVLC/caffe.gitb


②必要なライブラリのインストール

$ pip install —-upgrade pip
$ pip install opencv-python scikit-image protobuf easydict cython


③caffeディレクトリの中のMakefile.config.exampleをコピーしてMakefile.configと
リネームする(変更点は以下の通り)

# CPU-only switch (uncomment to build without GPU support).
# 有効にする CPU_ONLY := 1 # Uncomment if you're using OpenCV 3
# 有効にする OPENCV_VERSION := 3
# コメントアウト #PYTHON_INCLUDE := /usr/include/python2.7 \ # /usr/lib/python2.7/dist-packages/numpy/core/include
# ANACONDA_HOMEを有効にする ANACONDA_HOME := $(HOME)/.pyenv/versions/anaconda3-5.2.0 # PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ # $(ANACONDA_HOME)/include/python2.7 \ # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include # Uncomment to use Python 3 (default is Python 2)
# 以下のように修正 PYTHON_LIBRARIES := boost_python-py35 python3.5m PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/lib \ $(ANACONDA_HOME)/include/python3.6m \ $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include # We need to be able to find libpythonX.X.so or .dylib.
# ANACONDAのライブラリを使用する #PYTHON_LIB := /usr/lib PYTHON_LIB := $(ANACONDA_HOME)/lib # Uncomment to support layers written in Python (will link against Python libs) # 有効にする
WITH_PYTHON_LAYER := 1 # Whatever else you find you need goes here.
# 以下のように修正 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

 

④.bashrcにPATHを追加

$ export LD_LIBRARY_PATH="~/.pyenv/versions/anaconda3-5.2.0/lib:$LD_LIBRARY_PATH"

 

⑤caffeをmake

$ make all -j8 # C++版
$ make pycaffe # python版

 

⑥.bashrcにPATHを追加

$ export PYTHONPATH=~/caffe/python:$PYTHONPATH

※これでpython上でcaffeをimportできるようになる

Python 3.6.6 |Anaconda, Inc.| (default, Oct 9 2018, 12:34:16) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
>>>

 

⑦Caffeのインストール

$ sudo make DISTRIBUTE_DIR=/usr/local/caffe distribute
$ cd /usr/local/caffe/bin
$ for fn in *.bin; do sudo ln -s ${fn} `basename ${fn} .bin` ; done
$ cd 「git clone した caffe ディレクトリ」
$ sudo cp -r data docs docker examples matlab models scripts src tools /usr/local/caffe

 

⑧.bashrcに以下のPATHを追加

export CAFFE_HOME=/usr/local/caffe
export PATH=${CAFFE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CAFFE_HOME}/lib:${LD_LIBRARY_PATH}
export PYTHONPATH=/home/cpbd/caffe/python:${CAFFE_HOME}/python:$PYTHONPATH

※これでcaffeのコマンドが使えるようになる

$ caffe --version
caffe version 1.0.0

 

補足

環境によって同じ手順でもcaffeのmake時に異なるエラーが発生したり、pythonの環境によってcaffeをimportするときにエラーが発生することがある。
その場合はググって対応策を調べながら試行錯誤する必要あり。

また、GPUを使う場合はMakefile.configの設定が異なるので修正してmakeする。

 

参考サイト

https://qiita.com/yoyoyo_/items/ed723a6e81c1f4046241

http://yusuke-ujitoko.hatenablog.com/entry/2016/06/19/203443

http://takatakamanbou.hatenablog.com/entry/2016/02/29/224000