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/
のデータセットを使用させていただいたが、正確に判断できていた。
実際に判断出来ると感動する。
というか拾いものだけでこんなに簡単にできてしまう便利さに感動。
データセットは顔部分を切り取って、サイズを統一して、とやっているのできれいにできたが、写真を撮る(集める)・学習用に振り分ける、といった前処理が大変そう。
画像をデータセットでなく自分でやるときは便利そうな手法を知っていると楽になりそう。
あとは原理も理解していきたい。