李紅艷,曾 浩,魏藝杉
(重慶郵電大學 通信與信息工程學院,重慶 400065)
視頻人臉檢測是視頻人臉識別的基礎,只有在很好的人臉檢測效果的前提下,視頻人臉識別才會對有較好的識別效果。視頻人臉檢測一般更貼近于日常生活,這些要檢測人臉的視頻大多數都是在室外場景拍攝的,相比較于一般的人臉檢測難度更大。因為視頻人臉檢測不僅面臨著和圖像人臉檢測同樣的光照、遮擋、姿態等問題,實際應用中視頻的圖像質量通常不佳,人臉五官不清晰,這些因素都進一步加大了人臉特征提取與檢測的難度。
本文提出了一種基于人臉超分辨率重建的網絡視頻人臉檢測模型,主要工作有以下幾點:①提出了一種將人臉檢測器與人臉超分辨率重建網絡相結合的SR Face Detection模型,該模型以RetinaFace算法[1]為人臉檢測器進行人臉粗提取,提取的人臉經過人臉超分辨率重建網絡人臉超分后進行人臉的精細篩選。②根據所提出的SR Face Detection模型需求,在前人基于面部注意力標志的漸進式人臉超分算法[2]的基礎之上,設計了一個適合于人臉檢測的人臉超分辨率網絡。③為了滿足新模型的實時性的需求,提升檢測速度并降低模型訓練難度,對RetinaFace人臉檢測器進行優化。
人臉檢測算法通常將圖像中的所有人臉以邊界框的形式輸出,可分為早期算法時代、AdaBoost框架時代和深度學習時代3個階段。早期的人臉檢測算法使用了模板匹配技術,將圖像中某個區域進行人臉-非人臉二分類的判別,如H.Rowley等提出的方法。之后是AdaBoost時代使用人工設計的算子進行人臉檢測。
卷積神經網絡出現后很快被應用于人臉檢測,檢測精度大幅度超越之前的AdaBoost算法。Cascade CNN[3]是傳統技術和深度網絡相結合的一個代表。Faceness-Net[4]算法設計了一個更有效的CNN,提高了速度和精度。文獻[5]提出的MTCNN大幅提高了目標檢測效率,尤其針對小目標檢測精度有很大的提升。文獻[6]提出的SSH實現了多尺度的人臉檢測。RetinaFace可以利用聯合超監督和自監督多任務學習的優勢,在各種規模的人臉上執行像素級人臉定位。
本文主要針對網絡視頻中的人臉進行檢測,針對視頻幀圖片低質量的問題引入了圖片超分辨率重建技術(super-resolution reconstruction,SR)[7]。因此,在人臉檢測研究基礎之外又對SR進行研究。早期的超分辨率算法是基于學習的方式來研究的。
深度學習出現并在計算機視覺各個領域廣泛使用后,也應用于圖像超分辨率重建。W.Shi等[8]提出了高效的ESPCN網絡。該網絡直接在低分辨率特征圖上提取特征,重新進行像素排列得到高分辨率圖像。J.Kim等[9]提出了VDSR超分辯率網絡,該網絡架構在全卷積層的情況下加深了整體網絡。同時作者使用ResNet網絡來驅使整個網絡來學習低分辨率圖像與高分辨率圖像之間的殘差,并取得了很好的效果。C.Ledig等[10]提出了SRGAN,作者初次利用生成對抗網絡(generative adversarial network,GAN)處理超分辨率的問題。其利用感知損失與對抗損失來提升恢復圖片的真實感。EDSR[11]是NTIRE2017超分辨率挑戰賽上獲得冠軍的方案,其去掉了圖像超分辨率網絡中ResNet多余的模塊,通過擴大模型的尺寸來提升圖片質量。文獻[12]主要是一種端到端的人臉超分辨率重建技術,其通過人臉圖像的特殊性,從人臉圖像中提取幾何先驗信息來提高超分辨率的效果。文獻[13]提出了一種人臉圖像重建的方法,即使用殘差密集網絡作為基本單元,并在低層中組合了Inception體系結構。同時該方法主體結構使用了GAN,并且加入了激活前功能定義的改進的感知損失來提升重建人臉圖像的質量。
針對低質量視頻人臉的特點,本文基于優化的RetinaFace算法與漸近人臉超分辨率重建網絡提出一種SR Face Detection模型。該模型主要是針對網絡視頻由于低質量問題導致人臉檢測準確率低、人臉識別準確率低的問題進行改良的。
總體來說,該人臉檢測模型整體網絡結構主要包括人臉檢測器和人臉超分辨率重建網絡兩部分,其中人臉檢測器負責粗篩選視頻幀圖片中的人臉,而人臉超分辨率重建網絡負責對篩選出的人臉進行超分辨率重建,然后再進行二次的精細篩選,將一些模糊的誤檢人臉剔除。具體的模型結構如圖1所示。整體框架實施步驟如下:首先,將預處理后的視頻幀圖片使用人臉檢測器進行檢測,其中在實際檢測時會根據實際情況設置合適的人臉檢測置信度閾值,輸出視頻幀圖片中所有可能為人臉的區域。其次,將檢測出來的所有可能為人臉的區域進行人臉的模糊度判別。若判別為高質量人臉直接放入檢測結果。如果判別為低質量人臉,則送入人臉超高分辯率重建網絡的生成對抗網絡的生成器中,進行人臉超分辨率重建,最后,使用人臉超高分辨率重建網絡生成對抗網絡的判別器進行判別。人臉超分辨率重建網絡的判別器會將超分后的低分辨率人臉與高分辨率人臉進行判別區分,同時會對超分后的人臉與非人臉進行判別,以將一些非人臉剔除,降低人臉檢測的誤檢率。
由圖1可知,本文提出的SR Face Detection模型是在人臉檢測器后增加了一個人臉超分辨率重建網絡以達到對人臉檢測器檢測的人臉進行超分處理,進而進行人臉二次篩選的目的。本文參考基于注意力面部坐標的漸近式人臉超分算法的結構,結合實際提出的人臉檢測模型的需求,給出了一種人臉超分辨率重建網絡(簡稱,人臉SR網絡)。該網絡的主體是GAN網絡,整個網絡采用漸進式訓練的方式。同時在每一步的超分訓練中加入面部注意力損失與感知損失來集中注意力到人臉,減少超分辨率重建任務的復雜度。在步驟2與步驟3中通過增加像素差和熱圖值來更詳細地恢復面部屬性[14]。具體來講,采用一個人臉對齊網絡(FAN)[15]在步驟1生成網絡的輸出效果圖中提取出適合的人臉熱圖用于步驟2的人臉超分。隨后從步驟2的生成網絡的輸出結果中提取合適的人臉熱圖,并將兩次提取的熱圖進行比較,選擇最合適的熱圖在步驟3中進行面部屬性恢復,減少整體訓練時間。

