OpenPoseで、複数人を同時にモーションキャプチャーしてみる

1.はじめに

 2018年12月に複数人のポーズ推定に関する論文が提案されました。今回は、その論文内容を実装したOpenPoseについてご紹介します。

 OpenPoseは、体、顔、手、足の推定のためのリアルタイムの複数人のキーポイント検出ライブラリで、今回は、これをGoogle ColabのGPUを使って動かしてみます。

2.OpenPoseの概要

 OpenPoseは、先に姿勢の推定の鍵となるキーポイントを抽出して,その後にキーポイントを人物ごとにマッチングさせるという考え方です.

 (a)Imput Image から 人のキーポイントを表す (b)Part Confidence Map とキーポイントとキーポイントの繋がりを表す (c)Part Affimity Fields を抽出します。そして、その繋がりを (d)Bipartite Matching でマッチングさせ、結果 (e)Parsing Results を出力します。

 つまり、一人一人を検出してから各人のキーポイントと繋がりを見つけて行くのではなく、キーポイントと繋がりだけを見つけてマッチングさせることで、高速な処理を実現しています。

 (b)Part Confidence Map と (c)Part Affimity Fields のネットワークは、

 Stageと呼ばれる単位で青色やベージュ色で囲まれた部分を重ねていきます。そして青色部分を4Stage,ベージュ色部分を2Stage重ねた形で実装しています。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンクをクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、各プロジェクトファイルからCMakeでOpenPoseをビルドします。

 インターネット環境にもよりますが、1時間弱くらい掛かりますので、別の事でもやりながら、のんびり待ちます。

 次に、ダウンロードするYoutube動画を指定します。

 Youtube動画の共有ボタンを押すと、下記の様な表示がされますので、YOUTUBE_ID赤枠内の共有コードを設定します。コードを実行すると、対象となるYoutubeビデオが確認できます。

 

 そして、指定したYoutube動画をダウンロードし、20秒に編集し content/video.mp4 に保存します。

 !ffmpeg -y -loglevel info -i youtube.mp4 -ss 00:03:13.0 -t 20 video.mp4 では、ビデオ開始から3分13秒後から20秒間を使用する指定をしています。

 content/video.mp4 からポーズ推定した動画を作成します。自分の用意した動画を使う場合は、content/video.mp4 を置き換えて下さい。

 

 最後に、Google colab のインラインにmp4ファイルを表示させます。

 凄い!これなら、Pose推定完璧じゃん!と思うのは気が早い。動画をコマ送りで見ると、結構外しています(笑)。

 検出精度に関しては、照明やスピードによる画像ブレなどは考慮すべきで、どんな状態でも完璧と言うわけではないです。

 では、また。

(参考)https://github.com/CMU-Perceptual-Computing-Lab/openpose

(Twitterへの投稿)

 新たな動画をTwitterへ投稿しました。

2 件のコメント

  • Cedro様

    お世話になります。いつも楽しく拝見しております。
    さて、小職も本サイトに記載されている方法にて、姿勢推定に挑戦しております。
    なにぶんAIやプログラミングについては何も知りませんので、丸写しで実行しているだけですが、
    いくつかは姿勢推定できております。

    本サイトのやり方でもYoutubeの動画については私でも他の動画で姿勢推定に成功しました。
    一方、自前の動画での姿勢推定については、

    「自分の用意した動画を使う場合は、content/video.mp4 を置き換えて下さい。」

    「content/video.mp4」これがどこにあるのかが分からず、頓挫しています。

    ColabのWindowの左に見えているフォルダ階層で、以下はみえていますが、content/video.mp4はどこにあるのでしょう?

    sample_data
    readme.md
    anscombe.json
    california_housing_test.csv
    california_housing_train.csv
    mnist_test.csv
    mnist_train_small.csv

    初歩的な質問かと思いますが、ご教示賜りたく、よろしくお願いいたします。

    • Siggyさん
      コメントありがとうございます。
      contentはルートディレクトリなので、単にvideo.mp4と書いてあるファイルを置き換えて貰えばOKです。
      ご連絡頂いたファイルリストは、sample_dataの中身ですね。
      今、自分でも再現してみましたが、スタートから左側のwindowを何も触らなければ、video.mp4が見えているはずです。
      もう一度確認してみて下さい。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

    ABOUTこの記事をかいた人

    アバター

    ディープラーニング・エンジニアを趣味でやってます。E資格ホルダー。 好きなものは、膨大な凡ショットから生まれる奇跡の1枚、右肩上がりのワクワク感、暑い国の新たな価値観、何もしない南の島、コード通りに動くチップ、完璧なハーモニー、仲間とのバンド演奏、数えきれない流れ星。