姜義,呂榮鎮,劉明珠,韓闖
(哈爾濱理工大學 測控技術與通信工程學院,黑龍江 哈爾濱 150080)
Coronavirus disease 2019(COVID-19)雖然在我國已經得到了很好的控制,但仍然在全球一些地區蔓延。COVID-19 是指2019 年開始流行的新型冠狀病毒感染導致的肺炎,是一種急性呼吸道傳染病[1]。導致該肺炎的病毒可以通過呼吸道飛沫在人群中進行大范圍的傳播。此外,病毒感染者接觸過的物體也可能殘留病毒,人們可能通過接觸這些物體導致感染。所以戴口罩出行和在公共場所保持社交距離成為了阻止疫情傳播的重要方法。同時由于該病毒具有接觸傳染的特性,在公共場合使用指紋或掌紋等接觸式的身份識別方式同樣存在安全風險。人臉識別系統由于能夠避免不必要的接觸因而比其他識別方式安全得多。在口罩成為生活必需品時,也對現有的人臉識別系統提出了挑戰。目前的基于深度學習的人臉識別方法[2-3],在面對無遮擋物的人臉識別上取得了很好的識別率,但是在大面積遮擋的人臉面前已經不再能夠準確識別身份了[4]。其主要原因在于訓練人臉識別神經網絡模型時,沒有使用戴口罩的人臉數據進行訓練。所以,為了提高人臉識別系統對口罩遮擋人臉的識別率,需要一個具有大量樣本的戴口罩的人臉數據集。在目前該類型數據集缺乏的情況下,為了更好地訓練神經網絡對戴口罩人臉進行識別,本文通過給現有的人臉識別數據集中的人臉圖像戴口罩的方式解決該問題。
Anwar 等[5]采用基于dlib 的面部檢測器來識別人臉和口罩上的6 個關鍵點,然后將口罩上的關鍵點與人臉上的關鍵點對應,最后將口罩圖片進行拉伸等變換后貼圖在人臉圖片上的相應位置得到戴口罩的人臉圖片。Cabani 等[6]采用的技術與Anwar 相似,不同的是采用了12 個人臉的關鍵點和12 個口罩關鍵點來對人臉圖片進行口罩佩戴。Anwar 與Cabani 的方法雖然較為簡單易用,但是得到的佩戴口罩人臉圖片真實性不高,有明顯的人工痕跡。
本文認為給人臉圖片戴上口罩本質上是一個圖像融合問題。圖像融合是用特定算法將兩幅或多幅圖像融合成一幅新的圖像。在融合的過程中通過利用圖像的相關性和互補性,使得融合后的圖像達到想要的效果。隨著卷積神經網絡的出現,圖像融合取得了顯著的進展。其中大多數方法都是通過學習低維的自然圖像子空間的編碼,并由此對像素進行預測并約束圖像可能的外觀,最終生成融合后的圖像。
生成對抗網絡(generative adversarial networks,GAN)[7-8]就是一個強大的圖像生成網絡。它包含兩個相互競爭和博弈的神經網絡模型,生成器(generator)和判別器(discriminator)。生成器將噪聲作為輸入并生成圖片,判別器則接收生成器產生的數據和對應的真實數據,訓練得到能正確區分生成數據與原始數據的分類器。這種能從隨機噪聲生成圖像的方式使得生成對抗網絡備受關注。GAN 除了無監督的訓練方法,還能通過給定標簽得到特定的圖像,例如,CGAN[9]就是通過引入一個額外信息進行半監督的圖像生成。Radford 等[10]則是將GAN 網絡和卷積神經網絡進行結合,得到了一個更穩定的深度卷積生成對抗網絡(deep convolutional generative adversarial network,DCGAN),而且極大地提高了生成圖像的質量。此外,Arjovsky 等[11]提出的WGAN 網絡(wasserstein GAN)將計算生成的圖像數據分布與真實的圖像數據分布之間的Jensen-Shannon 距離(簡稱JS 距離)改為Wasserstein 距離(W 距離)。W 距離幫助WGAN 解決了原始GAN 網絡的模式坍塌問題,使得生成的樣本更加多樣化,而且使得訓練更加穩定。WGAN 變體還有WGAN-GP[12]和WGAN-div[13]等,進一步提高了生成的多樣性和圖片質量。
本文提出的方法結合了空間變換網絡和使用金字塔卷積的WGAN-div 生成對抗網絡。
空間變換網絡(spatial transformer networks,STNs)[14]模塊主要由3 個部分組成:本地化網絡(localization network)、參數采樣網絡(parameterized sampling grid)和圖像采樣(image sampling)。本地化網絡的輸入是原始的圖片,輸出是一個變換參數p,它映射的是輸入圖片和理想圖片的坐標關系。參數采樣網絡則是對特征圖像進行仿射變換,通過變換參數和輸入特征圖的坐標位置,得到對應的特征關系。而圖像采樣是經過前兩個網絡得到的特征關系對原圖像進行變換以得到期望的圖像。其主要思想是對輸入的圖像進行空間變換,輸出一張變換后的理想圖像。本文將采用空間變換網絡將口罩圖像進行變換以使其符合人臉輪廓,從而得到逼真的戴口罩人臉圖像。本文采用空間變換網絡的一個主要原因是可以不用提前對口罩圖像進行控制點標注,提高了算法的實用性。為了達到這個目標,本文將使用生成對抗網絡來優化空間變換網絡的參數p。
卷積網絡在計算機視覺中得到了廣泛的應用[15-16]。但是卷積網絡的實際感受野比理論上的要小很多;且池化、卷積步長等下采樣方案都會產生信息的損耗,進而影響模型的性能。Duta 等[17]提出的金字塔卷積(pyramidal convolution,Py-Conv)可以在多個濾波器尺度對輸入進行處理。PyConv 包含一個核金字塔,每一層包含不同類型的濾波器,每個濾波器的大小和深度都不同,以此來提取不同尺度的圖像特征。
PyConv 采用了金字塔結構的卷積,包含了不同深度和尺度的卷積核,能夠同時提取不同尺度的特征。PyConv 的結構如圖1 所示,它包含了一個由n層不同尺寸卷積核構成的金字塔,能夠在不提升計算復雜度和參數數量的基礎上采用多尺度核對輸入進行處理,每一層的核包含不同的空間尺度,卷積核尺度越大,深度越低。由于PyConv在不同層使用不同深度的卷積核,需要將輸入特征劃分為不同的組并獨立地進行卷積計算,稱之為組卷積。假設PyConv 的輸入通道數為C,每一層的卷積核大小為,Ci對應輸入的特征維度,而對應的輸出特征維度為Co1,Co2,···,Con。Co是輸出特征維度的總和,Co和參數量N如式(1)、式(2)所示。

