SlideShare a Scribd company logo
1 of 24
Photorealistic Facial Texture
Inference Using Deep Neural
Networks
Paneo株式会社
吉田一星
吉田一星
自己紹介
・未踏ソフトウェア創造事業出身のエンジニア社長
・前職はヤフーで、コンピュータビジョンやAR/VRを世界に先駆けてスマートフォンに応用したアプリを色々と立ち上げて
いました
・去年の6月に起業し、一枚の顔写真から3Dモデルを自動で生成するソーシャルVRサービス「EmbodyMe」をVive/Oculus
でリリース
Paneo株式会社 CEO
3D顔形状の推定
• 顔の3D形状の推定は、近年のCVPRで盛り上がりだしてきている
• Learning Detailed Face Reconstruction From a Single Image
• End-To-End 3D Face Reconstruction With Deep Neural Networks
• Fast 3D Reconstruction of Faces With Glasses
• 3D Face Morphable Models In-The-Wild
• Parametric T-Spline Face Morphable Model for Detailed Fitting in Shape Subspace
• DenseReg: Fully Convolutional Dense Shape Regression In-The-Wild
• Face Normals "In-The-Wild" Using Fully Convolutional Networks
• Regressing Robust and Discriminative 3D Morphable Models With a Very Deep Neural
Network
• 去年は5件ほど、一昨年以前は1~2件ほどしかなかった
紹介する論文
• 写真一枚からフォトリアリスティックな3D Face Modelを作りたい
• そのための鍵となるフォトリアリスティックな顔テクスチャ(Albedo)を
DNNで推定する
• 低解像度の写真や、横顔など部分的な写真からも推定可能
• 一言で言うと、Neural Style Transferを顔のテクスチャ推定に応用
• arXivで見て、実装しようとしていた論文だったので紹介
Photorealistic Facial Texture Inference Using Deep Neural Networks
Shunsuke Saito, LingyuWei, Liwen Hu, Koki Nagano, Hao Li
紹介する論文
Neural Style Transfer
A Neural Algorithm of Artistic Style (2015)
Leon A. Gatys, Alexander S. Ecker, Matthias Bethge
Content Style Style Transfer
• 学習済みのVGG16のある層の値を使う
• 入力画像をCNNに通したある層の値と、ランダムなノイズ画像をCNNに通し
た層の値で損失関数を定義する
• CNNの重みは固定で、ノイズ画像のピクセルの値を推定するのがポイント
• CNNのある層における入力画像とノイズ画像の値を最小化するように、ノイズ
画像の元のピクセルの値を推定する
Neural Style Transfer
Content画像の層の値ノイズ画像の層の値
• Contents画像について、浅い層
の画像では入力画像に近いが、
深い層では画像の内容だけが保
持されている
• Style画像も同様に
Neural Style Transfer
• Style画像についても同様に損失関数を定義するが、その層のグラム行列の値を
比較している。また、複数層のグラム行列の値を見ている
• グラム行列は、ある層におけるフィルター同士の値の相関を見ていて、画像の
位置関係は見ていない(=スタイル)
Neural Style Transfer
Style画像のレイヤーの
グラム行列の値
ノイズ画像のレイヤーの
グラム行列の値
• Contentの損失関数と、Styleの損失関数を合わせた損失関数を定義する
• その損失関数を最小化するようなノイズ画像を推定すると、Content画像に
Styleが適用され、Style Transferが実現できる
• LBFSで推定している
• 損失関数の重み(α,β)や、層の選び方、初期のノイズ画像の選び方によっ
て質感を変えることができる
Neural Style Transfer
• 3D Morphable Modelで、低解像度なテクスチャを推定し、Contentとする
• 写真から高解像度なテクスチャのグラム行列を推定し、Styleとする
• ContentとStyleを合わせた損失関数を最小化するようにノイズ画像のピクセル
の値を推定すると、フォトリアリスティックなテクスチャが生成できる
今回の論文の概要
低解像度なテクスチャを推定
• PCAで学習した顔形状、表情形状、テクスチャの3D Morphable Model。主成
分ベクトルの線形結合で表され、その重みを推定する
• 入力画像と3DMMのピクセルの比較、顔の特徴点の位置の比較、顔の平均に近
づけるような正則化項からなる損失関数を最小化して重みを推定
• 得られた3DMMのテクスチャをContentの入力画像して使う
高解像度なテクスチャのStyleを推定
• 高解像度の顔画像データベースからそれぞれの顔のテクスチャを作る。その複
数のCNN層のグラム行列を求め、その線形結合で表されるモデルを作る
• 592人の人種、年齢、性別が異なる高精細な顔画像が含まれるChicago Face
Databeseを使用
• 線形結合をしてもリアルな肌の画像になる
• 入力顔写真のピクセルから部分的なテクスチャを作り、見えているピクセルの
部分だけマスクする
• 入力顔写真のテクスチャのCNN層のグラム行列と、顔データベースのテクス
チャのグラム行列の線形結合モデルを比較する損失関数を定義
• 入力顔写真のグラム行列に近い、顔データベースのグラム行列の線形結合モデ
ルのパラメータを推定する
高解像度なテクスチャのStyleを推定
• 凸関数になるように制約(Σ_w=1, w>=0)を加えないと、不自然な結果にな
る
• 顔データベースのグラム行列の線形結合モデルのパラメータから(マスクされ
ていない)全体のテクスチャのグラム行列を作る
高解像度なテクスチャのStyleを推定
• 3DMMの低解像度なテクスチャのCNN層の値と、ランダムなノイズ画像の
CNN層の値を比較する損失関数を定義(Content)
• 顔データベースのグラム行列の線形結合と、ランダムなノイズ画像のCNN層の
グラム行列を比較する損失関数を定義(Style)
• それらを合わせた損失関数を最小化
• 低解像度だが大まかな特徴を捉えたテクスチャ対して、高精細な肌のStyleが
適用され、フォトリアリスティックなテクスチャが生成される
Style Transfer
色を保ったままStyle Transfer
• 色を保ったままStyle Transferをするため、Content、StyleともにYIQ色空間に
変換し、Y(輝度)のみでStyle Transferを行う
• 輝度の平均と分散を整え、正規化する
• Style Transferを行った後に、ContentのIQチャンネルを結合する
球面調和関数、顔のセグメンテーション
• 入力顔写真からテクスチャを生成する際に、前処理として球面調和関数での照
明を推定し、除去している
• 顔形状の法線ベクトルを元に照明を推定
• また、写真から顔部分をセグメンテーションしている。著者の前の論文の高速
でオクルージョンに強い顔のセグメンテーションアルゴリズムを使用
• 3DMMのパラメータの推定で入力画像と3DMMのピクセルの比較の際にも、球
面調和関数で照明を除去し、そのパラメータも学習に含めている。また顔のセ
グメンテーションもしている
• 顔データベースからテクスチャを生成する際にも球面調和関数での照明の除去
をしているが、すべての画像で一定の照明条件で撮影されているので、すべて
の画像でグローバルなものとして推定している。また、フラッシュの反射を取
り除くため、SUV色空間に変換し、Sのピークを取り除いている。
CNNについて
• CaffeNet、VGG16、VGG19を比較し、VGG19を使用
• Contentには深い層、Styleには浅い層(複数)を使用
• Styleには5層を適用している。層が少ないと以下のようにブラーがかかってしま
う。
評価実験
• Amazon Mechanical Turkを使って定性的に行う
• Light Stage(大掛かりな設備でのキャプチャ)と比べても、遜色ない評価が得ら
れた
解決法
一緒に研究開発をしていただける社員を募集しています!
「 Paneo Wantedly」でGoogle検索してご連絡下さい!
Paneo Wantedly

