TensorFlow Hubの画像分類チュートリアルをやってみたので、インストールから実行までを書いておきます。特に詰まることなく2時間ほどで終わりました。以前、転移学習をやったときにある程度苦労したので、少し拍子抜けするくらい簡単でした(チュートリアルだからですが・・・)。
TensorFlow Hubを使えば他人の作ったモデルを使って転移学習ができます。訓練に時間とリソースを使う機械学習・深層学習の世界では非常にありがたいです!少なくても最低限のことを理解しなくてはと思い、チュートリアルをしました。
環境
前提としてCURLとpyenvが入っているくらいでしょうか。pyenvインストールと設定については記事「UbuntuにpyenvとvenvでPython開発環境構築」を参照ください。
| 種類 | バージョン | 内容 |
|---|---|---|
| OS | Ubuntu18.04.01 LTS | 仮想で動かしています |
| pyenv | 1.2.9 | 複数Python環境を使うことがあるのでpyenv使っています |
手順
1. Python系環境準備
1.1. Python3.6インストール
TensorFlowがpython3.7で動かないという情報が多数あり、確認すると公式ガイドに下記の記載があるのでPython3.6をpyenv使ってインストール。
Requires Python 3.4, 3.5, or 3.6"
$ pyenv install 3.6.8
Pytho3.6をpyenvのグローバルに設定して確認。
$ pyenv global 3.6.8
$ python --version
Python 3.6.8
1.2. venv環境設定
py36という名前でvenv仮想環境作成し、有効化。
cd <directory>
python -m venv py36
source py36/bin/activate
pipを最新化。
pip install --upgrade pip
2. TensorFlow Hubインストール
2.1. TensorFlowとTensorFlow Hubインストール
公式ガイドに従ってTensorFlowとTensorFlow Hubをインストールして確認。TensorFlow1.13.1とTensorFlow Hub0.2.0がインストールされました。
pip install "tensorflow>=1.7.0"
pip install tensorflow-hub
pip freeze
3. 画像分類チュートリアル実行
独自のフォルダ作らずに画像分類チュートリアルどおりにやりました。
3.1. 画像ダウンロード
花画像をダウンロードして解凍します。
cd ~
curl -LO http://download.tensorflow.org/example_images/flower_photos.tgz
tar xzf flower_photos.tgz
※後で調べたのですが、自分のデータセットを使いたい場合は、フォルダごとに単一種類の画像があればいいようです。また、使用するプログラム内で画像サイズを調整してくれているので、画像サイズ事前調整は不要です。
3.2. 訓練プログラムダウンロード
Pythonの訓練プログラムをダウンロードします。
mkdir ~/example_code
cd ~/example_code
curl -LO https://github.com/tensorflow/hub/raw/master/examples/image_retraining/retrain.py
3.3. 訓練実行
Pythonプログラムを実行して、終わるまでだいたい30分くらいかかりました。このプログラムの中でTensorFlow Hubから訓練モデルをダウンロードして転移学習しています。
python retrain.py --image_dir ~/flower_photos
3.4. 実行結果の確認
TensorBoardを起動して実行結果を確認します。
tensorboard --logdir /tmp/retrain_logs
ブラウザでターミナルに表示された下記のURLを開きます。
http://ubuntu:6006/
最初からaccuracyとクロスエントロピーの値がそこそこいい感じなのは、転移学習ならではですね。
「Confusion Matrix(混合行列)があればいいのに」と思ったのですが、Tutorialのプログラムを複雑にしたくないという理由で実装していないようです。
このスレッドを参考に実装できるのかもしれません。

