PIFuHDで、1枚の人物画像から高解像度3Dモデルを作る

1.はじめに

 以前、1枚の人物画像から3Dモデルを作る PIFu という技術をご紹介しました。今回ご紹介するのは、その高解像度版である PIFuHDという技術です。

*この論文は、2020.4に提出されました。

2.PIFuHDとは?

 下記に、PIFuHD のフレームワークを示します。PIFuHD は、上段の低解像度な PIFu モジュールに下段の高解像度な Fine PIFu モジュールを加えたものです。

 下段のモジュールについて説明します。まず、Input から Image-to-image translation(pix2pixHDを使用)によって Front/back normal(人物の前後)を高精度に推定します。これによって、PIFuでは前後の推定を低解像度で行っていたことや、また後ろの推定も1つのモジュールで行うことによる学習の複雑さが解消されます。

 次に、Front/back normal  Input を元画像の解像度のままエンコーダに入力し、512×512のエンコーダで特徴量を抽出し、これに上段から抽出された3D埋め込み特徴量Ωを加えることで、高精度の3Dモデルが得られます。

 では、コードを動かしてみましょう。

3.コード

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

 まず、セットアップを行います。colab にインストールされているPytorch が 1.8.1 になり Pytorch3d が上手く動かなくなっているので、Pytorch 1.6.0 にダウングレードします。

 

 自分の用意した画像をアップロードします。テスト画像を使用する場合は、スキップして下さい。なお、ブラウザが Safari だとエラーが出ますので、ご注意を(Google Chrome推奨)。ここでは、スキップします。

 

 各種パスの設定をします。

 

 画像を適切な位置にクロップします。クロップデータは、test_rect.txt というファイル名で、./sample_images に保存されます。

 

 静止画から、人物の前後の画像(result_test_256.png)、objファイル(result_test_256.obj)を作成します。これらは、./results/pifuhd_final/recon に保存されます。ちなみに、objファイルは、MeshLab というアプリを使うと表示・編集が出来ます。

 

 pytorch3dを使って、objファイルから視点を回転させた画像を生成し、動画(result_test_256_display.mp4)を作成します。動画は、./results/pifuhd_final に保存されます。

 

 せっかくですので、動画からも3Dモデルを生成してみましょう。先程同様、この「リンク」をクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。動画は Fashion Video Dataset を使っています。なお、コードの説明は省略します。

(オリジナルGithub)https://github.com/facebookresearch/pifuhd

(twitterへの投稿)

コメントを残す

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

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

ABOUTこの記事をかいた人

アバター

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