今回は、TensorlFlow の OpenPoseのサンプルプログラムでモーションキャプチャをやってみます。
こんにちは cedro です。
モーションキャプチャってご存知ですか。モーションキャプチャとは、人物や物体の動きをデジタル的に記録する技術です。
以前は、写真の様にマーカーを取り付けた専用スーツを着て複数のカメラで撮影し、三角測量の原理でそれぞれのマーカーまでの距離を計算することで、位置と姿勢を記録していました。
その後、マーカースーツを着なくても専用の3Dカメラで撮影することによって出来る様になり、昨年には、普通のカメラ映像からディープラーニングを使ってモーションキャプチャができるところまで進歩しています。
今回は、こないだ MacbookAir にインストールした TensorlFlow を使って、OpenPoseのサンプルプログラムで、モーションキャプチャをやってみます。
サンプルプログラムの準備
Github からプログラムをダウンロードします。
1 2 3 |
pip install -r requirements.txt |
tf-pose-estimation フォルダーに移動し、ライブラリをインストールします。
1 2 3 |
conda install swig |
続けて、swig をインストールします。
1 2 3 4 |
cd tf_pose/pafprocess swig -python -c++ pafprocess.i && python3 setup.py build_ext --inplace |
tf_pose/parfprocess フォルダーに移動し、C++のライブラリーをビルドします。
1 2 3 |
python setup.py install |
tf-pose-estimation フォルダーに戻り、パッケージをインストールします。
1 2 3 4 |
cd models/graph/cmu bash download.sh |
models/graph/cmu フォルダーに移動し、モデルファイルをダウンロードします。
1 2 3 |
python run.py --model=mobilenet_thin --resize=432x368 --image=./images/p2.jpg |
tf-pose-estimation フォルダーに戻り、上記コマンドでサンプル画像のモーションキャプチャを実行します。
見事に2人の人物のモーションキャプチャができていますね。
1 2 3 |
python run_webcam.py --model=mobilenet_thin --resize=432x368 --camera=0 |
そして、上記コマンドを入力すると、MacbookAir の内蔵カメラで、リアルタイムのモーションキャプチャができます。
かなりカクカクしますが、なんとCPUだけで、リアルタイムモーションキャプチャができてしまいます。凄い!
色々やってみます
1 2 3 4 5 6 7 |
fig = plt.figure() a = fig.add_subplot(2, 2, 1) a.set_title('Result') plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) cv2.imwrite('./pic.jpg', image) ### 画像を保存 |
そうすると、こんな感じで画像を保存できる様になります。それでは、色々やってみます。
メッシ!
オグシオ!
パフューム!
アン・シネ!
女子高生のダンスグループ!
最後に、Kayaの恋ダンス を静止画で切り出してモーションキャプチャし、GIF動画にしてみました。
では、また。