今回は、inceptionという画像認識のexampleを試してみます。 これは一枚の写真をインプットにして、何が写っているかを識別するものです。
データをダウンロードしてデータセット作成、モデルの訓練、認識処理実行という流れで進めていきます。 モデルの訓練には大きなCPUパワーが必要となりますので、効果がどれくらいあるのか不明ですが、VirtualBoxの設定でUbuntuで使えるプロセッサー数を増やしておきます。
Ubuntuは一旦電源オフして、VirtualBoxマネージャーの設定画面で[システム]-[プロセッサー]を選択して、プロセッサー数をできるだけ増やしておきます。 OKを押して、Ubuntuを起動します。
端末で下のコマンドを実行し、inceptionのディレクトリに移動します。
cd ~/AI/models/research/inception
このコマンドでflowersのデータをダウンロードするためのプログラムをビルドします。
bazel build //inception:download_and_preprocess_flowers
ビルドできました。
ビルドしたプログラムを実行するにはcurlコマンドが必要みたいなので、インストールします。
sudo apt install curl
curlのインストールが完了しました。
また、pythonコマンドも必要みたいなので、インストールします。
sudo apt install python
pythonのインストールが完了しました。
このコマンドでflowersのデータをダウンロードするためのプログラムを実行します。
bazel-bin/inception/download_and_preprocess_flowers "/tmp/flowers-data/"
flowersのデータがダウンロードされて、データセットが作成されました。 flowerの画像が沢山入っています。
訓練に必要なデータが揃いましたので、モデルの訓練をしていきます。 まず、そのためのプログラムをビルドします。
bazel build //inception:flowers_train
ビルド成功しました。
モデルの訓練をするために、Inception v3 model というベースのモデルが必要なのでダウンロードします。 下記のコマンドを一つずつ端末で実行します。
mkdir -p ${HOME}/AI/inception-v3-model
cd ${HOME}/AI/inception-v3-model
curl -O http://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gz
tar xzf inception-v3-2016-03-01.tar.gz
ベースのモデルがダウンロード、展開されました。
モデルの訓練をするためのプログラムを実行します。
cd ~/AI/models/research/inception
bazel-bin/inception/flowers_train \ --train_dir="/tmp/flowers_train/" \ --data_dir="/tmp/flowers-data/" \ --pretrained_model_checkpoint_path="${HOME}/AI/inception-v3-model/inception-v3/model.ckpt-157585" \ --fine_tune=True \ --initial_learning_rate=0.001 \ --input_queue_memory_factor=1
途中経過です。MacBookのファンがブンブン唸り始めました。 今まで聞いたことのない音量です。
Ubuntuのシステムモニターを見てみると、8つのCPUの使用率が高くなっています。 メモリも多く使っていて、スワップも起きているようです。
そうこうしているうちにstep80まで進みました。 10stepあたり、1分15秒程度で進んでいるようです。
何stepまであるのか気になるので、調べてみます。
https://github.com/tensorflow/models/tree/master/research/inception
公式サイトのREADMEによると、2000stepまで訓練したモデルを使って評価処理をしているので、そのくらいまでかかりそうです。 10stepで約75秒だから、2000stepだと、約15000秒(4時間強)です。
まだまだかかりそうなので、今回はここで一旦終わります。 次回は続きからです。