技術は使ってなんぼ

自分が得たものを誰かの役に立てたい

ディープラーニングの環境を構築しよう     ④ppnを実際に動かしてみた

前回の記事の続きで、README要約の以下3点をやっていきます。

 

>2.既に学習したモデルがありますので、必要な方はダウンロードしてください。

>3.色々パラメーラを設定するには、「config.ini」をいじる必要があります。

>4.「video.py」で、作者のデモを体験できるようです。

 

 2は前回の記事で書く予定でしたが、書き忘れてました。。

READMEより、以下のURLから、学習済モデルをダウンロードしましょう。

 

 

f:id:yonesuke0716:20190713092740p:plain

そうすると、Githubにアクセスするので、「result.zip」をダウンロードしてください。

 

気づいた方がおられたかもしれませんが、前回の写真中に「result」フォルダがいたのは、この人です。

 

次は3の「config.ini」です。

 

ここはモデルを学習させるためのパラメータや、読み込ませるデータセットのパスを指定するところです。

 

なので、まずppnを動かしてみたいというだけであれば、特に設定する必要はありません。

 

また学習を実施するときに、説明は譲ることにします。

 

(ただし、まともに学習させると数日PC回す必要があるので、真面目にやるかどうかは未定)

 

では、いよいよ4の「video.py」でppnを動かしてみたいと思います。

 諸事情あって、dockerのLinux上ではまだ動かせてません。。

上手く動かせたらまた記事書きます。もう少し勉強させてください。。

 

なので、ひとまずは使い慣れたWindowsとcondaを使って、video.pyを動かしてみます。

 

 まずはconda環境の設定についてです。

 

Anaconda3をインストールしましょう。

以下のダウンロードページから、Download→WindowsPython 3.7 versionの順でダウンロードし、インストールしてください。

 

www.anaconda.com

 

 また、Visual Studio 2017もインストールしましょう。

 

docs.microsoft.com

 

このページの「Download community」でダウンロードし、インストールしてください。

インストール画面起動時、どのツールをインストールするか聞かれますので、「.Net環境」と「Python」はインストールしてください。その他は任意でどうぞ。

 

インストールが終わったら、「Anaconda Prompt」というターミナルを開きます。

 

開いたら、以下のように、作業フォルダへ移動しましょう。前回までの記事でdockerにppnを置いているので、そこまでcdで移動します。

 

f:id:yonesuke0716:20190713091407p:plain

 

ではさっそく実行してみましょう。コマンドで、

 

python video.py result/resnet18_224x224_coco

 

「video.py」は、引数にモデルの保存場所(パス)を指定してあげる必要があります。

 

既に学習済のモデルがあるため、このパスを指定します。

 

 そして実行すると、以下のようなエラーがきっと出てくると思います。

f:id:yonesuke0716:20190713090240p:plain

 

 一番下のエラーコードの「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」を打ったら、ついに・・。

 

f:id:yonesuke0716:20190713104534p:plain

 

キター!ようやく動かせました!

 

カメラから私をリアルタイムで写し、私を認識すると、このカラフルな線や枠が、私に重ね合わせられるように表示されます。

 

写真は静止画ですが、実際はリアルタイムに動き続け、FPSの数字も動いてます。

 

仕組みをざっくり説明すると、

 

四角い枠:人間全体のサイズ感や、顔や肩などの特徴点を枠で囲ってます。

カラフルな線:鼻から目、首から肩まで等を線で結ぶことで、人の骨格をモデル化しています。

 

こういった特徴点の推定ができる理由として、2でダウンロードした学習済モデルがあります。

 

これはディープラーニングにより、大量のデータから人間の骨格情報を記録し、未知の画像・動画データに対して人間を予測しているのです。

(やっとディープラーニング要素でた!)

 

ちなみに、私のノートPCはカメラが内蔵されていますが、カメラモジュールがない人は、「video.py」を実行してもおそらくエラーになるかもしれません。

 

なので、このvideo.pyをもう少し改造すれば、例えば動画や写真データに対しても、骨格の検出ができると思います。

 

次回からは、これをベースに、さらに色々遊んでみたいと思います。

 

ソースコードをいじったり、video.py以外にもソースコードはあるので、ここらへんを探っていきたいと思います。