AWSでOpenPoseを試す

OpenPoseは人の写真から、その骨格(ボーン)を検出することができるライブラリ。参考画像はこちらなど。

簡単にいうと、普通のカメラでKindleのような認識ができる。活用例としては、例えばゲームで、自分のモーションをカメラで撮影することで、ゲーム内でも同様の動きをさせることができる。ただあくまで、現時点では2次元版までで3Dのボーンはbeta版のようだ。

これを漫画に対して試そうと思い、もちろんGPUを持ってないので、AWS上で実施しました。

インスタンス

Deep Learning Base AMI (Ubuntu) Version 1.0のp2.xlargeを用いました。ストレージ等は初期設定のまま。

インストール

こちらを参考に、git cloneののちinstall。

僕はcmakeを用いたinstallを行いました。GUIを用いたinstall方法ではなく、CMake Command Line Configurationのコマンドを用いた方法で行いました。

一点注意点としては、Buildを忘れないようにすることだと思います。

OpenPoseの実行

インストールが完了したら、こちらを参考に実行します。ただ記載のコードをそのまま実行すると、inputした画像にボーンを描き、表示しようとします。terminal越しなのでファイルとして保存してほしい。

そのため、いくつかパラメータを設定します。

./build/examples/openpose/openpose.bin --image_dir input/20171123/ --write_images output/20171123/ --no_display --face --hand --write_keypoint_json keypoint
  • write_images でファイルの保存先を指定
  • --no_display 画像を表示
  • --face 顔や目の輪郭を取得
  • --hand 指のボーンを取得
  • write_keypoint_json ボーンの各部位をjson形式で取得、保存先フォルダの指定

上記を実行するとボーンの描かれた画像を取得することができます。だいたい画像1枚につき1〜2秒程度の時間がかかりました。

実行結果についての感想

漫画のため実行結果を張れないのが申し訳ないのですが。。。

  • 漫画によって取りやすいもの、取りにくいものがある。
  • 白黒では取りにくいが、カラー(アニメや、カラー版の漫画など)だとうまく行きやすいことも。肌色が重要なのかな?
  • 明らかな間違い(コートを足と認識してしまったり)もあるし、そもそもキャラを全く認識しないことも多数。

OpenPoseは学習に人物写真を用いており、漫画のキャラクターは用いていない。そのため、写真として収められにくい構図や、漫画の世界でしかありえないようなポーズなどは間違えやすいのかも、と感じました。