圖1 PyConv 結構Fig.1 Structure of PyConv

在構建過程中,PyConv 的每一層的通道數應當是相同的,這也要求輸入通道數必須是2 的指數次冪。
生成對抗網絡由于在訓練中需要達到納什均衡,一直存在著訓練困難以及不穩定的問題。不穩定的問題也會導致模式坍塌,造成樣本生成缺乏多樣性,即使增加訓練時間也很難改善。而Wasserstein GAN(WGAN)較好地解決了訓練不穩定的問題,不再需要小心地對生成器和判別器的訓練程度進行平衡,確保了生成結果的多樣性。原始GAN 采用的JS 距離衡量的是兩個分布之間的差異,通過將JS 散度作為優化目標最終得到優化的生成網絡。但是這只能在兩個分布有重疊部分時才成立,如果原始圖像和生成的圖像在分布上沒有重疊部分或重疊部分可忽略不計,則對應的JS 散度就是一個固定值,這樣無論如何訓練都無法得到優化的生成器。WGAN 則采用W距離,其定義如式(3):

式中:pr、pf(Z) 分別表示真實樣本分布和生成樣本的分布;中,γ 表示聯合分布,后面表示聯合分布的集合;‖x?y‖則是樣本x、y之間的距離。W距離是計算所有聯合分布中能夠對期望值取到的下界。為了最小化W距離,分別為生成器和判別器設計了兩個損失函數G和D,如式(4)、(5)所示:

