cedro-blog

DLFSで、人間の年齢による顔の変化をシミュレーションする

1.はじめに

 今回ご紹介するのは、年齢による顔の変化をシミュレーションできるDLFS( Disentangled Lifespan Face Synthesis )という技術です。

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

2.LFSとは?

 入力画像(Input Image)からエンコーダ(ε)で潜在変数を求め、CNNを使って形状特徴(Shape feature)とテクスチャ特徴(Texture feature)とアイデンティティを抽出します。

 そして、アイデンティティを維持しながら、形状特徴とテクスチャ特徴に潜在年齢コード(Latent age code)を加味して特徴を変換し、ジェネレーター(g)でミックスして画像を生成します。

 潜在年齢コードは、年齢範囲を6つの離散グループに分割し、対応する年齢コードは隣接した2つの年齢グループの線形補間によって取得します。

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

3.コード

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

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

 次に、ライブラリーをインポートし、初期設定を行います。

 それでは、年齢による顔アニメーションを行います。性別の設定をopt.name=で行います(女性:females_model, 男性:males_model)。そして、imagesフォルダーに格納されている顔画像のファイル名をimg_file=で指定します。

 ここでは、opt.name=’females_model’, img_file=’ 04.jpg’ と設定しています。自分で用意した顔画像を使用する場合は、imagesフォルダーにアップロードして下さい。内部でalign処理(顔を所定の形に切り抜く)を行いますので、顔以外の余分な部分があってもOKです。

 内部で、OpenCVを使ってアニメーション(mp4)を作成している関係でコーデックが古くColab上で動かないため、生成した画像は ffmpegでコーデック変換(MP4V→H264)を行い、./output.mp4に保存します。

 もう1つやってみましょう。今度は、opt.name=’males_model’, img_file=’ 11.jpg’ の設定です。

 では、また。

(オリジナルgithub)https://github.com/SenHe/DLFS