圖1 基于超分辨率重建的人臉檢測模型的網絡結構
針對低質量人臉特征提取困難的問題,本文中人臉SR網絡的生成網絡以殘差密集網絡(RDB)[16](如圖2所示)作為該網絡特征提取的基礎網絡。由于RDB中密集連接和局部特征融合的特性,有利于提取更加深層次的網絡特征。同時密集連接可以大大減少參數,局部特征融合可以更有效傳播特征。生成網絡每部分的超分網絡塊均由3個密集殘差塊提取并傳播特征后經過一個Concat層將其特征圖進行拼接,然后經過一個1×1的卷積層降低訓練難度,其后連接批處理歸一化層(BatchNorm),轉置卷積層(ConvTrans)和整流器線性單元(ReLU)用于人臉超分辨重建。實際訓練時,生成網絡與判別網絡交替訓練,先訓練判別網絡,然后訓練生成網絡,不斷往復。人臉SR網絡的判別網絡具有與生成器網絡相對應的體系結構,用于判別生成器網絡生成的人臉與目標人臉的差距。該判別體系結構由卷積層(Conv)、平均池化層(AvgPool)和Leaky ReLU組成。為了達到人臉檢測的效果,本文將判別網絡模塊末端的全連接層設計為兩個并行的串聯全連接層,從而實現區分是否為高清人臉和區分人臉/背景的目的。同時在圖中可以看到在每個步驟中的生成器到判別器之間都增加了一個額外的卷積層,以便將中間特征圖轉換為RGB圖像。