本文的目標是對輸入的未戴口罩人臉圖像IF、口罩圖像IM以及掩膜M的情況下進行圖像合成。對口罩圖像進行空間變換,校正其視角、位置及方向,使得合成的照片更加自然,合成的過程表示如式(6)所示:

相較于通過將標注好的口罩圖像通過關鍵點定位疊加到識別出的人臉上的方法,本文提出一種使用金字塔卷積改進的WGAN-div 神經網絡與空間變換網絡相結合的圖像合成模型(Py-WGAN-div),該模型在訓練時不需要對待合成的人臉及口罩圖像做任何提前標注。模型以生成對抗網絡為主體,并分別對生成器和判別器的神經網絡部分進行了改進,其結構如圖2 所示。

圖2 網絡整體結構Fig.2 Overall neural network structure
在生成器部分,原始的生成對抗網絡是通過一個隨機噪聲來生成新的圖像。但是直接生成的圖像會有很多問題,例如生成的人臉分辨率低、口罩錯誤的被作為膚色合成到人臉上。而本文的目的是能構建成對的人臉數據(包含未戴口罩與戴口罩的人臉圖像對),而不是產生隨機的人臉。因此本文方法中的生成器生成的是一組更新的變形參數 Δp(且該變形參數隨著優化的進行不斷進行更新)。修正的變換參數如式(7)所示:

式中:IF為未佩戴口罩的人臉圖像;IM為通過變形參數變形后的口罩圖片;pi?1表示上一次的變形參數;Gi表示生成器。
多尺度卷積與標準單一卷積相比,能在沒有額外參數的情況下,擴大卷積核的感受野,并且由于使用不同大小的卷積核而獲得不同的空間分辨率和深度。卷積核隨著尺寸的減小深度加深,這樣不同尺寸的卷積核能帶來互補的信息,有助于獲取更豐富的特征。
在生成器網絡的結構設計上,本文采用了Py-Conv 的網絡結構。首先將輸入的正常人臉圖像和口罩圖像進行通道數的疊加,再通過一個7×7 的大卷積核提取特征。使用7×7 的大卷積核的目的是盡可能地保留原始圖片的信息且減少計算量。之后采用了4 個去掉了批標準化層的Py-Conv 卷基層。在PyConv 中卷積層中去除批量歸一化層的目的是減少計算的復雜度以提升訓練效率。生成器中第一個PyConv 層用了4 個不同尺寸的卷積核(3×3、5×5、7×7、9×9)以獲取不同尺度的特征來增強模型的特征提取能力。生成器的輸出是一個8 維的向量,該向量作為空間變換網絡的參數使用。生成器的網絡結構如表1 與圖2所示,其中s為步長。

表1 Py-WGAN-div 網絡結構Table 1 Py-WGAN-div network structure
判別器的輸入數據是由真實的佩戴口罩的人臉圖像和合成的戴口罩圖像構成。而合成圖像則是通過空間變換網絡生成的變形后的口罩圖像和未遮擋人臉圖像進圖像融合產生的,空間變換網絡的參數則是由生成器生成而來的。通過判別器網絡對圖像進行判別后,輸出一個分值來表示圖像合成的質量。判別器網絡沒有使用全連接層,而是通過一個3×3 的卷積得到5×5×1 的矩陣來計算得分。由圖3 所示的訓練流程圖可知,本文通過不斷地優化變換參數的值來優化對口罩進行的投射變換,并最終獲得較好的合成圖像。

圖3 網絡訓練流程圖Fig.3 Training flow diagram
本文將采用WGAN-div 的目標函數作為優化指標。WGAN 雖然相比GAN 網絡有了很大程度的優化,但是在訓練過程中仍然表現出收斂速度慢和訓練困難的問題[18]。其主要原因是:在處理利普希茨連續條件限制條件時直接使用了權重裁減,大部分權重都在±0.01。而判別器希望能盡可能地拉大真假樣本之間的差距。之后其他研究者提出的WGAN-GP[12]和SNGAN[19]分別通過了梯度懲罰和譜歸一化的方法實現了Lipschitz 約束。而且WGAN 不能使用基于動量的優化算法,例如Adam。WGAN-div 則是提出了式(8)所示的W散度來真正縮小兩個分布之間的距離損失函數:

式中:k和p的設置則是根據經驗選取,通常設置k=2,p=6;C1指一階連續函數族測度;Pr與Pf分別表示真實樣本集合和合成樣本集合;D(x) 和G(x) 分別表示判別器和生成器損失函數。
通過式(8)可以得到生成器的損失函數G(x)和判別器的損失函數D(x) 分別為式(9)和式(10):

本文使用的超參數設置為:生成器和判別器的學習率都是0.00001,空間變換次數為5 次,總迭代次數為30 萬次,每2 萬次迭代后學習率衰減,批量大小為20,優化算法采用Adam。
本文中用于訓練的圖片數據挑選自武漢大學發布的人臉口罩數據集[20]、使用網絡爬蟲從互聯網上抓取的圖片以及從其他研究者[21]合成的人臉口罩數據集中挑選的部分圖片。在對選取的圖片中進行隨機平移、旋轉以及縮放后,獲得總計158 462 張戴口罩的人臉圖片作為數據集。將其中142618 張圖片(約90%)作為訓練集進行判別器的訓練,其余則作為測試集。數據集中圖片尺寸統一縮放至144 像素×144 像素。并手工制作了20 張類型、各種花色的口罩圖片,口罩圖片的尺寸同樣是144 像素×144 像素,且口罩基本位于圖片的中心,如圖4 所示。本文采用的實驗環境配置如表2 所示。

圖4 口罩圖片Fig.4 Masks used in experiments

表2 實驗環境配置Table 2 Experiment configuration
實驗使用基于Py-WGAN-div 的生成對抗網絡對訓練集進行訓練,在訓練時隨機從訓練集中選取人臉圖片和口罩圖片。圖5 顯示了使用本文方法進行訓練時,每5 萬次迭代并更新口罩的變換參數后合成的圖片。從圖5 中可以看出,口罩位置隨著訓練的進行逐漸變得更加貼合面部,最終得到了較真實的人臉佩戴口罩圖像。

圖5 訓練過程Fig.5 Training process example
在進行算法對比時,本文選取了關鍵點匹配算法[5]、基于GAN、DCGAN、和WGAN 的算法進行對比。根據本文實驗,原始的生成對抗網絡算法在人臉口罩合成上效果很差,口罩幾乎無法覆蓋正確的位置。因此本文將對比組算法中的GAN、DCGAN、WGAN 的生成器和判別器之間增加了空變換網絡(spatial transformer network,STN)以更合理地進行對比。圖6 是不同算法對應不同口罩和人臉合成的效果對比圖。在對比時選取了5 種風格不同的口罩,有最常見的藍色外科口罩、KN95 口罩、粉色、方格以及斑點花紋的口罩。對比實驗還選取了4種不同膚色的人臉及背景,包括各種膚色與背景顏色。針對不同人臉、不同口罩以及不同算法進行了對比,結果如圖6 所示。從圖6(a)、(b)可以看出,在人臉姿態比較好的時候,各種算法都能較好地將口罩合成到人臉圖像中。其中,基于關鍵點匹配的算法[5]和本文的算法效果最好,但本文的算法產生的圖像更加自然和逼真。從圖6 中可以清楚地看到,基于GAN 和DCGAN 的算法生成的圖片效果相對比較差,口罩會遮住眼睛或者完全超過人臉的輪廓;而WGAN的方法效果雖然比基于GAN 和DCGAN 的算法更好,但合成的口罩不能很好地貼合人臉輪廓。


