GitHub地址:https://github.com/leoluopy/paper_discussing/blob/master/body/MVF-Net/mvfNet.md
looking for papers for MVF-Net
contributer : leoluopy
- 歡迎提issue.歡迎watch ,star.
- 微信號:leoluopy,如有疑問,歡迎交流,得文時淺,或有紕漏,請不吝指教。
Overview
- 人臉三維建模是一個長期研究的課題,人臉三維數據稀少,並採集成本高,人臉三維重建的監督學習發展遇到不小瓶頸, 本文提出了一個人臉三維重建的半監督學習方法,並超越了不少同時期其他state-of-art方法。
在數據集MICC上和其他方法的對比,均有不同程度的提升。
實現效果的另一側面說明,由此也可以發現實現最終精度誤差大約在1cm左右。
模型敘述
- 本文提出了一種使用多角度人臉相互投影並且對投影誤差進行不斷優化,這樣得出了一種半監督學習的人臉三維建模方法。投影思路 見上圖
-
- 本文使用的模型結構如上圖所示,輸入爲三幅人臉圖像 A/B/C 分別如圖所示,兩個側臉和一個正臉
- 收到人臉使用相同權重提取特徵,這裏使用的VGG 【上圖左邊黃色部分】 ,可以是其他特徵提取模型例如EfficientNet
- 提取到三個人臉的特徵concat在一塊兒,隨後幾層全連接層迴歸3DMM參數。
- s上橫線 【markdown 沒辦法打】 : 表示BFM模型建立時那羣高加索模特的3D模型的平均基礎值
- Eid : 表示人臉ID向量的basis
- Eexp : 表示人臉表情向量的basis
- Xid : 表示被迴歸得到的人臉ID向量[199維]
- Xexp : 表示被迴歸得到的人臉表情向量[29維]
- 提取到三個人臉的特徵不concat一塊作爲另一個分支,使用共享全連接權重,迴歸人臉位姿 (Pose A, Pose B, Pose C)
- 上圖中還有提到比如PhotoLoss,AlignLoss 是對訓練Loss設計在整個架構的示意。下文介紹
訓練方法
監督訓練和無監督訓練向結合,首先監督學習快速下降loss,而非直接進行無監督學習,從而避免進入局部最優點;監督學習 訓練若干個epoch或者收斂(原文沒有說明),之後進行無監督學習,其思想是:使用三個角度人臉,正面,左側,右側人臉進行 相交部分的相互投影(相交部分由關鍵點並過濾得來),投影之後相交部分【非遮擋部分】應該在紋理顏色,還有光流特徵,以及人臉關鍵點部分 具有極高相似度,對此部分進行loss優化即是本文方法的最核心點。
投影描述
-
- 查上文中模型描述,有迴歸得到的以上的模型參數,這個模型參數會在下面的投影方程中使用。
-
- R 是有歐拉角轉換得到 3x3 的投影矩陣
- v 是三維空間中 [x,y,z] 的座標轉置
- t 是basis
- 綜合看維度= [2x3][3x3][3x1] + [2x1] = [2x1] 得到投影二維平面座標
監督訓練Loss
- 爲了使模型訓練能夠更快收斂和不至於進入局部優化,本文作者採用了首先使用監督訓練, 隨後對半成品模型再進行無監督訓練。其監督訓練loss如上圖所示,組成分別爲位置座標loss 位姿loss,3DMM模型參數loss,再加L2正則化。
無監督訓練Loss
- 關於無監督訓練的loss設計,首先無監督訓練的基本原理是:利用三個視角的相互投影一定具有三維空間和紋理的不變性,不斷的向這個方向進行優化即可以 達到優化整個模型的目的。
- 以上公式意義:A視圖投影至B視圖應該與原來B視圖的紋理特徵無限趨近,即是模型優化方向。 同時取二範數的平方,二範數在統計上更趨近於取得真實值,降低誤差。取平方增大在loss中權重。
+訓練過程中會發現如果僅僅使用photoLoss,確實能使得投影的像素從紋理數值上是接近的,但是訓練 得到的結果根本不是人臉或者人臉變形。爲了解決這個問題加入了光流loss和關鍵點loss如下圖所示。
光流法簡要介紹:利用關鍵點區塊在另一時間序列的最優可能走向確認圖像對應關係的算法,這種對應關係就是光流法: 舉例:取上一幅圖的一個圖像區塊,在下一幅圖中對應位置的周圍取搜索並相減,哪個位置相減最小,那麼這個位置就是光流的走向,在本文loss的 設計中光流的流向應是原點,也就是光流趨近於不動。