圖2 殘差密集塊
針對人臉SR網絡的漸進式訓練,在步驟1中,每個網絡使用一個塊進行訓練,并學習特征進行超分將圖像放大2倍。并將放大的圖像輸出再通過判別器的相應部分,然后將輸出與目標圖像進行比較。在步驟2中,將步驟1的放大2倍的人臉超分效果圖作為步驟2的輸入圖像,進行二次的人臉超分辨率重建。該步驟采用雙線性插值將步驟1中的2倍放大輸出的圖像再次放大2倍,然后將插值后的輸出與步驟2中的4倍放大輸出的圖像相加。該過程表示如下
(1-α)*f(GN-1(I))+α*GH(I)
(1)
其中,G是人臉SR網絡,f是雙線性插值,I表示輸入圖像,N{2,3} 表示步數,權重比例從0線性增加到1。步驟2中同樣將放大圖像輸入到判別器相應的部分,通過判別器將放大的輸出與相應的目標圖像進行比較。在步驟3中執行與上述相同的過程。漸進式訓練方法使網絡能夠有效、穩定地學習每一步具有不同損失的超分辨人臉圖像。
本文所提出的SR Face Detection 模型,在提高其準確率的同時,以犧牲檢測速率為代價,因此對人臉檢測器進行優化改良。
RetinaFace是一個利用自監督與聯合監督的多任務學習的單階段人臉檢測器,在各種人臉尺度上執行像素級的人臉定位,整個模型包含了人臉檢測、人臉對齊、像素級的人臉分析和3D密集通信回歸。本次通過對論文的詳細分析發現在RetinaFace中引入用來預測3D人臉信息的分支的self-supervised自監督網格解碼器分支,對低質量視頻人臉檢測效果提升不大,且提高訓練難度。本文根據該模型的需求,需要盡可能多地檢測人臉,同時為了降低模型復雜度,提高模型檢測速率,對人臉檢測器進行改良簡化,將用來預測3D密集通信回歸的分支去掉。
為了進一步彌補由于增加了人臉SR網絡所造成的檢測速率慢的問題,本文進一步對基礎網絡的選取進行優化。在原始的RetinaFace算法中基于算法檢測精度與檢測速度考慮,基礎網絡分別使用Resnet152或輕量級的mobilenet網絡。本文由于優化時去掉用于預測3D人臉信息的自監督網格解碼器分支,同時基于實際模型檢測速率與檢測準確率的需求,選用訓練好的Resnet50作為基礎網絡。最終簡化后的算法框架如圖3所示。

圖3 優化改良后的RetinaFace算法框架
本文的人臉檢測模型的損失主要包含了人臉檢測器的損失與人臉超分辨率重建的損失兩大模塊。其中人臉檢測器的損失采用改良優化的RetinaFace算法損失函數,人臉超分辨率重建的損失采用漸進式人臉超分辨率重建算法的損失函數。
(1)改良后的RetinaFace算法損失
本次研究根據實際情況對人臉檢測模型中的人臉檢測器進行改良,相應的對其算法的損失函數進行改良,去掉了3D密集通信回歸損失Lpixel,只保留了相關的分類損失、檢測框回歸損失和面部標志回歸損失,以提高算法的訓練速度與檢測效率。總損失函數表示如下
(2)

