【論文分享】 作者帶你讀CVPR2020-MSFSR
[GaintPandaCV導語] 今天帶來我自己的一篇CVPR2020論文,這篇論文主要針對于大放大倍率情況下人臉超分辨率網(wǎng)絡(luò)出現(xiàn)的性能衰減問題進行思考。現(xiàn)有的人臉超分辨率方法尤其是基于結(jié)構(gòu)先驗知識的人臉超分辨率算法出現(xiàn)性能衰減原因在于:
1、極低分辨率尺度下,難以直接建模高質(zhì)量的人臉結(jié)構(gòu)信息;
2、單階段人臉超分辨率重建方法,難以一步到位直接生成高保真的人臉圖像。
本文則針對上述問題,從人臉結(jié)構(gòu)信息建模層面和網(wǎng)絡(luò)結(jié)構(gòu)層面進行了探究。從人臉結(jié)構(gòu)信息建模層面:采用人臉邊緣線對低分辨率人臉結(jié)構(gòu)先驗知識進行;從網(wǎng)絡(luò)結(jié)構(gòu)層面,采用漸進放大的設(shè)計,在不同階段施加不同粒度的人臉結(jié)構(gòu)先驗知識,逐級重建人臉圖像。
論文鏈接:https://openaccess.thecvf.com/content_CVPRW_2020/html/w31/Zhang_MSFSR_A_Multi-Stage_Face_Super-Resolution_With_Accurate_Facial_Representation_via_CVPRW_2020_paper.html
0. 視頻簡介
這里可能大家不一定都閱讀完,可以先看一下我Virtual Meeting時做的介紹視頻,一分鐘了解這篇論文。
1. 前言
這篇文章主要聚焦的是解決大放大倍率(如8倍放大、16倍放大乃至更高)人臉超分辨率(FSR)任務(wù)中算法存在的性能下降問題。這篇文章是在Tai Ying等人CVPR2018 Spotlight論文:FSRNet[1]上的進一步思考。FSRNet是基于結(jié)構(gòu)先驗知識的人臉超分辨率算法的經(jīng)典之作。它首次提出采用雙分支網(wǎng)絡(luò)結(jié)構(gòu),通過常規(guī)圖像超分辨率放大分支和人臉先驗提取分支,從低分辨率圖像中挖掘不同層次的特征,幫助網(wǎng)絡(luò)進行超分辨率放大。通過顯式引入外部人臉結(jié)構(gòu)先驗知識(人臉解析圖和人臉關(guān)鍵點),不僅提升了輸出高分辨率人臉圖像的分辨率;而且也不需要對人臉圖像進行復雜的預(yù)對齊工作。受益于上述優(yōu)點,F(xiàn)SRNet在一段時間內(nèi)成為基于結(jié)構(gòu)先驗知識的FSR算法中最出色的一種。
但是FSRNet存在以下缺點:公開人臉數(shù)據(jù)集中幾乎沒有提供高質(zhì)量的人臉解析圖,而人臉解析圖的標注是昂貴且復雜的,這使得這類方法的研究變得非常困難;盡管我們可以采用公開數(shù)據(jù)集中普遍提供的人臉關(guān)鍵點作為外部人臉結(jié)構(gòu)先驗知識,但是何種密度的人臉關(guān)鍵點能夠最大化FSR網(wǎng)絡(luò)的重建性能也是未知的。
本文給出的解決方案:采用人臉邊緣線作為人臉結(jié)構(gòu)表示方式,一方面能夠以極低成本擴充人臉數(shù)據(jù)集規(guī)模;另一方面擺脫了關(guān)鍵點密度的約束,直接用輪廓線代替點。
2. 人臉邊緣線
在人臉對齊領(lǐng)域,來自清華大學和商湯科技的Wayne Wu等人首次“人臉邊緣線”的概念[2],旨在解決人臉對齊任務(wù)中各個人臉數(shù)據(jù)集之間定義不一致的問題。通過建立“人臉邊緣線”這一中間表示方式,實現(xiàn)不同數(shù)據(jù)集之間的關(guān)鍵點的相互轉(zhuǎn)換。
而本文認為,人臉邊緣線不僅僅只是一種中間表示方式,其本身就對于人臉幾何結(jié)構(gòu)進行了建模,是一種良好的人臉結(jié)構(gòu)表示方式。
一方面,由于邊緣線的連續(xù)性,無論人臉關(guān)鍵點定義密度如何,表示同一五官特征的關(guān)鍵點都會落在11條人臉邊緣線上。此時我們就將一個復雜的預(yù)測各個數(shù)據(jù)集不同人臉關(guān)鍵點的任務(wù)轉(zhuǎn)換為了一個相對簡單的預(yù)測人臉邊緣線的任務(wù)。
另一方面,人臉邊緣線本文就是對人臉結(jié)構(gòu)的一種較為完備的建模。其相較于人臉關(guān)鍵點,包含了更完整的人臉結(jié)構(gòu)信息;相較于人臉解析圖,對于五官內(nèi)部的結(jié)構(gòu)特征(如鼻翼)有更精確的刻畫。
本文在Wu等人的“人臉邊緣線”的基礎(chǔ)上,針對于低分辨率人臉圖像的特點,本文對原始的13條人臉邊緣線進行了定義的簡化,將描述上下眼瞼的邊緣線合并成了一個完整的閉合回路。本文采用的人臉邊緣線定義如下:

給定一張人臉圖片,給出適當密度的L個人臉關(guān)鍵點標注
將S個人臉關(guān)鍵點(本文選取了68個人臉關(guān)鍵點)劃分為N個子集合(11條人臉邊緣線),并且將每一個子集合內(nèi)部的關(guān)鍵點按照語義順序順次鏈接,得到二值化圖表示的人臉邊緣線;
根據(jù)二值化人臉邊緣線以及標準差為sigma的高斯表達式將人臉邊緣線轉(zhuǎn)化為人臉邊緣線熱力圖。
具體的人臉邊緣線的生成過程可以參考論文、補充材料,以及對應(yīng)的相關(guān)代碼(放心,我把這一塊開源在https://github.com/cydiachen/MSFSR/)
3. 重思考FSR網(wǎng)絡(luò)結(jié)構(gòu)
在有了更優(yōu)的人臉結(jié)構(gòu)化表示方法之后,我們進一步重思考了人臉超分辨率網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計?,F(xiàn)有的雙分支網(wǎng)絡(luò)設(shè)計通過額外分支顯式地引入人臉結(jié)構(gòu)先驗信息,這種結(jié)構(gòu)不僅直觀且有效。但是,雙分支網(wǎng)絡(luò)內(nèi)部本身耦合較緊密,很難通過對每部分單獨優(yōu)化實現(xiàn)整體的優(yōu)化。
因此,我們對現(xiàn)有的FSR網(wǎng)絡(luò)結(jié)構(gòu)進行了重思考,采用三大模塊作為基本組件,通過靈活的連接,組成一個完整的FSR網(wǎng)絡(luò)。

三大基礎(chǔ)模塊按照功能進行劃分:基礎(chǔ)上采樣模塊(Basic Upscale Module,BUM),邊緣預(yù)測模塊(Boundary Estimation Module,BEM),邊緣融合模塊(Boundary Fusion Module,BFM)。
其中,基礎(chǔ)上采樣模塊將輸入的低分辨率圖片進行了尺度放大。這里的基礎(chǔ)上采樣模塊可以被替換為任意通用圖像超分辨率算法,這樣FSR算法就能夠充分受益于通用圖像超分辨率算法的進化。
邊緣預(yù)測模塊則是采用漏斗結(jié)構(gòu),將經(jīng)過了基礎(chǔ)上采樣模塊后的大尺寸圖像中人臉邊緣線的可能位置進行預(yù)測。而邊緣融合模塊則是將大尺寸圖像中的特征信息和邊緣預(yù)測模塊中的人臉邊緣線信息進行加權(quán)融合,用以最終生成人臉圖像。
本文的網(wǎng)絡(luò)設(shè)計中:
基礎(chǔ)上采樣模塊引入了通道注意力機制以及后置上采樣模塊的亞像素卷積層,以較低的計算量實現(xiàn)了圖像的高效放大;
邊緣融合模塊則同樣通過通道注意力機制,通過對融合后的特征圖同樣引入通道注意力機制實現(xiàn)了通道權(quán)重間的自適應(yīng)調(diào)整,使網(wǎng)絡(luò)根據(jù)最終的重建結(jié)果,動態(tài)調(diào)節(jié)不同特征圖的融合比例,使網(wǎng)絡(luò)充分利用不同通道中的信息。
具體的網(wǎng)絡(luò)結(jié)構(gòu)參照下圖:

4. 多階段FSR網(wǎng)絡(luò)結(jié)構(gòu)
本文進一步提出,現(xiàn)有的單階段直接放大的FSR網(wǎng)絡(luò)在處理超過8倍的上采樣操作時,性能會出現(xiàn)明顯的下降。正因為在上一步,我們將整個FSR網(wǎng)絡(luò)的組成分解為了三個模塊的組合與連接,我們可以靈活的將一個單階段直接放大的網(wǎng)絡(luò)改進為多階段漸進放大的網(wǎng)絡(luò)。
多階段的FSR網(wǎng)絡(luò)不單單是簡單的將模塊進行級聯(lián)鏈接,同時還需要考慮到不同階段網(wǎng)絡(luò)處理的任務(wù)難度的差異。
在網(wǎng)絡(luò)的初始階段,圖像的分辨率較小,邊緣預(yù)測模塊預(yù)測精確的人臉邊緣線的難度較大,因此直接施加細粒度的人臉邊緣線會導致網(wǎng)絡(luò)難以收斂;伴隨著網(wǎng)絡(luò)的深度增加,圖像的尺寸也逐級增大,此時我們需要逐漸的約束人臉邊緣線的粒度,從粗粒度的邊緣線變?yōu)榧毩6鹊娜四樳吘壘€,進一步約束網(wǎng)絡(luò)進行圖像的”精修“。
本文網(wǎng)絡(luò)設(shè)計了一個從粗到細的邊緣線監(jiān)督機制,通過人臉邊緣線粒度進行數(shù)值控制,探究了不同階段人臉邊緣線的最佳設(shè)置,充分提升了多階段網(wǎng)絡(luò)的性能。
同時,在多階段網(wǎng)絡(luò)重建過程中,我們還嘗試了在網(wǎng)絡(luò)的不同階段直接使用生成對抗網(wǎng)絡(luò)結(jié)構(gòu)來逐級優(yōu)化各個階段的輸出結(jié)果。但是,試驗效果不如人意。
主要原因在于:網(wǎng)絡(luò)的前期階段,圖像的分辨率尺寸較小,直接采用生成對抗網(wǎng)絡(luò)會給重建的圖像引入過大的額外噪聲,不利于下一級網(wǎng)絡(luò)的重建。因此,我們只在多階段網(wǎng)絡(luò)的最后一個階段引入生成對抗網(wǎng)絡(luò)結(jié)構(gòu),生成更加逼真的人臉圖像。
5. 消融實驗
我們進行了若干實驗驗證了前述提出的假設(shè):
我們首先進行了人臉邊緣線有效性試驗,在相同的試驗設(shè)置下,我們對人臉邊緣線、人臉解析圖和不同標注密度的人臉關(guān)鍵點進行了試驗比較。試驗結(jié)果如圖所示。

