TensorFlowを使った画像認識(その1)

農作物(きゅうり)の画像から病名を判定する機械学習のアプリを作成することになりました。

「TensorFlow」「画像認識」等のキーワードで検索すると、サンプルアプリがいくつかヒットしたので、それほど難しいものではないのかな、と思いつつ、以下の点が心配でした。

1.ラベル(分類)が多い

今回作成するアプリは13種類(見つけたサンプルだと、多くても数種類)

2.画像の数が少ない

今回は手作業でネット上から画像を拾いました。そんなわけで数が少ないです。分類ごとに多くても4、50枚しか集められませんでした。

※アプリを実行する際、元の画像を回転した画像を使って数を増やしました。

結論から言うと、特に2の方(画像数と画像の精度)はかなり結果に影響するのではないかなと思います。

 

まずは環境構築から。

私はWindowsなので、

https://qiita.com/isaac-otao/items/cecfb3efb7d9ccddf922

このページを参照しました。特につまづいたところはありません。

さらに画像を加工するため、OpenCVもインストールしました。

続いて実装です。

http://kivantium.hateblo.jp/entry/2015/11/18/233834

こちらを参照しました。

Pythonのバージョン違いで何か所かエラーが出たのでその部分のみ修正しました。

で、とりあえず動くようになりました。

参照したコードでは、テスト結果は精度を表示するだけなのですが、今回は混同行列(Confusion Matrix)でまとめたかったため、以下のように修正しています。

・テスト画像に対して、各ラベル(分類)の確率を算出する

・確率の高い順にソートする

・一番高いものを採用する

実際のコードはこちらです。

実行すると、

例えばこのような結果が得られます。

あまり正解率は高くないですね。。。

ということで、正解率を上げるために試行錯誤してみるのでした。

続きます。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です