Black_kitten092のブログ

初心者の置き場

openposeを使って姿勢推定してみる

目次

画面サイズを指定してデモの動画で姿勢推定

デモの動画にオプションでnet_resolutionを指定。
サイズは16の倍数のみ選択可能で256x256に指定してみる。

bin\OpenPoseDemo.exe --video examples\media\video.avi --net_resolution 256x256

処理中

f:id:Black_kitten092:20200803180814p:plainf:id:Black_kitten092:20200803180926p:plainf:id:Black_kitten092:20200803180936p:plain

終了時のログ

f:id:Black_kitten092:20200803181534p:plain

結果

  • GPUGTX 1660 SUPER:約33fps

  • 発見した人の最大数:たぶん8人

  • Total time:平均で約7.7seconds.

考察

  • fpsが上がる代わりに発見した人の数は減った。

  • ほぼ手前の人の認識になって奥の人にの認識は難しい

  • 観客がいる場面でopenpose使うときとかでは使えそう

画面サイズを指定してデモの画像で姿勢推定

デモの画像にオプションでnet_resolutionを指定。

bin\OpenPoseDemo.exe --image_dir examples\media --net_resolution 256x256

処理中

f:id:Black_kitten092:20200804001027p:plainf:id:Black_kitten092:20200804001032p:plainf:id:Black_kitten092:20200804001043p:plain

終了時のログ

f:id:Black_kitten092:20200804001229p:plain

結果

  • GPUGTX 1660 SUPER:約31fps

  • Total time:平均で約2.2seconds.

考察

  • 高速化はできたがおそらく動画のときと同じく扱える距離範囲は短くなっていると思われる。

  • 動画もFrame単位で認識しているので、画像で認識するときと同じ結果になる感じだと思う。

姿勢推定と顔の推定

デモの動画に-faceオプションで顔も推定してもらう。

bin\OpenPoseDemo.exe --video examples\media\video.avi -face

処理中

f:id:Black_kitten092:20200804004251p:plainf:id:Black_kitten092:20200804004255p:plainf:id:Black_kitten092:20200804004300p:plain

終了時のログ

f:id:Black_kitten092:20200804004656p:plain

結果

  • GPUGTX 1660 SUPER:約4~5fps

  • Total time:平均で約5.8seconds.

考察

  • 斜めでも可能だが真横からは難しい

  • マスクなどで見えない場合も難しいのではないかと思う。

  • ちなみに動画でも適応してみたがGPUGTX 1660 SUPER:約3.5~1.7fpsで動いた。

  • けれども動画の方は全く顔を推定していない感じ。

  • なのである程度は近い距離でないと顔と認識されないみたい。

  • net_resolutionで256x256にすると約6fpsなので、顔がメインの推定では距離も近くでないといけないでのこっちの方が良さそう。

姿勢推定と手の推定

デモの動画に-handオプションで手も推定してもらう。

bin\OpenPoseDemo.exe --video examples\media\video.avi -hand

処理中

f:id:Black_kitten092:20200804005931p:plainf:id:Black_kitten092:20200804005954p:plainf:id:Black_kitten092:20200804010017p:plain

終了時のログ

f:id:Black_kitten092:20200804010158p:plain

結果

  • GPUGTX 1660 SUPER:約2fps

  • Total time:平均で約5.8seconds.

考察

  • 1枚目は右手にものを持っているが手と認識できている。

  • しかしながら3枚目の電話を持つ手は認識できていない。

  • ちなみに3枚目、右奥の人の右手は認識されている。

  • 顔に近いから認識できていない??

  • ちなみに動画でも適応してみたがGPUGTX 1660 SUPER:約1.2fpsで動いた。

  • net_resolutionで256x256にすると2.7fps

結果をjson形式で保存する

--write_jsonで保存できる。そのあとの引数で保存先を指定できる。

bin\OpenPoseDemo.exe --image_dir examples\media --write_json .

例えば・・・(000000000294のファイル)

{"version":1.3,"people":[{"person_id":[-1],"pose_keypoints_2d":[147.623,133.47,0.828164,134.641,202.894,0.275354,96.9949,189.968,0.382705,237.01,278.232,0.761661,287.596,201.683,0.81592,172.3,220.526,0.195833,214.664,344.126,0.385928,324.114,334.721,0.766747,119.354,405.308,0.0580295,74.6502,405.31,0.0576441,0,0,0,0,0,0,164.075,404.14,0.0518642,0,0,0,0,0,0,134.645,118.234,0.902725,162.906,118.242,0.905918,108.738,131.141,0.873463,179.365,131.13,0.800111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"face_keypoints_2d":[],"hand_left_keypoints_2d":[],"hand_right_keypoints_2d":[],"pose_keypoints_3d":[],"face_keypoints_3d":[],"hand_left_keypoints_3d":[],"hand_right_keypoints_3d":[]}]}

のように座標情報を保存できる。