(2)人臉超分辨率重建算法的損失
由之前介紹的網絡結構可以發現人臉超分部分是采用漸進式訓練方式,一共包括3個步驟,并且在訓練過程中加入感知機制、注意力機制、熱圖。因此該人臉SR網絡模塊的損失如下:
步驟1
Ls1=αLMES+βLfeat/i+γLWGAN
步驟2 & 步驟3
Ls2=αLMES+βLfeat/i+γLWGAN+λLheatmap+ηLattention
(3)
其中,α,β,γ,λ,η均為權重系數;LMES為圖像重構誤差;Lfeat/i為感知損失;LWGAN為對抗損失;Lheatmap為熱圖損失;Lattention為面部注意力損失。
由于本文的人臉超分辨率重建網絡的損失包括3個步驟的損失。因此本文的SR Face Detection模型的損失也分為3個步驟,以下分別給出各步總的損失:
步驟1
Ls=Lface+Ls1=Lface+αLMES+βLfeat/i+γLWGAN
步驟2 & 步驟3
Ls=Lface+Ls2=Lface+αLMES+βLfeat/i+
γLWGAN+λLheatmap+ηLattention
(4)
WIDER FACE數據集是人臉檢測的基準數據集,該數據集標注效果好、準確率高。本文在訓練優化RetinaFace檢測器時使用了該數據集。
在人臉SR網絡訓練過程中使用了兩個不同的數據集:對齊的數據集和未對齊的數據集。對齊后的CelebA數據集用于測試面部細節的恢復精度。未對齊的CelebA和AFLW數據集用于驗證本文中人臉SR網絡在現實世界中的泛化性。對齊的面部圖像被裁剪為正方形,未對齊的面部圖像數據集根據邊界框區域裁剪。將裁剪后的圖像調整為128×128像素以用作步驟3的目標,并雙線性下采樣為64×64像素作為步驟2的目標,將32×32像素作為步驟1的目標,將16×16像素作為低分辨率圖像輸入。本文使用CelebA數據集對齊的162 770張圖像作為訓練集,19 867張圖像作為測試集。同時使用CelebA未對齊的80 000張裁剪圖像和AFLW未對齊的20 000張裁剪圖像進行實際適用性訓練。最后使用CelebA的5000張圖像和AFLW的4384張圖像作為測試集。此外由于目前沒有公開的視頻幀圖片數據集,故而本文手動標注了1萬張視頻幀圖片作為測試的一個數據集。
本次人臉檢測模塊包含兩部分的訓練:人臉檢測器的優化訓練與人臉SR網絡的訓練。兩者的編程語言均采用Python 3.6,均是在Ubuntu 18.04操作系統中編程實現,使用兩臺GTX1080在PC端進行實驗。其中改良優化的RetinaFace是在MXnet深度學習框架進行訓練的,初始的學習率設為10-3,最小批量大小設置為16。人臉SR網絡訓練采用的是PyTorch深度學習框架,初始學習率設置10-3,最小批量大小設置為16。每個步驟的訓練迭代由超參數設置,訓練模型時的迭代次數分別為5萬、5萬、10萬次。
本文采取評估參數主要是以下5個:準確率(P)、召回率(R)、F-measure(F)、平均精度均值mAP(mean averge precision)和每秒幀率FPS(frame per second)。其中mAP反應目標檢測的總體效果,其公式如下
(5)
其中,n表示類別個數,i表示某個類別,APi表示平均精度。準確率(P)、召回率(R)與F-measure的計算公式前人已經給出,本文不再贅述。
本文的模型是基于人臉超分辨率重建的人臉檢測模型,主要由人臉檢測器對圖片的人臉進行粗篩選,將人臉超分后再進行一次精細的篩選,以提高模型檢測的準確率。為了進一步驗證本文提出的人臉檢測模型的性能,將本文提出的SR Face Detection模型和原始的RetinaFace算法,以及MTCNN算法進行對比。本文首先在手動標注的1萬張幀圖片上進行人臉檢測模型測試,評估該模型的性能。設置同等的實驗環境,實驗結果見表1,本文的模型相比于MTCNN算法準確率提高了0.136,召回率提高了0.082,mAP提高了0.134。相比于RetinaFace算法,雖然召回率降低了0.03,但準確率提高了0.015,mAP提高了0.015。但是總體來講由于本文在人臉檢測器后增加了人臉超分辨率重建網絡故而其檢測效率低于RetinaFace算法。

表1 視頻人臉檢測實驗對比數據
其次,本文在WIDER FACE數據集上對3個算法進行對比,設置相同的實驗環境,實驗結果見表2,本文提出的人臉檢測模型性能要優于所對比MTCNN算法與RetinaFace算法。其中,本文提出的模型與MTCNN相比準確率提高了0.153,召回率提高了0.115,mAP提高了0.155。相對比于RetinaFace算法,本文提出的模型準確率提高了0.017,mAP提高了0.019,但是召回率降低了0.004,但本文提出的模型檢測效率要低于RetinaFace算法。經過以上兩個數據集的測試,進一步說明了本文提出的SR Face Detection模型雖然檢測的召回率與檢測效率低于RetinaFace算法,但是其人臉檢測的準確率與總體目標檢測效果有不錯的提升。

表2 WIDER FACE數據集人臉檢測實驗對比數據
同時,由表1與表2可知,在相同數據集的情況下,文中所提出的SR Face Detection模型是以犧牲人臉檢測的檢測效率為代價來提高模型檢測的準確率。相比于MTCNN模型,本文的模型在人臉檢測部分使用了特征金字塔技術,因此FPS要略高于MTCNN模型的。但相比于RetinaFace算法,本文所提出的模型由于增加了人臉SR網絡,因此FPS要略低。
為了進一步對比MTCNN模型、RetinaFace模型和SR Face Detection模型的人臉檢測效率,本文對WIDER FACE數據集上的部分測試圖片做了2種模糊度的處理,形成“原圖”、“20%模糊度”、“50%模糊度”3個子集,在3個模型上進行FPS驗證對比。實驗結果見表3,在“原圖”子集上,SR Face Detection模型與RetinaFace模型的FPS相差3.4,與MTCNN模型相比要高12.9。當子集為“20%模糊度”時,SR Face Detection模型與RetinaFace模型相比FPS降低6.2,與MTCNN相比FPS高10.5。“50%模糊度”子集上,SR Face Detection模型所測試數據的FPS為21.4。與RetinaFace模型相比低9.5,與MTCNN相比FPS僅僅高4.7。由上述可知,SR Face Detection模型在處理清晰圖片與模糊圖片時的人臉檢測效率相差較大。人臉清晰度高時該模型人臉檢測效率與原始的RetinaFace算法相差較小,但是在模糊度較高時本模型的檢測效率則會因為處理模糊人臉的問題有一定幅度的降低,但最終總是高于MTCNN的檢測效率。