圖6 不同算法結果對比Fig.6 Comparisons between various methods
圖6(c)中的人臉往右偏,除本文方法外的其他方法的結果中,口罩只能比較好地貼合左半邊臉,右半邊臉的口罩則會過大。此時本文的算法雖然也不十分理想,但是能夠基本貼合人臉輪廓,相對更好一些。而對于圖6(d) 中低頭的人臉,除了基于關鍵點的算法和本文的算法外,其他算法獲得的人臉口罩圖像都有較大失真,表現在不能覆蓋下巴和口鼻,或者覆蓋了不該覆蓋的區域,相較之下,在圖像中的人臉姿態不是正面面向鏡頭時,本文算法獲得的人臉口罩圖像仍然是更好的。綜上得出,在圖像中的人臉姿態沒有正面面向攝像頭時,所有的算法得到的戴口罩人臉圖像都有所欠缺,但是本文的算法在人臉口罩合成的效果上明顯優于其他算法,基本能夠貼合人臉的輪廓,沒有遮擋不該遮擋的部位,并且在細節上更加真實。
為了更客觀地比較不同算法的合成效果,本文采用了IS Score(inception score)[22-23]、結構相似性(structural similarity)和深度特征度量圖像相似度(learned perceptual image patch similarity)[24-25]3 個指標來客觀評價各種不同GAN 模型在口罩合成上的效果。
IS 評價方法將生成的圖片送入訓練好的Inception 分類模型中。該Inception 分類模型的輸出是一個1000 維的標簽,該標簽的每一個維度表示了輸入圖像屬于某個分類的概率。如果訓練結果較好,結果會比較集中。結果如表3 所示,雖然GAN 和DCGAN 網絡生成的戴口罩圖片與希望的結果相差甚遠,但它們的IS 分數卻比本文算法更高。出現這個現象是因為,雖然IS 能夠作為圖像合成質量的一個指標,但該指標無法真正反映合成圖像中的細節,例如:口罩是否正確地覆蓋了人的嘴巴和鼻子,口罩覆蓋的區域是否過大而導致面部信息的丟失,臉部的其他部位是否有被保留等。因此本文還對生成的圖片進行了人工評判。人工評判的方式為將100 組不同的人臉圖像分別給20 個人進行評分,每組圖像包含了人臉的原始圖像、佩戴口罩的類型以及兩種方法合成后的圖片,并對合成后的圖像進行是否真實的判別,判別結果如表3。由判別結果可知,本文方法合成的圖像更加真實。

表3 性能對比1Table 3 Performance comparison 1
此外,本文還采取了兩種相對客觀的評價方法,結構相似性(structural similarity,SSIM)和深度特征度量圖像相似度(learned perceptual image patch similarity,LPIPS)[24],來對生成的圖像進行評價。SSIM 是一種參考的圖像質量評估指標,通過對圖像的亮度、對比度和結構3 個方面對圖像的相似度進行比較度量。而深度特征度量圖像相似度則是使用由預訓練的神經網絡提取的特征圖來量化兩幅圖像之間的感知差異,兩幅圖越相似則距離越近。SSIM 和LPIPS 指標的對比結果如表4所示。
從表4 中可以看出,本文算法相比與對比算法在結構相似度上更高。而深度特征度量圖像相似度非常小,說明了合成的戴口罩圖像與真實的戴口罩的人臉距離很接近,充分證明了本文算法的有效性。

表4 性能對比2Table 4 Performance comparison 2
本文提出了一種生成對抗網絡與空間變換網絡相結合的給人臉圖像佩戴口罩的方法,并且在設計上采用了由生成對抗網絡生成空間變換網絡的變換參數,而不是直接生成人臉與口罩融合后的圖像的特殊設計。在設計神經網絡時使用了多尺度卷積的方法,使生成器能更好地提取特征。在訓練時采用了W距離作為衡量兩個不同樣本之間距離的計算,克服了生成對抗網絡訓練難且容易出現模式坍塌的問題。相比于其他方法,本文方法在合成的圖像更加逼真,口罩也更貼合人臉。
實驗結果顯示,在人臉和口罩都無任何標記的情況下,該神經網絡模型可以學習到相應的變換參數并合成高質量的人臉戴口罩圖像。實驗結果證實,融合后的人臉圖像不失真且很好的保留了面部特征,同時也將口罩覆蓋到了人臉正確的位置。在研究過程中也發現,在人臉圖像由于角度問題只有半張臉可見的情況下本文方法效果不完美的問題。因此如何在任意角度對人臉圖片上不失真地進行口罩合成將是進一步的研究方向,進一步將利用本文制作的戴口罩人臉數據集進行口罩遮擋的面部識別研究。