3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DensePose で単一 RGB 画像から三次元ポーズ推定を行う(2018 年 7 月 15 日時点)

Last updated at Posted at 2018-07-15

漢なら単一 RGB 画像から DensePose で三次元ポーズ推定, 三次元ボディ形状推定したいですね!

やりましょう!

できました.

環境

2018 年 7 月時点の構成です.

  • Ubuntu 16.04
  • miniconda
  • GTX 1080 Ti
  • CUDA 9.0(8.0 が安定しているようです. 9.1 はたぶん動きません)
  • NCCL2
  • cuDNN 7.1.4(7.0 など, 古いと caffe2 prebuilt とバージョンが合わずに実行時にエラーが出ます)

セットアップとビルド

注意点

DensePose(detectron, caffe2 も?)は python2 で記述されているので, python2 環境で動かす必要があります(cPickle など, python2 でしか使っていないライブラリを使っているため)

caffe2 detectron op は GPU のみ のサポートになります. したがって CPU で動かすのができませんので注意です.
(CPU 版 caffe2 だと, 実行時に detectron op が見つからないなどのエラーが出ます)

detectron は DensePose に付属の, DensePose 用に修正されたものを使います
(ビルドは DensePose 内で make)

すでに Detectron git repo https://github.com/facebookresearch/Detectron などをインストールしていると, 実行時に Non-existent config key: BODY_UV_RCNN エラーになるので注意です!

Docker 環境に慣れているひとは, Dockerfile があるのでそちらを利用するのが都合がよいかもしれません.

ライブラリのインストール

を参考にします.

anaconda/miniconda で python 2.7 環境を作っているものとします.

$ conda create -n py27 python=2.7

python 2.7 環境にします.

$ source activate py27

caffe2 + CUDA 9.0 + cuDNN7 の prebuild binary をインストールします.

$ conda install -c caffe2 caffe2-cuda9.0-cudnn7

cocoapi は, 推論だけならインストールいらないかもしれませんので省きます.

DensePose の依存パッケージをインストールします.

$ pip install -r $DENSEPOSE/requirements.txt

make します. これにより DensePose 用にカスタマイズされた detectron モジュールもビルドされます.

$ cd $DENSEPOSE
$ make

データを取得します.

$ cd $DENSEPOSE/DensePoseData
$ bash get_densepose_uv.sh
$ bash get_eval_data.sh

これで準備できました!

推論する.

を参考に, infer_simple.py を実行します.

$ python2 tools/infer_simple.py \
    --cfg configs/DensePose_ResNet101_FPN_s1x-e2e.yaml \
    --output-dir DensePoseData/infer_out/ \
    --image-ext jpg \
    --wts https://s3.amazonaws.com/densepose/DensePose_ResNet101_FPN_s1x-e2e.pkl \
    DensePoseData/demo_data/demo_im.jpg

一番最初に学習済みモデル(500MB くらい)のダウンロードが始まります.

DensePoseData/infer_out に結果が出力されます(レンダー?された 3D 形状. UV によって色分けされています).

1080 Ti(130W に powerlimit) で, 推論の処理は 1 ~ 2 秒くらいでした. なかなか早いですね!

関連項目

単一画像からの最新ディープラーニング顔アルゴリズムを試す(2017 年 7 月 14 日時点)
https://qiita.com/syoyo/items/5277906d29b2dd49e3a2

PRNet を C++11 で動くようにして単一画像からの 3D 顔復元を行う.
https://qiita.com/syoyo/items/34be69a4b3bfe9174eeb

TODO

  • 推論されたボディ形状とテクスチャを .obj でエクスポートする
  • モバイルでうごかしたい(pytorch 1.0 に期待?).
  • zozosuit で三次元ポーズ形状推定したい.
  • Tik Tok ダンス動画からポーズ推定したい.
  • DensePose により, 優秀な三次元ポーズ形状若人が, 人類史上最速で育成なされるスキームを確立する旅に出たい.
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?