概要
前回のブログではアノテーションについてお話ししました。次はこのブログの本命機械学習の準備について話を進めていきます。
機械学習
機械学習とは
簡単に言うと機械にデータを学習させて、そのデータのパターンや特徴を見つけさせることです。
それではなぜ機械学習を使う必要があるのか、
例として犬かどうかを判別するプログラムを作る場合で説明します。
例えばこのような犬の画像があり、この画像が犬かどうか判別したい場合、通常のプログラムではこの画像は犬とあらかじめ登録するでしょう。
しかし、その場合だとたとえ同じ犬でも他の画像を使うと犬として判別されません。
ましてやこの画像を登録すれば解決と思いますが、また新しい画像が出てきた度に追加登録しなければなりません。それじゃあどうすればいいのか。そのヒントは我々にあります。まず疑問に思うのが我々はどうやって犬かどうか判別しているのか、それは犬の特徴で覚えているのです。このような感じの鼻、目、足の長さは犬など人間が特徴を覚えて、それで判断をします。
しかし、普通のプログラムでは難しいそこで機械学習です。機械学習ならデータから自ら特徴やパターンを検出し、判別するようにできます。しかも、特徴で画像を覚えてるので今まで見たことのない画像でも検出できるようになります。
注意点
機械学習は学習で物事を覚えますなのでどれだけ学習をしても間違える場合もあります。人間と同じで間違えも犯します。なので、機械学習は完全などないと理解しておいてください。
物体検出
トッピング識別には物体検出を使います。物体検出とは画像の中から物体の位置とその物体は何なのか検出することです。アノテーションはその逆で物体の位置とその物体が何なのか教えていますね。
参考にするリポジトリ
今回のブログは https://github.com/pierluigiferrari/ssd_keras
を参考にコードを作ります。
学習に使うモデル(機械学習の構造)はSSDです。
SSDについて詳しく知りたい方こちらを参照してみてください。
https://qiita.com/YutoHagiwara/items/4b66442ff1e09936f1d0
環境構築
必要な環境は以下のようになります。
- python3
- pip
- tensorflow 1.14.*
- Keras
- opencv
- matplotlib
- numpy
- h5py
- jupyterlab
windows10で行う方法を紹介していきます。
python3
python3は以下のリンクからダウンロードしインストールができます。
https://www.python.org/downloads/windows/
pip
python3 にはすでにありますが、windowsの場合コマンドラインにPATHが通ってないのでpathを通せば解決です。
以下を参考にしてください。
https://karupoimou.hatenablog.com/entry/2019/04/29/064646
tensorflow
参考にしたブログはtensorflow1.* 使っているため最新である1.14をインストールする。
pip install tensorflow==1.14
GPUがある人はできればtensorflow-gpuをインストールすることをおすすめします。
以下を参考にしてください。
https://www.tensorflow.org/install/gpu
kerasとそのほかのライブラリ
kerasなどのライブラリはすべてpip installで行えます。
最後に
いよいよ学習させるためのコードを準備する段階です。
このブログの最後に行ったテストがうまく作動しなかったら、ライブラリがちゃんと入れてあるかチェックしてみてください。tensorflow-gpuを使ってる人は問題が出てくるかもしれません。
その場合は下記のリンクに載っているかもしれないのでぜひ参考にしてください。
https://github.com/pierluigiferrari/ssd_keras/issues