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ごと削除されるので要注意。