IT実験のブログ

IT関連のツールの使い方など

Tensorflowのinceptionという画像認識のexampleを試す(訓練処理まで)

今回は、inceptionという画像認識のexampleを試してみます。 これは一枚の写真をインプットにして、何が写っているかを識別するものです。

データをダウンロードしてデータセット作成、モデルの訓練、認識処理実行という流れで進めていきます。 モデルの訓練には大きなCPUパワーが必要となりますので、効果がどれくらいあるのか不明ですが、VirtualBoxの設定でUbuntuで使えるプロセッサー数を増やしておきます。

Ubuntuは一旦電源オフして、VirtualBoxマネージャーの設定画面で[システム]-[プロセッサー]を選択して、プロセッサー数をできるだけ増やしておきます。 f:id:itlab7:20200215113614p:plain OKを押して、Ubuntuを起動します。

端末で下のコマンドを実行し、inceptionのディレクトリに移動します。

cd ~/AI/models/research/inception

f:id:itlab7:20200213230300p:plain

このコマンドでflowersのデータをダウンロードするためのプログラムをビルドします。

bazel build //inception:download_and_preprocess_flowers

f:id:itlab7:20200214220013p:plain

f:id:itlab7:20200214220238p:plain ビルドできました。

ビルドしたプログラムを実行するにはcurlコマンドが必要みたいなので、インストールします。

sudo apt install curl

f:id:itlab7:20200214221134p:plain curlのインストールが完了しました。

また、pythonコマンドも必要みたいなので、インストールします。

sudo apt install python

f:id:itlab7:20200214223555p:plain pythonのインストールが完了しました。

このコマンドでflowersのデータをダウンロードするためのプログラムを実行します。

bazel-bin/inception/download_and_preprocess_flowers "/tmp/flowers-data/"

f:id:itlab7:20200214223828p:plain f:id:itlab7:20200214224111p:plain flowersのデータがダウンロードされて、データセットが作成されました。 flowerの画像が沢山入っています。

訓練に必要なデータが揃いましたので、モデルの訓練をしていきます。 まず、そのためのプログラムをビルドします。

bazel build //inception:flowers_train

f:id:itlab7:20200215115222p:plain ビルド成功しました。

モデルの訓練をするために、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

f:id:itlab7:20200215121328p:plain f:id:itlab7:20200215121601p:plain ベースのモデルがダウンロード、展開されました。

モデルの訓練をするためのプログラムを実行します。

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

f:id:itlab7:20200215124029p:plain 途中経過です。MacBookのファンがブンブン唸り始めました。 今まで聞いたことのない音量です。

f:id:itlab7:20200215124441p:plain Ubuntuのシステムモニターを見てみると、8つのCPUの使用率が高くなっています。 メモリも多く使っていて、スワップも起きているようです。

f:id:itlab7:20200215124944p:plain そうこうしているうちにstep80まで進みました。 10stepあたり、1分15秒程度で進んでいるようです。

何stepまであるのか気になるので、調べてみます。

https://github.com/tensorflow/models/tree/master/research/inception

公式サイトのREADMEによると、2000stepまで訓練したモデルを使って評価処理をしているので、そのくらいまでかかりそうです。 10stepで約75秒だから、2000stepだと、約15000秒(4時間強)です。

まだまだかかりそうなので、今回はここで一旦終わります。 次回は続きからです。