More Related Content

Viewers also liked

sublabel accurate convex relaxation of vectorial multilabel energies
sublabel accurate convex relaxation of vectorial multilabel energiessublabel accurate convex relaxation of vectorial multilabel energies
sublabel accurate convex relaxation of vectorial multilabel energies
Fujimoto Keisuke
 
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Kenko Nakamura
 

Viewers also liked (15)

LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
 
sublabel accurate convex relaxation of vectorial multilabel energies
sublabel accurate convex relaxation of vectorial multilabel energiessublabel accurate convex relaxation of vectorial multilabel energies
sublabel accurate convex relaxation of vectorial multilabel energies
 
DeepLearningTutorial
DeepLearningTutorialDeepLearningTutorial
DeepLearningTutorial
 
Greed is Good: 劣モジュラ関数最大化とその発展
Greed is Good: 劣モジュラ関数最大化とその発展Greed is Good: 劣モジュラ関数最大化とその発展
Greed is Good: 劣モジュラ関数最大化とその発展
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
PRML輪読#14
PRML輪読#14PRML輪読#14
PRML輪読#14
 
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
 
Practical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architecturesPractical recommendations for gradient-based training of deep architectures
Practical recommendations for gradient-based training of deep architectures
 
ORB-SLAMを動かしてみた
ORB-SLAMを動かしてみたORB-SLAMを動かしてみた
ORB-SLAMを動かしてみた
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~
多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 
LiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせLiDAR点群とSfM点群との位置合わせ
LiDAR点群とSfM点群との位置合わせ
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 

