大変だったので、メモ
■前提
・anacondaが入っているとする
・TensorFlowは1.5.0が入っているとする
■ダウンロード
Finetune AlexNet with Tensorflow
https://github.com/kratzert/finetune_alexnet_with_tensorflow
のClone or Downloadをクリックしてmダウンロード
■サンプル実行
解凍して出てきたファイル
validate_alexnet_on_imagenet.ipynb
を、Jupyter notebookで開き、実行する
■花を分類する。
〇サンプルデータ(お花のデータ)は、
17 Category Flower
http://www.robots.ox.ac.uk/~vgg/data/flowers/17/
の「Dataset images」
〇学習済みパラメータ(ファインチューニングは、もともと学習済みがある程度あり、
それの精度を上げる方法)は、上記のサイトの
All you need are the pretrained weights, which you can find here or convert yourself from the caffe library using caffe-to-tensorflow.
のhereにある。以下のところ
http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/
のDataset images から落としてくる
〇ほかにトレーニングデータと、推論するもののデータが必要
ファイル名 分類番号
の順に書く。こんなかんじ(jpgファイルは、上記のサンプルデータ)
./flowers/image_0001.jpg 0
./flowers/image_0002.jpg 0
./flowers/image_0003.jpg 0
./flowers/image_0004.jpg 0
(中略)
./flowers/image_1340.jpg 16
./flowers/image_1341.jpg 16
./flowers/image_1342.jpg 16
./flowers/image_1343.jpg 16
./flowers/image_1344.jpg 16
以下、トレーニングデータをtrain.txt、
推論する対象データをval.txtに入れたものとして
話を進める
filewriter_path = "./tensorboard"
checkpoint_path = "./checkpoints"
■修正箇所
これでfinetune.pyをpythonで実行すればいいが、その前に、
finetune.pyに以下の修正を行う(太字が修正箇所)
train_file = './train.txt'
val_file = './val.txt'
finetune.pyに、上記train.txt,val.txtを置いた場合
learning_rate = 0.0002
これくらいにしないと、後でエラーになる
num_classes = 17
上記イメージは17種ある
filewriter_path = "./tensorboard"
checkpoint_path = "./checkpoints"
チェックポイントをローカルに置く場合
■実行
anacondaで、プロンプトを出して
python finetune.py
を実行する。
■トラブルシューティング
〇ファイルが読めない
パスのどこかに日本語がある(ファイル名、パス名に日本語をつかっている)
パスは英語になるようにする
〇from datagenerator import ImageDataGeneratorでエラー
こんなかんじ
Tensorflowのバージョンが高すぎる。1.5.0とかに落とす
pip install tensorflow==1.5.0
〇2エポック目でNaNがどうとかこうとかのエラー
学習率が大きすぎる。上述のように
learning_rate = 0.0002
にする。
【参考】
Finetuning AlexNet with TensorFlow
https://kratzert.github.io/2017/02/24/finetuning-alexnet-with-tensorflow.html
■前提
・anacondaが入っているとする
・TensorFlowは1.5.0が入っているとする
■ダウンロード
Finetune AlexNet with Tensorflow
https://github.com/kratzert/finetune_alexnet_with_tensorflow
のClone or Downloadをクリックしてmダウンロード
■サンプル実行
解凍して出てきたファイル
validate_alexnet_on_imagenet.ipynb
を、Jupyter notebookで開き、実行する
■花を分類する。
〇サンプルデータ(お花のデータ)は、
17 Category Flower
http://www.robots.ox.ac.uk/~vgg/data/flowers/17/
の「Dataset images」
〇学習済みパラメータ(ファインチューニングは、もともと学習済みがある程度あり、
それの精度を上げる方法)は、上記のサイトの
All you need are the pretrained weights, which you can find here or convert yourself from the caffe library using caffe-to-tensorflow.
のhereにある。以下のところ
http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/
のDataset images から落としてくる
〇ほかにトレーニングデータと、推論するもののデータが必要
ファイル名 分類番号
の順に書く。こんなかんじ(jpgファイルは、上記のサンプルデータ)
./flowers/image_0001.jpg 0
./flowers/image_0002.jpg 0
./flowers/image_0003.jpg 0
./flowers/image_0004.jpg 0
(中略)
./flowers/image_1340.jpg 16
./flowers/image_1341.jpg 16
./flowers/image_1342.jpg 16
./flowers/image_1343.jpg 16
./flowers/image_1344.jpg 16
以下、トレーニングデータをtrain.txt、
推論する対象データをval.txtに入れたものとして
話を進める
filewriter_path = "./tensorboard"
checkpoint_path = "./checkpoints"
■修正箇所
これでfinetune.pyをpythonで実行すればいいが、その前に、
finetune.pyに以下の修正を行う(太字が修正箇所)
train_file = './train.txt'
val_file = './val.txt'
finetune.pyに、上記train.txt,val.txtを置いた場合
learning_rate = 0.0002
これくらいにしないと、後でエラーになる
num_classes = 17
上記イメージは17種ある
filewriter_path = "./tensorboard"
checkpoint_path = "./checkpoints"
チェックポイントをローカルに置く場合
■実行
anacondaで、プロンプトを出して
python finetune.py
を実行する。
■トラブルシューティング
〇ファイルが読めない
パスのどこかに日本語がある(ファイル名、パス名に日本語をつかっている)
パスは英語になるようにする
〇from datagenerator import ImageDataGeneratorでエラー
こんなかんじ
Tensorflowのバージョンが高すぎる。1.5.0とかに落とす
pip install tensorflow==1.5.0
〇2エポック目でNaNがどうとかこうとかのエラー
学習率が大きすぎる。上述のように
learning_rate = 0.0002
にする。
【参考】
Finetuning AlexNet with TensorFlow
https://kratzert.github.io/2017/02/24/finetuning-alexnet-with-tensorflow.html