ディープラーニングの環境を構築しよう ④ppnを実際に動かしてみた
前回の記事の続きで、README要約の以下3点をやっていきます。
>2.既に学習したモデルがありますので、必要な方はダウンロードしてください。
>3.色々パラメーラを設定するには、「config.ini」をいじる必要があります。
>4.「video.py」で、作者のデモを体験できるようです。
2は前回の記事で書く予定でしたが、書き忘れてました。。
READMEより、以下のURLから、学習済モデルをダウンロードしましょう。
そうすると、Githubにアクセスするので、「result.zip」をダウンロードしてください。
気づいた方がおられたかもしれませんが、前回の写真中に「result」フォルダがいたのは、この人です。
次は3の「config.ini」です。
ここはモデルを学習させるためのパラメータや、読み込ませるデータセットのパスを指定するところです。
なので、まずppnを動かしてみたいというだけであれば、特に設定する必要はありません。
また学習を実施するときに、説明は譲ることにします。
(ただし、まともに学習させると数日PC回す必要があるので、真面目にやるかどうかは未定)
では、いよいよ4の「video.py」でppnを動かしてみたいと思います。
諸事情あって、dockerのLinux上ではまだ動かせてません。。
上手く動かせたらまた記事書きます。もう少し勉強させてください。。
なので、ひとまずは使い慣れたWindowsとcondaを使って、video.pyを動かしてみます。
まずはconda環境の設定についてです。
Anaconda3をインストールしましょう。
以下のダウンロードページから、Download→Windows→Python 3.7 versionの順でダウンロードし、インストールしてください。
また、Visual Studio 2017もインストールしましょう。
このページの「Download community」でダウンロードし、インストールしてください。
インストール画面起動時、どのツールをインストールするか聞かれますので、「.Net環境」と「Python」はインストールしてください。その他は任意でどうぞ。
インストールが終わったら、「Anaconda Prompt」というターミナルを開きます。
開いたら、以下のように、作業フォルダへ移動しましょう。前回までの記事でdockerにppnを置いているので、そこまでcdで移動します。
ではさっそく実行してみましょう。コマンドで、
python video.py result/resnet18_224x224_coco
「video.py」は、引数にモデルの保存場所(パス)を指定してあげる必要があります。
既に学習済のモデルがあるため、このパスを指定します。
そして実行すると、以下のようなエラーがきっと出てくると思います。
一番下のエラーコードの「No module named '~'」の「~」部分がchainer やcupy、
chainercvだったりすると思います。
これは、video.py中で、「~」のツールがインストールされてないよーというエラーになります。
なので、PC環境により異なる部分があるので、エラーが出た「~」を毎回インストールするトライアンドエラー方式でいつもやってます。
ちなみに私のPCの環境下で、追加でインストールしたコマンドは以下です。
pip install chainer
pip install cupy-cuda101
pip install -U numpy
pip install chainercv
pip install opencv-python
多少コマンドで紆余曲折するかもしれませんが、がんばりましょう!
私も上記のコマンド以外に、色々エラーに見舞われました。。
バージョンが合わないとかで再インストールしたりコマンド変えたり構成確認したり。。
何度目かの「python video.py result/resnet18_224x224_coco」を打ったら、ついに・・。
キター!ようやく動かせました!
カメラから私をリアルタイムで写し、私を認識すると、このカラフルな線や枠が、私に重ね合わせられるように表示されます。
写真は静止画ですが、実際はリアルタイムに動き続け、FPSの数字も動いてます。
仕組みをざっくり説明すると、
四角い枠:人間全体のサイズ感や、顔や肩などの特徴点を枠で囲ってます。
カラフルな線:鼻から目、首から肩まで等を線で結ぶことで、人の骨格をモデル化しています。
こういった特徴点の推定ができる理由として、2でダウンロードした学習済モデルがあります。
これはディープラーニングにより、大量のデータから人間の骨格情報を記録し、未知の画像・動画データに対して人間を予測しているのです。
(やっとディープラーニング要素でた!)
ちなみに、私のノートPCはカメラが内蔵されていますが、カメラモジュールがない人は、「video.py」を実行してもおそらくエラーになるかもしれません。
なので、このvideo.pyをもう少し改造すれば、例えば動画や写真データに対しても、骨格の検出ができると思います。
次回からは、これをベースに、さらに色々遊んでみたいと思います。