從結(jié)果中體現(xiàn)了一些有趣的結(jié)論:
橫向?qū)Ρ?個人臉關(guān)鍵點的FSR算法結(jié)果和81個人臉關(guān)鍵點的FSR算法結(jié)果,可以看出:當人臉關(guān)鍵點的數(shù)目增加,F(xiàn)SR網(wǎng)絡(luò)的性能逐步提升。進一步對比人臉關(guān)鍵點和人臉解析圖作為人臉結(jié)構(gòu)先驗知識的FSR算法,驗證了引入的外部人臉表示所攜帶的人臉結(jié)構(gòu)語義信息越多,F(xiàn)SR網(wǎng)絡(luò)的性能越好。
橫向?qū)Ρ?1個人臉關(guān)鍵點和194個人臉關(guān)鍵點的FSR網(wǎng)絡(luò)的性能表現(xiàn),本文發(fā)現(xiàn):更加密集的人臉關(guān)鍵點信息并不能有效提升FSR算法的性能。
筆者認為主要原因可能有兩點:
i)輸入人臉圖像的分辨率低,進行人臉關(guān)鍵點檢測時,大量的點會產(chǎn)生漂移,為網(wǎng)絡(luò)的訓練引入了過多的誤差;
ii)FSR網(wǎng)絡(luò)設(shè)計時,網(wǎng)絡(luò)的容量限制,導致進行先驗預(yù)測的模塊無法抽象出密集的關(guān)鍵點表示,因此造成了網(wǎng)絡(luò)的性能下降。
而我們的人臉邊緣線則通過引入了線的連續(xù)性,不僅包含了盡可能多的人臉關(guān)鍵點信息,而且對人臉結(jié)構(gòu)信息的描述也更加完備。自然而然,引入了人臉邊緣線的FSR網(wǎng)絡(luò)的重建效果大幅度領(lǐng)先。

同時,我們還對從粗到細的監(jiān)督機制有效性進行了試驗驗證。從表中可以看出:在網(wǎng)絡(luò)的初始階段,采用更粗粒度的人臉邊緣線能夠有效提升網(wǎng)絡(luò)的重建效果;伴隨網(wǎng)絡(luò)重建的圖像分辨率尺度漸進增大,人臉邊緣線的粒度也應(yīng)該變得愈加精細。
6. 與其他方法比較
我們將我們的方法與近兩年的其他網(wǎng)絡(luò)進行了比較。為了全面展示我們算法的性能,我們選取了【通用圖像超分辨率算法】EDSR[3], EnhanceNet[4], ESRGAN[5];【FSR算法】URDGN[6], FSRNet[1], PFSR[7]作為比較。


