【AI体験】姿勢推定をやってみよう

何の記事??

よく AI 系のイベントや動画で見るあれを実際に自分で動かしてみようという記事です。

youtu.be

python の知識があると尚良いですが、今回は動かしてみることを目標とするのでコードの詳細はあまり解説しませんので、AI モデルを体験してみたい方は是非試してみてくださいね。

この記事の前提は、python3 が入っていることだけです。

詳細を知りたい方は・・・一緒に飲みに行って語り合いましょう笑

早速方法をみていきましょう!!


姿勢推定実行準備

■姿勢推定プログラムを持ってくる

まずは、ローカルにプログラムを持ってきましょう。github で公開されているので clone でローカルに持ってきましょう。

git clone https://github.com/ildoonet/tf-pose-estimation
■ライブラリのインストール

持ってきたフォルダに移動し requirements.txt をベースに必要なライブラリをインストールします。

cd tf-pose-estimation/
pip3 install -r requirements.txt

さて、ここで下のようなエラーに巡り合ってしまった方は「pip3 インストール 〇〇〇」で検索してもらうと基本的に pip3 install 〇〇〇 という解決方法が出てきます。

ModuleNotFoundError: No module named ○○○
■AI モデルのインストール

それではここで AI モデルをインストールしましょう。
まずは、swig というツールをインストールします。

brew install swig

スクリプトを実行して、とうとう AI モデルをインストールします。(少し時間がかかります)

cd models/graph/cmu
bash download.sh

ちなみにここで下記エラーがでた方は 「brew install wget」を実行してください。

download.sh: line 8: wget: command not found
download.sh: line 16: wget: command not found
■実行

まずは、用意されている ここでも ModuleNotFoundError: No module named 〇〇〇 が出てくるかもしれませんが、先ほど同様に「pip3 インストール 〇〇〇」で検索すると解決策が出てきますのでどんどん解決しちゃいましょう。

python3 run.py --model=mobilenet_thin --resize=432x368 --image=images/p1.jpg

ただし、下記エラーだけは少しわけが違いますので、解決策を記載します。

No module named '_pafprocess'
you need to build c++ library for pafprocess. See : https://github.com/ildoonet/tf-pose-estimation/tree/master/tf_pose/pafprocess
■pafprocess のエラー

まずディレクトリを移動します。
その後、下記コマンドで swig をインストールします。swig は C/C++ で書かれたライブラリを他言語で実行できるようにしてくれる素晴らしいライブラリです。

早速 swig を使って pafprocess をビルドしてあげます。

cd tf_pose/pafprocess
brew install swig
swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace

それでは、ディレクトリを戻ってすでにあるブログラムを実行してみましょう。

cd ../../
python3 run.py --model=mobilenet_thin --resize=432x368 --image=images/p1.jpg
実行結果

さて無事に実行されると、こんな感じの結果が出力されます!!

pose_estimation 実行結果
pose_estimation 実行結果

ボールを蹴ろうとしている人に対して骨格が確かに表示されていますね。

それにしても、ここは路上でしょうか?ガチなユニフォームとスパイクを履いてボールを蹴るべきではない気がします(笑)

先ほど実行したコマンドの -image= に画像のパスを指定してあげれば(先ほどは images/p1.jpg)他の画像で姿勢推定が可能になります。

おまけ

僕はこの画像でやってみました。
人は完璧に姿勢推定できていますね。一方の犬はやはり無理か・・・これは AI モデルを変更することで解決できる部分もあります。

実行結果
実行結果(老人と犬)


最後に

このように AI を自分で一から作らなくても利用することはできます
例えばこの姿勢推定のモデル自体は作れなくても、この姿勢推定の座標を取得して整体アプリに利用するとか、体を痛めない正しい筋トレアプリ、綺麗な歩き方診断なんかに転移できたらそれは立派なプロダクトだと思っています。

その場合は、おそらく分類のため AI モデルを作成する必要がありますが、そちらに集中することができます。(作ろうよという方 twitter で DM ください笑)

全て一から自分でつくることも大切かもしれませんが使えるものはどんどん使っていきたいですね。

AI やってみたいぞという方のモチベーションや勉強の息抜きになったならとても嬉しいです。

それではまた次回〜