LoginSignup
3
6

More than 5 years have passed since last update.

10行で画像の判別やってみる【TensorFlow】

Last updated at Posted at 2019-04-15

windowsです。anacondaです。
すべてDOS画面で完結します
pythonは開きません
ブラックホールとポンデリングを見分ける人がいて、これならできそうと感じたので、
やってみたかった画像認識に踏み出してみる

仮想環境の作成
まず現状の環境を確認
windowsのコマンドプロンプトから

conda info -e

デフォルトだとbaseがあるだけ
どうもkerasやtensolを入れようとするとエラーが起こる。
baseに悪影響を及ぼしたこともあるので仮想環境を作っておくほうがいい。
pythonを起動するたびにエラーが出る事もあった・・・

conda create -n IR python=3.7

IRという名前で仮想環境を作成

activate tensorflow

プロンプト画面でbaseからIRに切り替わるのが確認できる
IRという仮想環境に切り替わったことを確認してpip installを行う
(baseに戻るときはdeactivat)
(間違えて作って消したいときはconda remove -n IR --all)
(名前を確認したいときはconda info -e)

pip install tensorflow
pip install tensorflow_hub
pip install tensorboard

cd でディレクトリを移動する
認識したい画像が入っているフォルダまで移動
仮にフォルダ名「train」とする

C:\user\desktop> cd train
C:\user\desktop\train>

trainというフォルダーの中にはimagesというフォルダとtestというフォルダ、retrain.pyとlabel_image.pyのスクリプトを置く。
testには学習に使わない画像であり、判別したい画像を入れておく。仮に画像名をcat_test_01.pngというものを入れてあるとする。
スクリプトはここから。(ありがたい)

https://raw.githubusercontent.com/tensorflow/hub/master/examples/image_retraining/retrain.py
https://github.com/tensorflow/tensorflow/raw/master/tensorflow/examples/label_image/label_image.py

さらにimagesというフォルダの中に判別したい画像をフォルダわけして入れておく。
↓↓↓↓↓↓↓ あなたの記事の内容

───────

↑↑↑↑↑↑↑ 編集リクエストの内容

train
-images
-cat
|-cat01.png
-dog
|-dog02.png

プロンプトの画面から

python retrain.py --image_dir images --how_many_training_steps 1000

を実行
学習のステップ数が1000回
imagesはフォルダを指定

学習が終わってから
tensorboard --logdir /tmp/retrain_logs
を入力すると学習のステップが確認できる
交差誤差はプロンプトの画面でもどんどん減っていくのが見える
ステップを何回に増やすとうまくいくのか、
データが少ないときの回数など試してみたい

学習が終了した後、Cドライブ直下のtmpに
output_graph.pb
output_labels.txt
が出来ていた。
続いて以下のコマンドを打ち込む。
最後のpngでテストフォルダの中の画像を指定する。

python label_image.py --graph /tmp/output_graph.pb --labels /tmp/output_labels.txt --input_layer Placeholder --output_layer final_result --image "C:\Users\Desktop\train\tes\cat_test_01.png"

結果は

cat 0.90095603
dog 0.09904399

ネコである確率が90%です。という判断が出てくる。

今回はアニメキャラの顔画像が都合よくフォルダわけされているこちら

http://www.nurs.or.jp/~nagadomi/animeface-character-dataset/

のデータセットを使用させていただいたが、正確に判断できていた。

実際に判断出来ると感動する。
というか拾いものだけでこんなに簡単にできてしまう便利さに感動。

データセットは顔部分を切り取って、サイズを統一して、とやっているのできれいにできたが、写真を撮る(集める)・学習用に振り分ける、といった前処理が大変そう。
画像をデータセットでなく自分でやるときは便利そうな手法を知っていると楽になりそう。

あとは原理も理解していきたい。

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6