1枚の写真からリアルな3Dアバターを作る。FLAME / DECA / DiffLocksを使った頭部&髪の毛生成の挑戦

「自分の写真1枚から、映画やゲームに出てくるようなリアルな3Dキャラクターを作れたら…」
そんなふうに思ったことはありませんか?メタバースやVRChatなどの普及で3Dアバターの需要が高まる中、手作業でモデリングをするのは非常にハードルが高いですよね。
今回は、最新のAI技術であるFLAMEおよび推論モデルのDECAとDiffLocksを組み合わせて、1枚の顔写真からリアルな頭部の3Dモデルを作り、そこに自然な髪の毛を生やすという最先端のワークフローに挑戦してみました。
本記事では、その手順と結果、そして各技術の基礎知識について解説します。
まずは基礎知識:今回使ったAI技術
作業工程に入る前に、今回メインで使用した技術について解説します。特に、顔の3D復元におけるブレイクスルーとなった「DECA」の技術は非常に興味深いので、少し掘り下げて紹介します。
FLAME(顔の3Dモデルの規格)
FLAME(Faces Learned with an Articulated Model and Expressions)は、数千人の顔データを学習して作られた「統計的な3D頭部モデル」です。 顔の「形(Shape)」「表情(Expression)」「姿勢(Pose)」を数値パラメータで表現できるシステムです。しかし、FLAME自体はただのモデルの「規格」であるため、写真からパラメータを予測するためには別のAIモデルが必要です。
1枚の写真からFLAMEのパラメータを正確に推測し、さらにリアルな質感を復元するために、今回は以下の2つの最先端モデルを使用しました。
DECA (頭部の形状及びテクスチャの生成)
本ワークフローにおいて、技術的に最もエキサイティングなのがこのDECA (Detailed Expression Capture and Animation) です。従来の顔の3D復元技術は、大まかな輪郭やパーツの配置を捉えることはできても、のっぺりとしたマネキンのようになってしまうのが課題でした。 DECAの凄さは、顔の形状を「粗い形状(Coarse shape)」と「詳細な形状(Detail)」に分けて推論し、さらに「色」と「光」を分離してしまう点にあります。
- ディスプレイスメント(微細な凹凸)の生成: 表情を作ったときにできる「ほうれい線」や「おでこのシワ」などを、ディスプレイスメントマップというデータとして生成し、ベースのメッシュに適用することで、驚くほど生々しい質感を復元します。
- アルベド(本来の肌の色)と照明の分離: ここで「アルベド(Albedo)」について補足します。アルベドとは3DCGの用語で「光の影響や影を一切含まない、物体そのもののベースカラー」を指します。
写真には必ず「撮影時の光と影」が写り込んでいますが、DECAはAIの推論によって「純粋な肌のベース色(アルベド)」と「照明環境」を分離します。これにより、写真の影がテクスチャに焼き付くのを防ぎ、後から3Dソフトで自由にライティングを作り直すことができます。
ただし、DECAの生成するアルベドには一つ大きな特徴があります。それは「元の写真の全体的な色味(肌の明るさなど)は参照するものの、顔の具体的なディテール(髭、ホクロ、シミ、メイクなど)は一切参照せず、完全に無視する」という点です。結果として、綺麗なアルベドは得られるものの、ツルッとした「誰でもないマネキンのような肌」が出力されます。
DiffLocks(髪の毛の3D生成)
顔ができたら、次は髪の毛です。そこで登場するのがDiffLocksです。
DiffLocksは、画像生成AIで有名になった「拡散モデル(Diffusion Model)」の技術を、3Dの髪の毛(ヘアストランド)の生成に応用した技術です。 従来のゲームでよくあるような「粘土の塊のようなポリゴンの髪」ではなく、1本1本の毛の流れや束感(Locks)を持った、非常にリッチでリアルな3Dヘアスタイルを生成することができます。「カーリーヘア」「ショートボブ」といったスタイルを指示して、頭部の形状に合わせて髪を生やすことが可能です。
実践編:1枚の写真からアバターが完成するまで
それでは、実際に私が試したワークフローを紹介します。
ベースとなる写真の準備
まずは入力となる1枚の写真を準備します。AIが顔の形状を正確に認識できるよう、以下の条件を満たす写真を選びました。
- 正面を向いている
- 顔に強い影が落ちていない
おでこや輪郭が髪で隠れていない
今回は、輪郭がはっきりわかるように前髪を上げた状態の自撮り写真(と見せかけたAI生成画像)を使用しました。

