ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

AlexNetのファインチューニング

2018-06-11 00:17:21 | AI・BigData
大変だったので、メモ





■前提
・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

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする