前言
這篇論文既異於傳統、擺脫監督、從全新角度看待人臉旋轉問題,又方法極簡、模組原始、效果上還有較大提升空間。終究能幸運地受到 reviewer 和 AC 的青睞,也肯定了文章的貢獻。雖然文章簡樸又不完美,但正因此才留下了更多的想象和空間。
論文標題:Rotate-and-Render: Unsupervised Photorealistic Face Rotationfrom Single-View Images
論文來源:CVPR 2020
論文連結:https://arxiv.org/abs/2003.08124
程式碼連結:https://github.com/Hangz-nju-cuhk/Rotate-and-Render
核心思想概括
人臉旋轉問題的本質是恢復被遮擋部分人臉的結構和紋理,而現有的方法多基於同一人臉的多視角資料訓練進行直接的新視角生成,從而導致了各種問題。
本文的核心就是透過單張影像和 3D 人臉建模,渲染從任意角度旋轉到當前角度的帶遮擋偽影和瑕疵的人臉,從而和原圖構建訓練資料對。其構造過程用到了兩次人臉紋理獲取,三維空間旋轉和渲染。
整個工作值得大家引用的亮點在於:
- 無監督(自監督)的人臉旋轉框架,擺脫多視角資料
- 大資料集 MegaFace 的人臉識別效果提升
- 一鍵可跑的開原始碼
背景介紹
近年來由於 GAN 的出現,人臉旋轉(轉正)任務取得了快速進展,但是現有方法主要依賴對同一人的多視角資料。一個簡單的例子就是如圖基於 GAN 的經典人臉轉正論文 TP-GAN [1]的訓練框架,將側臉的圖片作為網路輸入並將正臉影像當做生成模型的監督。
▲ 傳統人臉轉正pipeline
這一訓練方式的一大障礙是對高質量的多視角配對訓練資料的依賴。因此,它們的生成結果受到資料量以及資料分佈的限制,從而會造成對特定資料的過擬合(見下圖中一些以往方法的結果,會生成 Multi-PIE 資料藍色的濾鏡和背景)。
▲ 和 GAN-based 方法對比結果
而本文方法的出發點就是擺脫多視角的監督,從而解決由於多視角監督帶來的 domain 泛化能力問題。在本文中,我們提出一種新穎的無監督框架,利用三維人臉建模,透過反覆的旋轉和渲染操作構建自監督,並用一個普通的 Pix2Pix 生成最終影像。
該框架不依賴於同一人的多視角影像,就可以生成其他視角的高質量影像,並且框架適用於各個非限定的場景。我們做了大量的實驗來驗證我們的方法的效能。此外,我們發現將生成的資料用於人臉識別模型的訓練,對於人臉識別的效能也有顯著提升。
方法
文章提出的無監督框架如下圖所示:
整個框架主要包含三個模組,三維人臉重建模組,透過旋轉和渲染構建訓練資料的 Rotate-and-Render 模組,以及將渲染影像重建到真實影像分佈的 Render-to-Image 模組。接下來是沒有公式的細節介紹。
3.1 三維人臉重建模組
三維人臉重建技術在這裡只是作為工具使用,任何傳統或者深度的三維人臉重建方案都可適用,就不多加闡述。簡單來說透過三維重建我們可以獲取整個人臉的結構資訊,由若干歸一化的三維頂點座標組成的矩陣 和姿態資訊 。
然後用如下圖(a)所示的簡單人臉紋理獲取方案,就可以給各個頂點註冊一個 rgb 值。而我們使用的渲染方案如下圖(b)所示,就是紋理註冊的逆過程。
3.2 Rotate-and-Render訓練策略
整個訓練資料對的構建如下圖所示:
▲ Rotate-and-Render 訓練資料構建策略
給定一張二維人臉圖片 ,我們透過三維人臉重建模組得到該人臉的三維模型 ,並將輸入的紋理註冊 到三維模型上。接下來,我們將該模型 在三維空間旋轉並重新渲染為二維影像,得到該人臉在任意角度 的影像 ,這一過程被稱為 Rotate-and-Render。
然後我們利用 重新對三維模型獲取人臉紋理 ,並讓 再次透過 Rotate-and-Render 模組,將 旋轉回原角度並渲染到二維平面,得到 。由此 就產生了人臉從姿態 b 旋轉回輸入姿態,由不可見區域所產生的瑕疵,從而和 形成非常強的自監督,用於訓練生成模型。
3.3 Render-to-Image生成模組
為了消除在 Rotate-and-Render 過程中的偽影,我們用 Render-to-Image 模組來生成符合真實影像分佈的影像。整個模組如下圖所示:
▲ Render-to-Image網路輸入和loss
因為網路結構不是我們的 novelty 所在,我們對生成器的選擇比較隨便,直接使用了 CycleGAN 的 ResBlock 生成器來生成影像。在訓練過程中,我們則直接借用了 Pix2PixHD 的 loss function,採用 multi-layer discriminator 和 perceptual loss 來訓練鑑別器。
我們分別採用 GAN 的 loss、feature matching loss、perceptual loss 來監督 GAN 的訓練,具體的形式可以參見 paper 或者 code。
實驗結果
在實驗中,我們分別驗證了生成影像的質量以及生成影像用於人臉識別的效能的好壞。
4.1 生成影像的質量對比
下圖是和基於三維重建的方法的對比結果,而和基於 GAN 的方法對比在開頭處。可以看到,無論是對比哪種方法,我們提出的方法生成影像的質量都是更好的,而且身份資訊也得到有效保留。
▲ 與3D方法的對比結果
4.2 生成影像用於人臉識別
這裡不同於一般的論文,我們還將生成的影像用於資料增強,訓練人臉識別模型。我們在測試資料 LFW、IJB-A、Multi-PIE 和 MegaFace 上分別驗證了我們方法的效能。
值得注意的是,以往的方法侷限於多視角影像的獲取,只有在特定場景的小資料集上(與訓練資料相同 domain)才會有比較好的結果,比如 Multi-PIE。而我們提出的方法則沒有這種限制,可以應用在各種場景中。我們也是第一個在 MegaFace 這種大資料集上進行人臉旋轉的方法。
如下四個表格分別是在 LFW、IJB-A、Multi-PIE 和 MegaFace 的效能
可以看到,無論在哪種測試集上,我們的方法都取得了最好的結果。
總結
在本篇論文中,我們利用三維人臉先驗的優勢,結合我們提出的 Rotate-and-Render 的模組,來進行人臉旋轉。方法的關鍵是,利用 Rotate-and-Render 將人臉旋轉兩次回到原始角度,構建自我監督訊號。並透過 GAN 將渲染的影像轉換為真實影像。透過全面的實驗,論文方法的以下優勢得到驗證:
- 不需要多檢視或者成對的資料,就可以進行訓練,這是大部分現有方法無法實現的。
- 不僅僅可以將人臉旋轉到正面,我們的方法可以旋轉到任意角度。
- 大量的視覺化表明,我們的方法可以生成逼真的旋轉影像,保留原有的紋理細節以及光照等。
- 將生成的影像用於訓練人臉識別模型,可以提高人臉識別的效能。
文末討論
這裡作者也無保留地介紹本文的缺陷。首先文章依賴於現有的三維人臉建模工具,所以不準確的建模會影響生成人物的 ID。同時由於 Render-to-Image 的網路模型選擇隨意,無法處理較高解析度的影像,所以生成結果也許未及本次 CVPR 的平均水準(笑)。
但是因為文章的重點是突出無監督的框架,所以希望把這些可能地改進方向作為整個方向後續可能的未來工作。
更多的細節還請大家參見原文和程式碼。本文的程式碼已經開源。在本次 CVPR 中的展示網址如下:
http://cvpr20.com/event/rotate-and-render-unsupervised-photorealistic-face-rotation-from-single-view-images/
參考文獻
[1] Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and Identity Preserving Frontal View Synthesis. ICCV 2017.