DECAを使った頭部3Dメッシュの生成
準備した写真を元に、いよいよ頭部の3Dモデルを生成します。
ベース形状の抽出:
まずはDECAに写真を読み込ませます。まずは上述の通り「粗い形状(Coarse shape)」がFLAMEの基本モデルに適用されます。
入力された写真から顔の領域を検出し、深層学習モデル(画像認識用のエンコーダ)を通して、顔の視覚的な特徴を抽出・データ化します。
抽出した特徴から、FLAMEを動かすための各パラメータ(形状、表情、顎のポーズ、カメラ位置、照明環境、アルベドなど)の数値を推論(回帰)します。このパラメータをFLAMEの規格に流し込むことで、まずは凹凸の少ない「基本の頭部メッシュ」が構築されます。
DECAはメッシュ構造に一切変更を加えないため、FLAMEが持つ表情パラメーターはそのまま保たれます。


テクスチャの抽出:
前述の通り、ここでDECAが写真の照明環境を取り除き、「純粋なアルベドテクスチャ」を生成してくれます。同時に、ディスプレイスメントマップによる微細な凹凸を持ったリアルな頭部ベースが構築されます。
数秒〜数十秒の処理で、写真そっくりの3Dメッシュデータ(.objファイル)とテクスチャが出力されました。

少し不思議な感覚ですが、さっきまで平面だった顔が3D空間でぐるぐると回せるようになっています。ただ、この段階ではツルツルのスキンヘッドなので、まだ完成とは言えません。
DiffLocksで髪の毛を生やす
作成した頭部モデルをベースに、DiffLocksを使って髪の毛を生成していきます。
DiffLocksには、先ほど作った頭部の形状データを当たり判定のような形で読み込ませ、頭皮に沿って自然に髪が生えるように設定します。
今回は「少しウェーブのかかったミディアムヘア」を狙ってパラメータやテキストプロンプトを調整しました。GPUをフル稼働させて生成処理を待つこと数分……。

【独自の工夫】テクスチャのハイブリッド合成処理
見事、頭部の形状にぴったりとフィットした、細かく複雑な流れを持つ3Dの髪の毛データ(ストランド)が生成されました。
しかし、ここで一つ大きな問題に直面しました。 前述の通り、DECAが抽出する「アルベドテクスチャ」は光と影を分離してくれる反面、髭やホクロなどの個人的な特徴を完全に無視してしまいます。そのため、いざ3Dモデルに貼り付けてみると「元の写真の人物とは似ても似つかない、のっぺりとした別人の顔」になってしまうのです。
そこで今回は、元の顔に似せるために「元の写真の顔部分を切り抜いてテクスチャとして直接使用する」という処理を自動化して組み込みました。
しかし、単なる正面からのプロジェクションでは、カメラから見えない耳や頬といった顔の側面部分のテクスチャが引き延ばされて破綻してしまいます。
これを解決するために、以下のハイブリッドな処理を行いました。
- 顔の正面(目・鼻・口の周り): 元の写真をそのままテクスチャとして使用し、髭やホクロなどを含む「本人らしさ」を完全に維持する。
- 頭部全体、耳、頬などの側面: DECAが生成したアルベドテクスチャをベースとして使用する。
- 境界の処理: 上記2つのテクスチャの境界部分にマスクをかけ、不自然にならないように滑らかに馴染ませる(ブレンドする)。
この自動合成処理により、横顔の破綻を防ぎつつ、正面から見たときの「本人らしさ」を完全に保つことに成功しました。