Similar to 20170819 CV勉強会 CVPR 2017

Similar to 20170819 CV勉強会 CVPR 2017 (20)

Mask Guided Portrait Editing with conditional GANs
Mask Guided Portrait Editing with conditional GANsMask Guided Portrait Editing with conditional GANs
Mask Guided Portrait Editing with conditional GANs
 
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティングxR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
 
第5回若手交流会資料
第5回若手交流会資料第5回若手交流会資料
第5回若手交流会資料
 
Future customer experience
Future customer experienceFuture customer experience
Future customer experience
 
Ssi 20150519
Ssi 20150519Ssi 20150519
Ssi 20150519
 
Cod2012 デバッグ講座
Cod2012 デバッグ講座Cod2012 デバッグ講座
Cod2012 デバッグ講座
 
AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!
 
3Dアセット作成とリテイク:制作ツールとしてのVR導入のすゝめ / GTMF2019
3Dアセット作成とリテイク:制作ツールとしてのVR導入のすゝめ / GTMF20193Dアセット作成とリテイク:制作ツールとしてのVR導入のすゝめ / GTMF2019
3Dアセット作成とリテイク:制作ツールとしてのVR導入のすゝめ / GTMF2019
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
 
Realsense を活用した猪鹿蝶アタック
Realsense を活用した猪鹿蝶アタックRealsense を活用した猪鹿蝶アタック
Realsense を活用した猪鹿蝶アタック
 
2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料2011年5月28日 Android勉強会プレゼン資料
2011年5月28日 Android勉強会プレゼン資料
 
[MW04] [Xamarin入門] コード共通化で開発スピードアップ! AI を活用したクロスプラットフォームアプリを Xamarin で作ってみよう!
[MW04] [Xamarin入門] コード共通化で開発スピードアップ! AI を活用したクロスプラットフォームアプリを Xamarin で作ってみよう![MW04] [Xamarin入門] コード共通化で開発スピードアップ! AI を活用したクロスプラットフォームアプリを Xamarin で作ってみよう!
[MW04] [Xamarin入門] コード共通化で開発スピードアップ! AI を活用したクロスプラットフォームアプリを Xamarin で作ってみよう!
 
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボAI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
 
ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へモバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
モバイル&コンシューマ向けのシステム開発ができるPHP&Javaプログラマの皆様へ
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー
 
社長カメラ
社長カメラ社長カメラ
社長カメラ
 
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
 

20170819 CV勉強会 CVPR 2017