這里我簡單對于幾個客觀指標進行一下簡單介紹:幾個客觀評價指標中,PSNR,SSIM指標都是越高越好;PI(Perception Index)指標是越低越好。從結(jié)果中可以看出,我們的算法在客觀指標上,也優(yōu)于其他競爭對手。
同時,我們還首次在評估人臉圖像重建效果的過程中采用了公開的人臉對比API(這里用的是曠場的Face++人臉對比API)。
我們的算法不僅在通用圖像質(zhì)量評估指標上領(lǐng)先,同時重建的圖像與真實人臉圖像的身份相似度也保持了極高的相似度,證明我們的算法在身份保真度上也遙遙領(lǐng)先。

7. 算法泛化性結(jié)果展示
我們在補充材料中還加入了我們算法泛化性結(jié)果的展示。這里,我們選擇在CelebA-HQ數(shù)據(jù)集上訓練的MSFSR算法,在WebFace數(shù)據(jù)集上展示了算法的重建效果。

8. 算法的Failure Cases
當然,我們的方法也并不全能,我們同樣在補充材料中提供了我們算法重建效果不理想的結(jié)果。
我們其實從這些重建效果不理想的圖片中,能夠發(fā)現(xiàn)一些失敗cases的共性:
本文的方法對于大偏轉(zhuǎn)角度的人臉圖像的重建效果不佳。這是未來方法可以努力的方向,也是人臉超分辨率一個難啃的硬骨頭。
本文的方法在恢復嬰兒人臉圖像時,效果也不夠好。這可能是和數(shù)據(jù)集中嬰幼兒人臉的比例不均衡有關(guān),嬰幼兒人臉的幾何結(jié)構(gòu)特征還是與成年人存在差異的,因此對成年人效果較好的FSR算法可能在嬰兒圖像上性能表現(xiàn)就存在下降。

9. 總結(jié)
這次的總結(jié)想談一談我寫文章時的一些心得體會。這篇文章之前BB就一直和我約稿,最近由于工作原因一直一拖再拖,終于完成了整篇介紹文章的工作。
其實很多人很好奇,怎么樣才能夠發(fā)表一篇優(yōu)質(zhì)的論文。其實我的經(jīng)歷很簡單:首先,你需要大量閱讀已有的頂會的論文,就和CNN一樣,只有有了高質(zhì)量的輸入后,才能夠有高質(zhì)量的輸出。其次,Coding能力在現(xiàn)階段還是非常重要的。你會在頂會上看到一些非常優(yōu)秀的工作,但是由于各種原因,作者沒有提供完整的源代碼,這時候你就需要自己對照著文章進行復現(xiàn)。
我的這篇文章的大部分改進思路都來源于我復現(xiàn)FSRNet論文時踩坑填坑的過程。更多的,還需要積極的和其他朋友(網(wǎng)友就很不錯)一起交流分享。
在這里我也借這個機會感謝在我寫論文過程中提了很多意見的好友,無論是最初帶我打比賽的武大的丁新博士,去年暑期實習的同事,來自某獨角獸的阿帆學長,港中文的浩哥,我的這篇文章的產(chǎn)出離不開你們各位的幫助。
當然未來,我們還有GiantPandaCV這個平臺,通過分享論文解讀,代碼思路,希望大家能夠一起交流,一起進步。
10. 參考文獻
[1] Fsrnet: End-to-end learning face super-resolution with facial priors.
[2] Look at boundary: A boundary-aware face alignment algorithm.
[3] Enhanced deep residual networks for single image super-resolution.
[4] Enhancenet: Single image super-resolution through automated texture synthesis.
[5] Esrgan: Enhanced super-resolution generative adversarial networks.
[6] Ultra-resolving face images by discriminative generative networks.
[7] Progressive face super-resolution via attention to facial landmark.
歡迎關(guān)注GiantPandaCV, 在這里你將看到獨家的深度學習分享,堅持原創(chuàng),每天分享我們學習到的新鮮知識。( ? ?ω?? )?
有對文章相關(guān)的問題,或者想要加入交流群,歡迎添加BBuf微信:
為了方便讀者獲取資料以及我們公眾號的作者發(fā)布一些Github工程的更新,我們成立了一個QQ群,二維碼如下,感興趣可以加入。
