1.はじめに
今回ご紹介するのは、複数人の姿勢推定を高速に行うE2Poseという技術です。
2.E2Poseとは?
E 2Poseの情報については、Githubに Fully Convolutional Networks for End-to-End Multi-Person Pose Estimation(エンドツーエンドの複数人の姿勢推定のための完全な畳み込みネットワーク)というタイトルでコードが公開されています。
しかしながら、論文は現在非公開になっています。論文が公開になり次第、内容を更新したいと思います。
3.コード
コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。
まず、セットアップを行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#@title **Setup** # check GPU !nvidia-smi -L # copy code from github !git clone https://github.com/cedro3/E2Pose.git ./E2Pose %cd /content/E2Pose # make directory !mkdir results !mkdir outputs # download model file !./pretrains/download.sh # define function from function import * |
videoで指定した動画の姿勢推定を行います。推定結果そのものは容量が大きいので、再エンコードして容量を小さくすると共に、videoの音声を付加しています。なお、videoに音声がない場合は、soundチェックボックスのチェックを外して下さい(そうしないとエラーになります)。
自分のビデオを使用したい場合は、videoフォルダにmp4ファイルをアップロードして下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#@title **E2Pose for video** # inference video = 'magic.mp4' #@param {type:"string"} in_path = 'video/'+video !python3 ./inference.py --src $in_path --dst results --model ./pretrains/COCO/ResNet101/512x512/frozen_model.pb # re-encode import os #@markdown -If the video has sound, check the sound check box sound = True #@param {type:"boolean"} result_path = 'results/'+video+'.mp4' out_path = 'outputs/'+os.path.splitext(video)[0]+'_pose.mp4' print('re-encoding...') if sound ==True: ! ffmpeg -y -i $in_path -loglevel error sound.mp3 ! ffmpeg -y -i $result_path -i sound.mp3 -loglevel error $out_path else: ! ffmpeg -y -i $result_path -loglevel error $out_pat |
作成したビデオの再生は下記を実行して下さい。
1 2 3 |
#@title **Play video** #@markdown Note: Crashes if the file is large display_mp4(out_path) |
左上にFPS(1秒当たりの処理フレーム数)が表示されていてますが、何と約30FPSと今までの倍くらいのスピードです。凄い!
作成したビデオのダウンロードは下記を実行して下さい。
1 2 3 4 5 |
#@title **Download video** #@markdown Note: Only for chrome from google.colab import files import glob files.download(out_path) |
では、また。
(オリジナルgithub)https://github.com/AISIN-TRC/E2Pose