Texfomerで、1枚の人物画像から3Dテクスチャを推定する

1.はじめに

 今まで、1枚の人物画像から3Dテクスチャを推定する技術は、CNNのみを使ったものでした。今回ご紹介するのは、今までのCNNにTransformerを組み合わせ、入力画像の情報を効果的に活用したTexformerという技術です。

2.Texformerとは?

 入力は、Query、Key、Valueの3つです。Queryはカラーエンコーディン、Keyは入力画像とセグメンテーションマップ、Valueは入力画像と座標です。この3つをそれぞれCNNで特徴量を抽出します。

 そして、Transformerを使って、この3つの相互関係を複数のレイヤーで明確にして、もう1つのCNNに接続し融合します。

 もう1つのCNNの出力は、Trgb(RGBマップ)、F(テクスチャフロー)、M(フュージョンマスク)で、最終的にこれらを組み合わせることでOutputを得ます。

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

3.コード

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

 まず、セットアップを行います。

 では、サンプル画像を使って3Dテクスチャを推定してみましょう。サンプル画像は、demo_imgsフォルダーに保存(img01.png〜img05.png)されています。自分で用意した画像で行う場合は、demo_imgsフォルダーにアップロードして下さい。画像サイズは、64×128(アルファチャンネル無し)です。

 3Dテクスチャ推定には、demo.pyを使います。オプションは、–img_path の後に画像指定、–seg_pathの後にマスク画像指定、–save で推定結果を保存します。ここでは、サンプル画像はimg01.pngを選んでいます。

 推定結果を見てみましょう。結果は、demo_imgs/output.pngに保存されているので、これを表示させます。

 推定結果を回転させた結果が、output.gifに保存されていますので、これを表示させます。

 画像をimg02.pngに変えて実行すると、こんな感じ。

 Transformerが、色々な分野に応用され出した感じがして、ワクワクして来ます。

 では、また。

(オリジナルgithub)https://github.com/xuxy09/Texformer

コメントを残す

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

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

ABOUTこの記事をかいた人

アバター

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