Docker
DockerならNvidiaのドライバーさえ入っていれば、CUDA等をインストールしなくてもGPU版のtensorflow等が使えるようになる。
* インスタンス内ではディレクトリは共有されない。明示的にマウントする必要あり
* -p 8888:8888でポート変換できる
* コンテナ内にインストールするにはDockerfileを用いてインストール済み環境を生成する。
Dockerfileの生成
FROM tensorflow/tensorflow:latest-gpu
RUN apt-get update \
&& apt-get install -y wget fish\
&& rm -rf /var/lib/apt/lists/*
イメージ生成
$ nvidia-docker build .
最後に出てくる文字列がイメージ名になる
$ nvidia-docker run -v $HOME/github/models/:/foo -p 8888:8888 -it b74de41c2d27 fish
nvidia-docker run -v $HOME/github/models/:/foo -it 2f246b82e8f7 fish
DeepLab v3
Python2で動かすこと。⑽⌒
Python3だとtestBuildDeepLabWithDensePredictionCell
でエラーが出る。
* checkpoints, which is a format dependent on the code that created the model.
* SavedModel, which is a format independent of the code that created the model.
チェックポイントのネットワークと学習するネットワークは形を合わせる。
"deeplab/core/feature_extractor.py"にサポートするネットワーク名が載っている
cd /foo/research/
set -x PYTHONPATH :(pwd):(pwd)/slim $PYTHONPATH
公式のFAQが転移学習時のパラメータ設定方法とか説明してあって非常に親切
https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/faq.md
データセットの内訳
- train.txt:ネットワークのパラメタ(重み)を学習するデータ
- val(trainval).txt :学習時に定期的にテストし、過学習を起こしていないかチェックするデータ
- test(val).txt :本番テスト用データ
# データセットのダウンロード
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
TensorFlow
# パラメータの追加.argparseに似ている.
FLAGS = tf.app.flags.FLAGS
# FLAGSにパラメータが追加される.このメンバ変数は,別のスクリプトでもグローバルに共有される.
tf.app.flags.DEFINE_enum('image_format', 'png', ['jpg', 'jpeg', 'png'],
'Image format.')
tfのsaverでモデルをリストアするときは,
model.ckpt
or
model.ckpt-15000.data-00000-of-00001
model.ckpt-15000.index
model.ckpt-15000.meta
があるときは
demo.ckpt-15000
と,meta等の前までのファイル名を指定
*.pb
: フリーズした重み付きモデル.プロトコルバッファファイル.