nvidia docker Deel & CSLAIER - eiichiromomma/CVMLAB GitHub Wiki

(nvidia-docker) Deel & CSLAIER

はじめての深層学習(ディープラーニング)プログラミングで紹介されている2環境。両方入れる必要はないが同じ環境で使える。

Deep Learningを楽に扱えるフレームワーク(?)。 CSLAIERはchainerとTensorFlowのWebインターフェース。 DeelとCSLAIERはunixのコマンドを多用するのでWindowsは色々苦労する羽目になるのでUbuntuが良い。

nvidia-dockerの設定

とりあえずcuda:cudnn-develでnvidia-dockerコンテナを起動する。

sudo nvidia-docker run -it --name nv-deel -p 8000:8080 -v $HOME/dockermount/:/mnt nvidia/cuda:cudnn-devel /bin/bash

/etc/apt/sources.listのサーバーをjpに変更して以下のコマンドを実行。

apt update && apt upgrade -y && apt install -y python-pip python-dev libhdf5-dev sqlite3 nkf git liblapack-dev gfortran imagemagick wget git vim libgtk2.0-dev wget

pyenvを入れる

cd
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

.bash_profileに以下を追加

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

変更を反映

source .bash_profile

anacondaのインストール

pyenv install anaconda2-4.3.0

opencv 2.4.12のインストール

pyenv global anaconda2-4.3.0
conda install --channel https://conda.anaconda.org/menpo opencv3

Deel

chainerは1.17以下じゃないと動かない(20170216現在)

conda update pip
pip install --upgrade protobuf
pip install chainer==1.17.0
git clone https://github.com/uei/deel.git
cd deel/
python setup.py instal

Deelのテスト

Githubに出ているテストを動かしてみる。

cd data
./getCaltech101.sh
cd ../misc
./getPretrainedModels.sh
cd ..

test.jpgが無いと怒られるのでexamples/test.pyのtest.jpgをdeel.pngに書き換える。

CNN.Input("deel.png")

サンプルの実行

python examples/test.py

GPUを使うには

deel = Deel(gpu=0)

の宣言が必要らしい。ということでtrain.pyもDeel()のところをgpu=0にしてみる。

from deel import *
from deel.network.nin import *
from deel.commands import *

deel = Deel(gpu=0)
nin = NetworkInNetwork()
InputBatch(train="data/train.txt",val="data/test.txt")
def trainer(x,t):
    nin.classify(x)	
    return nin.backprop(t)
BatchTrain(trainer)

が、途中でコケる。chainerの1.18より上では解決している筈なのだがバージョンを上げても同じエラーが出るので原因は追ってない。

.pyenv/versions/anaconda2-4.3.0/lib/python2.7/site-packages/chainer/flag.pyc in aggregate_flags(flags)
    119     if on:
    120         if off:
--> 121             raise ValueError('ON and OFF flags cannot be mixed.')
    122         else:
    123             return ON

ValueError: ON and OFF flags cannot be mixed.

make_train_data.pyの改善

学習データを作るmake_train_data.pyがそのままだと大量の画像に対して機能しない(Linuxの問題)なので、一部変更する。

classNo=0
cnt = 0
#label = labels[classNo]
for label in labels:
        workdir = pwd+"/"+sys.argv[1]+"/"+label
        # imageFiles = cmd("ls "+workdir+"/*.jpg")
        imageFiles = cmd("echo " + workdir+"/*.jpg")
        # images = imageFiles.splitlines()
        images = imageFiles.split()
        print(label)
        labelsTxt.write(label+"\n")

のようにlsの出力ではなくechoの出力をsplitすれば良い。

CSLAIER

とりあえず簡単にchainerの学習ができるWebインターフェイスを入れる。

git clone https://github.com/SonyCSL/CSLAIER.git
cd CSLAIER
./setup.sh
pip install -r requirements.txt

でcslaier.cfgのHOSTを書き換える。

HOST='localhost'

をifconfigで調べたIPにする(ここでは172.17.0.2)

HOST='172.17.0.2'

とした後で

./run.sh

あとはホスト側で http://localhost:8000 にアクセスすれば良い

https://github.com/eiichiromomma/CVMLAB/blob/master/img/CSLAIER.png

https://github.com/eiichiromomma/CVMLAB/blob/master/img/CSLAIER2.png

注意点

データセットもフォルダのクラス名+その中の画像。という構成で使えるので便利だが,登録する際にPath指定で登録すると,CSLAIER上でデータセットをDeleteした時にそのPathごと削除されるので要注意。