Deep Learning - 学習済みモデルをPC上で動かす
前回、以下のからあげさんのチュートリアルに沿って、Google Colaboratoryにて
クラウド上で画像認識の学習、推論を行いました。
今回は学習したモデルをダウンロードし、ローカルPC上で推論を行いました。
からあげさんのチュートリアルはMac用に記載されていましたが、私の環境はWindowsなので、Windows版の確認方法をまとめます。
環境構築
以下のリンク先の方法に従ってAnacondaをインストールします。
OS:Windows 10 Home (64bit)
Python 3.5
Anaconda 4.2.0
このサイトでTensorflowはPython3.5にしか対応していないという記述があったので、Anaconda 4.2.0, Python 3.5をインストールしたのですが、Python3.6でも動作するようです。
Anacondaインストール後、Anacondaプロンプトを起動
必要なライブラリをインストール
$ pip install tensorflow
$ pip install keras
$ pip install opencv-python
$ conda install Pillow
pip listコマンドで確認すると、バージョンは以下の通り
tensorflow 1.12.0
keras 2.2.4
opencv-python 4.0.0.21
学習済みモデルを上書き
からあげさんのチュートリアルの中のリンクから入手できるkeras-piをダウンロードし、zipファイルを解凍します。
解凍したkeras-pi-master内のmodelディレクトリの中に自分で学習して作成したモデルデータ、ラベル、重みデータを上書きします。
(学習済みデータはGoogle Colaboratoryからダウンロード)
今回学習したモデルは「犬」、「猫」、「カメラ」の3クラスを分類するモデルです。
テスト用画像の推論
任意の画像を学習済みモデルに入力し、推論を行います。
Anacondaプロンプトからpred.pyを実行します。テスト画像はこちら。
結果は以下のようになりました。正しくカメラと識別できています。
PCのWebカメラの映像でリアルタイム識別
Webカメラの映像を学習済みモデルに入力し、推論を行います。
Anacondaプロンプトからinspect_camera.pyを実行します。
こちらのカメラと同じものをWebカメラの前にかざしてみます。
結果は以下のように、カメラの画像を入力しているものの「dog」と誤認識されています。
まとめ、感想
今回は「犬」、「猫」、「カメラ」の3クラス識別モデルで試してみました。
Webカメラの画像で推論をさせると別の物体が映り込んだり、照明の当たり方が悪くなるなどの影響から正しく識別できませんでした。「犬」、「猫」、「カメラ」以外の物体を割り当てる「その他」のクラスも設けないといけないのだと思います。
また、学習用の教師データはネットから拾ってきた画像なので、あらゆる方向から見たカメラの画像があるわけではないし、1枚に複数のカメラが映っていたり、商品カタログのカメラの画像であればの文字が含まれていたりと、教師データとして不適切なものもあります。
このため、実際に識別させる上では精度が上がらかったのだと考えています。
やはり、ネットからの画像収集だけでは限界があり、データ集めが一番重要だと再認識しました。
しかし、画像認識を行うための一通りの流れは理解できたと思っています。
学んだ手法を応用して、他の物体を識別するモデルをいつか作ってみたいですね。