今後の課題
お気づきでしたでしょうか?元の写真と比べて、特徴ある頰ヒゲが消えてしまっています。これは先ほど解説したアルベドテクスチャに正面画像をブレンドする手法の弱点です。
顔の正面(口回りや顎先)は元の写真をプロジェクションしているため髭がそのまま残りますが、顔の側面である「頬」は、テクスチャの引き延ばしを防ぐためにDECAのアルベドを使用しているからです。 基礎知識で解説した通り、DECAのアルベドは推論の過程で髭やホクロなど「個人のディテール」を完全に除去し、ツルツルの肌を生成するという仕様(原理)になっています。
その結果、このハイブリッドテクスチャを適用すると、「口の周りには髭があるのに、頬に差し掛かった途端に髭が不自然に消えてツルツルの肌になる」という現象が起きてしまいました。
最終仕上げを手作業で行う前提である場合、この問題は全く気にならないと言っていいでしょう。テクスチャに関しては、最後にPhotoshopで職人芸で磨き上げることで完成度が高まる伸び代がまだまだあります。その一環として頰ヒゲを描き足せば良いでしょう。
一方、これらの工程をパイプライン化し全自動を目指す場合は、頬髭が豊かな人物の写真を扱う際に更なる工夫が必要になります。
女性モデルでの検証と見えてきた課題
男性の自撮り写真だけでなく、女性の写真を使っても同様のワークフローを試してみました。
結果として、DECAと独自のハイブリッドテクスチャ合成による「頭部モデル」の品質は申し分なく、非常にリアルで美しい顔立ちを再現できました。
しかし一方で、DiffLocksで生成した「髪型」については、少し破綻が見られる結果となりました。女性特有の長く複雑なヘアスタイルや、ボリューム感のある髪の毛を自然にシミュレーションして生成するのは、DiffLocksにとってもまだ難易度が高いようです。この点は今後の課題として、パラメータのさらなる調整や、生成手法の工夫を探っていきたいと思います。


⚠️ 注意:ライセンスについて(商用利用不可)
今回紹介した技術を試すにあたって、一つ重要な注意点があります。
FLAME、DECA、EMOCA、そしてDiffLocksといった最新のAI・3D技術のモデルデータやコードは、主に学術研究を目的として公開されています。そのため、基本的には非商用(Non-commercial)での利用のみに制限されています。
これらの技術を使って作成した3Dモデルを、販売するゲームに組み込んだり、収益化しているYouTubeチャンネルでVtuberアバターとして使用したりといった「商用利用」はライセンス違反となる可能性が高いです。
あくまで個人での実験や、技術の学習・研究目的の範囲内で楽しむようにしてください。実際に試す際は、必ず各公式リポジトリのライセンス(License)条項をご自身で確認するようお願いいたします。
まとめと所感
1枚の2D写真から、ここまでリアルな3Dモデルと髪の毛が生成できることに、技術の進化の恐ろしさを感じました。
今後は、この生成した3Dモデルにボーン(骨組み)を入れて動かしてみたり、フェイシャルトラッキングを使って自分の表情と同期させてみたいと思います。
3Dモデリングの経験がなくても、AIの力を使えばここまでハイクオリティなアバターが作れる時代です。気になった方は、ぜひ公式リポジトリなどをチェックしてみてください。
「Generative AI & ML」の関連記事

AIによってベトナムの雇用は減るのか?
「AIによってベトナムの雇用は減るのか?」バイタリフィ アジアCOOが語る、システム開発・オフショア業界における生成AIのリアルな影響と、次世代エンジニアに求められる「自己破壊的な好奇心」とは。

画像1枚から3Dを作る技術 - Zero123からUnique3Dまでの進化の過程を解説
たった1枚の画像から3Dモデルを生み出す魔法のようなAI技術「Generative 3D」。Zero123から最新のUnique3Dに至るまでの革命的な進化の歴史と、その裏側にある仕組みを分かりやすく解説します。

GazeboにおけるTurtleBot3を用いたLiDAR迷路探索アルゴリズムの実装と検証
ROS 2とGazeboを用いたTurtleBot3の自律走行アルゴリズム開発レポート。安価なLiDARセンサーのみで迷路走破に挑んだ実装プロセスと、ゴール目前でロボットがとった「まさかの行動」とは?
