Tensorflowによる画像のクラス分類(3)ー判定編ー

 

Tensorflowによる画像のクラス分類(2)より続きます。

 

Tensorflowによる画像のクラス分類(1)ー画像収集編ー - パーソンの日記

Tensorflowによる画像のクラス分類(2)ー学習編ー - パーソンの日記

 

作成したプログラムはgithubに全て上げてあります。

github.com

 

3:判定

学習済みパラメーター、"./model4.ckpt"を読み込んで、実際の画像に対してクラス分類を行います。学習済みパラメーターの保存と読み込みには以下のリンクを参考にさせていただきました。

 

TensorFlow学習パラメータのsave, restoreでつまった - Qiita

 

作成したプログラムはeval.py です。

eval.pyの関数evaluationは画像のパスを受け取って、クラス分類の判定結果を出力します。

次に、app.py、upload.htmlを作成しました。

上の関数をapp.pyから呼び出します。flaskを利用しました。flaskはWebを手軽に構築できるフレームワークです。このflaskコードがWeb上のインターフェースを 形成します。flasコードで、ディレクトリtemplates内にあるupload.htmlを呼び出します。この部分はかなり駆け足での実装となってしまいました。flask、勉強します。以下のリンクを参考にしました。

 

Flask - ファイルのアップロード

 

Web上ではこんな感じに表示されます。シンプルです。ここで画像をアップロードしてもらうことで、画像にlatteが写っているかいないか判定します。latteが写っていたら、latte、そうでなかったら、otherと出力されます。Flaskかなり便利です。

 

f:id:wada0421514:20171124220133p:plain

 

 

以上、Tensorflowによる画像のクラス分類でした。latte君が画像に写っているかどうか判定しました。最終的な判定精度ですが、7割前後です。latteの画像に特別な変換を施していない。otherは完全にランダムな画像を用いているので、特徴量が捉えられない。などの理由が考えられます。画像の収集を工夫すれば、おそらくもっと精度が出るはずですが、今回の目的は、実際に自分でコードを書いて、ニューラルネットワークを体験することだったので、良しとします。時間があれば、精度向上に取り組みたいと思います。

 

次は、Pythonの復習をした後、Chainerに挑戦します。RNNを実装してみたいです。

 

アドバイス、改善点があったらお願いします。