表3 模糊度不同數據的FPS實驗對比
此外,本文還在WIDER FACE數據集上進行了廣泛的消融實驗,以檢測本文所優化改良的部分對人臉檢測性能的定性影響。設置IOU=0.5,驗證Easy,Medium和Hard幾種不同設定的子集的AP。如表4所示,“FPN+Context+DCN+Lpts”為簡化后的RetinaFace人臉檢測器,與原來未簡化的“FPN+Context+DCN+Lpts+Lpixel”相比較,在“Easy”子集上改良的人臉檢測的AP降低了0.474%,但是當子集為“Medium”時僅降低了0.1%,“Hard”子集上提升最大,降低了0.163%。表明去掉用來預測3D信息的分支對檢測結果影響不大。此外,本文提出的模型與RetinaFace算法相比較,在“Easy”子集上本文的模型對人臉檢測的AP提升效果不明顯,但是當子集為“Medium”時提升了0.112%,在“Hard”子集上提升最大,提升了0.756%。這表明本文給出的SR Face Detection模型具有良好的泛化性,在3種不同檢測難度的數據集上表現出更加優異的結果,并且人臉檢測場景越復雜,本文的算法準確率提升越明顯。

表4 人臉消融實驗對比數據
本文還將MTCNN算法、原始的RetinaFace算法與本文提出的SR Face Detection模型的檢測結果分別送入人臉識別模型ArcFace,進行對比測試。如表5所示,通過在3個測試集上進行測試對比,可以發現本文提出的模型檢測出的人臉在進行人臉識別時,其人臉識別的準確率相比于MTCNN算法和RetinaFace算法檢測出的人臉進行人臉識別的準確率要高。由此可知本文提出的模型對人臉識別性能有明顯的提高。

表5 人臉識別效果比對
本文中提出的SR Face Detection人臉檢測模型測試效果如圖4所,可以看出本文對測試集的測試效果良好。

圖4 人臉檢測結果
本文還給出了人臉超分辨率重建效果圖。如圖5所示,第一行為模糊人臉圖片,第二行為本文的超分辨率人臉圖片,最后一行為相對應的原圖。由三者的對比可知本文給出的人臉超分辨率重建網絡對人臉的細節還原較好,有利于人臉檢測的精細篩選,進而提高人臉檢測的準確率,也有利于后期的人臉識別。

圖5 人臉超分辨率重建效果
最后本文給出了實際網絡視頻人臉檢測的效果圖。如圖6所示,圖6(a)為視頻幀中具體檢測的某區域中的某個人臉,可以看出本文提出的人臉檢測模型對復雜場景的人臉檢測有良好的效果,在人臉殘缺的情況下依然可以檢測出來。圖6(b)為某個視頻中許多幀圖片中各自檢測的人臉,可以看出無論是正臉、扭曲人臉、模糊人臉、光線強或者光線暗的情況的人臉,本文提出的SR Face Detection模型均可以檢測出,進一步說明了本文所提出模型在實際應用中的有效性。

圖6 視頻人臉檢測效果
雖然本文提出的模型對視頻中人臉檢測有不錯的檢測效果,但是在實際的視頻人臉檢測中一般要檢測的為活體人臉,其它非活體人臉均為干擾項。而本文提出的模型將如圖6(b)中視頻中的照片也進行了檢測,不能區分活體與非活體。下一步的研究工作,針對視頻中的活體人臉與非活體人臉進行區分,檢測時只檢測活體人臉,不檢測非活體人臉。
由于網絡視頻本身的質量比較低的特點,對網絡視頻進行人臉檢測難度會加大,準確率會降低,最后還會影響人臉識別的效果。本文提出一種基于人臉超分辨率重建的人臉檢測模型,該模型主要結構包括人臉檢測器和人臉超分辨率重建網絡這兩部分。以改良優化的RetinaFace算法作為人臉檢測器,將檢測出的人臉送入人臉超分辨率重建網絡進行人臉超分辨率處理,同時進行人臉的二次判別,將檢測器誤檢的非人臉剔除提高檢測的準確率。由實驗結果可知,本文所提出的模型具有很好的準確率,進一步提高了低質量人臉的檢測性能,尤其是檢測場景越復雜時,模型的提升效果越好。同時本文提出的模型由于對模糊人臉進行了超分辨率處理,實驗結果表明,也有利于后期低質量人臉識別準確率的提高。