IT実験のブログ

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

Ubuntu18.04でTensorflowを使って、3種類のナッツの画像を識別する

前回で画像認識ができるようになりましたので、今回は、3種類のナッツの画像を識別してみたいと思います。

ヘーゼルナッツ、アーモンド、くるみの3種類のナッツの画像をそれぞれ54枚 iPhoneで撮影して用意しました。 54枚中の50枚を訓練用の画像にして、4枚をテスト用の画像にします。 iPhoneからMacへの転送はAirDropを使いました。

f:id:itlab7:20200226220917p:plain

こちらはテスト用の画像ですが、HEICという形式になっていますので、jpg形式に変換しないといけません。 iOS11から画像のファイル形式がHEIC形式になっているようです。高画質のままjgp形式の半分くらいのサイズとなるようです。

www.apowersoft.jp

変換にはこちらのサイトを利用させていただきました。

変換できたら、VirtualBoxUbuntuにコピーするのは、GuestAdditionsを入れて設定していますので、ドラッグ&ドロップでできます。

f:id:itlab7:20200227205226p:plain

~/AI/image_retraining/nuts ディレクトリを作成し、その中にtrain, test ディレクトリを作成します。

f:id:itlab7:20200227205459p:plain

f:id:itlab7:20200227205520p:plain

f:id:itlab7:20200227205539p:plain

f:id:itlab7:20200227205600p:plain

そして、train ディレクトリの中に、almond, hazel, kurumi ディレクトリを作成し、それぞれのディレクトリの中にjpgファイルを入れました。

f:id:itlab7:20200227205705p:plain

それから、testディレクトリの中にはテスト用の画像を入れました。

ここまで出来たら訓練用の画像の準備は完了ですので、下のコマンドで訓練します。

cd ~/AI/hub/examples/image_retraining
python3 retrain.py --image_dir=${HOME}/AI/image_retraining/nuts/train

f:id:itlab7:20200227210007p:plain

10分くらいで、訓練完了しました。

f:id:itlab7:20200227210138p:plain

/tmp ディレクトリに幾つかのファイルが生成されています。

下のコマンドでtestディレクトリに保存した画像の認識処理を実行します。

cd ~/AI/tensorflow
bazel-bin/tensorflow/examples/label_image/label_image \
  --image=${HOME}/AI/image_retraining/nuts/test/IMG_0638.jpg \
  --input_layer=Placeholder \
  --output_layer=final_result \
  --graph=/tmp/output_graph.pb \
  --labels=/tmp/output_labels.txt

f:id:itlab7:20200227210903p:plain

f:id:itlab7:20200227211040p:plain

99%の確率でくるみと判定されましたので、認識成功です。

他の画像もインプットして試してみます。

f:id:itlab7:20200227211440p:plain

f:id:itlab7:20200227211504p:plain

ヘーゼルナッツも認識できました。

f:id:itlab7:20200227211726p:plain

f:id:itlab7:20200227211805p:plain

アーモンドも99%で認識成功です。

訓練用の画像とテスト用の画像が似てるからか、思ったより上手く認識できましたので、/tmp ディレクトリに生成されたファイル群は ~/AI/image_retraining/nuts/checkpoint ディレクトリにコピーしておきます。

f:id:itlab7:20200227212635p:plain

f:id:itlab7:20200227213727p:plain

f:id:itlab7:20200227213757p:plain

このくるみの画像は91%でくるみと判定されました。 アーモンドの確率7.6%となっています。確かに形がくるみの割にアーモンド型になっていますね。 testディレクトリにある12枚の画像のうちこの画像だけが91%での判定となり、残り11枚は全て99%の確率で正しく認識できていました。

何かに応用できそうな技術ですね。

今回はここまでです。