范歡喜,葉瑤瑤
(上海交通大學電子信息與電氣工程學院,上海 200240)
近年來,人臉屬性識別的研究得到了廣泛的關注[1-6]。人臉屬性包含豐富的生理特征(如性別、年齡、膚色等)和外在特征(如發(fā)型、是否佩戴帽子等),是人臉的高級特征表示。人臉屬性不僅可以輔助完成人臉驗證、人臉關鍵點回歸,而且具有許多直接的應用,如消費行為預測、人臉檢索。例如在安防領域,人臉屬性識別系統(tǒng)可以快速檢索出具有特定屬性的人臉。
人臉屬性識別也是一項具有挑戰(zhàn)性的任務,因為在實際環(huán)境中容易受到人臉姿勢和光照等外在條件的影響,而且在某些計算資源受限的情況下,如移動應用中,需要在快速響應的同時保證識別準確率。
當前在人臉屬性識別相關的研究上,已經(jīng)有大量的工作被提出。Liu 等人[1]訓練了兩個級聯(lián)的卷積神經(jīng)網(wǎng)絡(CNN):LNet 和 ANet,其中 LNet 用于人臉定位,ANet 用于從定位到的人臉區(qū)域提取特征進行人臉屬性的預測。Hand 等人[7]提出了多任務卷積神經(jīng)網(wǎng)絡MTCNN 和輔助網(wǎng)絡AUX,其中MTCNN 將所有人臉屬性劃分成9 大類分開進行預測,AUX 用于挖掘屬性之間的相關性。He[8]提出了一種損失函數(shù)動態(tài)加權算法動態(tài)地調整不同屬性在總損失函數(shù)中所占的比例,解決了每個屬性識別的難度不同和收斂速度不同的問題。在這之后,He[9]又提出了雙通道卷積神經(jīng)網(wǎng)絡,通過生成對抗網(wǎng)絡(GAN)提取人臉不同部位的抽象特征,與原始的人臉圖片相互不中完成人臉屬性識別。
以上研究雖然解決了人臉屬性識別問題,但是模型的計算量大,復雜度高,無法大規(guī)模應用在嵌入式和移動應用等計算資源受限的場景。本文在Mobile-NetV2[10]的基礎上提出了Two-Stage MobileNet 模型,將網(wǎng)絡分成前后兩個不同的階段stage-1 和stage-2,在不同的階段使用不同的通道擴張系數(shù),最大程度保留信息的同時降低了模型的參數(shù)量和計算量,在CelebA數(shù)據(jù)集上的實驗表明,Two-Stage MobileNet 可以達到高準確率,同時參數(shù)量和計算量大大降低。
在計算機視覺任務中,多任務學習[18]非常流行并且有效,多個任務之間共享特征,互相影響,減少計算量的同時也利用了任務間的相關性。Ranjan[19]利用多任務學習同時完成人臉檢測、關鍵點定位、姿態(tài)和性別的預測,Hand[7]利用多任務學習同時預測人臉的多個屬性。
人臉具有多個屬性,對每一個屬性的識別可以看作是一個任務,為每一個人臉屬性識別任務訓練一個網(wǎng)絡會導致網(wǎng)絡的規(guī)模異常龐大,而且沒有利用到不同人臉屬性之間的相關性。多任務學習很好地克服了以上問題,通過共享特征來減小網(wǎng)絡規(guī)模,并且使人臉屬性的相關性得以充分利用。多任務學習結構如圖1所示。
圖1 單任務(左)與多任務(右)結構圖
深度可分離卷積將標準卷積拆分成了兩步:逐深度卷積和逐點卷積。逐深度卷積在輸入的每一個通道上分配一個卷積核,每個卷積核只作用在當前的通道上。逐深度卷積作用后的輸出的通道數(shù)與輸入相同。逐深度卷積提取特征后需要使用逐點卷積,抽象出更高維的特征,即使用1×1 的標準卷積核對逐深度卷積的輸出進行卷積操作。圖2、圖3、圖4 分別為標準卷積核,逐深度卷積核,逐點卷積核。
標準卷積同時完成了特征提取和融合,進而產(chǎn)生出新的特征圖。深度可分離卷積通過逐深度卷積完成特征提取,通過逐點卷積完成特征額融合,最后產(chǎn)生新的特征圖。
深度可分離卷積可以大大降低模型的計算量。當輸入高度為DF、寬度為DF、通道數(shù)為M的特征圖,經(jīng)過高度為DK、寬度為DK的卷積核,輸出高度為DF、寬度為DF、通道數(shù)為N的特征圖時,標準卷積的計算量為:
深度可分離卷積的計算量為:
(2)式中第一項為逐深度卷積的計算量,第二項為逐點卷積的計算量。
深度可分離卷積與標準卷積的計算量之比為:
當卷積核的大小為3×3 時,深度可分離卷積的計算量幾乎為標準卷積計算量的1/9。
圖2 標準卷積核
圖3 逐深度卷積核
圖4 逐點卷積核
基于Two-Stage MobileNet 的人臉屬性識別由兩部分組成,如圖5 所示:首先通過Two-Stage MobileNet 網(wǎng)絡進行特征的提取,抽取出人臉屬性的高級特征,然后將抽取出的特征輸入到全連接層,進行邏輯回歸,完成人臉屬性識別。
圖5 基于Two-Stage MobileNet的人臉屬性識別
人臉屬性識別任務是輸入一張人臉圖片,判斷某一人臉屬性是否存在。當圖片的標簽上某個人臉屬性存在,那么網(wǎng)絡預測這個屬性存在的概率應該盡可能靠近1,反之亦然。
單張圖片單個人臉屬性的損失函數(shù)定義如下:
其中yik∈{0,1}是圖片的標簽,表明第i張圖片中第k個人臉屬性是否存在,0 表示屬性不存在,1 表示屬性存在,是網(wǎng)絡預測的屬性存在的概率值。
假設數(shù)據(jù)集共有N張人臉圖片,包含M個人臉屬性,則人臉屬性識別損失函數(shù)為:
具有線性瓶頸的倒殘差模塊(Bottleneck)如圖4 所示,由三個卷積組成:首先輸入高度為DF、寬度為DF、通道數(shù)為M的特征圖,經(jīng)過一個逐點卷積進行通道數(shù)擴展,通道擴張系數(shù)為t,輸出高度為DF、寬度為DF、通道數(shù)為M·t的特征圖;然后經(jīng)過一個逐深度卷積輸出高度為DF、寬度為DF、通道數(shù)為M·t的特征圖;最后經(jīng)過一個逐點卷積輸出高度為DF、寬度為DF、通道數(shù)為N的特征圖,與原始輸入相加作為模塊最終的輸出。當stride=2 時,原始輸入和最后一個逐點卷積的維度不相同,此時不進行殘差連接。
圖6 線性瓶頸的倒殘差模塊
在線性瓶頸的倒殘差模塊中,特征圖首先經(jīng)過擴展系數(shù)為t的通道數(shù)擴展,這一步是為了減少信息的損失。由MobileNetV2[10]中知,當特征圖的通道數(shù)較小時,經(jīng)過relu激活函數(shù)后會導致信息的損失,當特征圖的通道數(shù)較大時,信息得以分布在各個通道,經(jīng)過relu激活函數(shù)后信息幾乎不損失。當輸入特征圖的通道數(shù)較小時,可以先將輸入特征圖的通道數(shù)擴大到較大的值,再完成卷積和relu操作。
MobileNetV2[10]中設定通道擴展系數(shù)t為一個超參數(shù),在其實驗中取t=6,t的大小使得網(wǎng)絡可以達到性能和復雜度的平衡。但是MobileNetV2[10]將所有倒殘差模塊中的擴展系數(shù)設置為同一個值,這是不合理的,因為在網(wǎng)絡的前半段,特征圖的通道數(shù)小,這時需要較大的通道擴張系數(shù)減小信息的損失,然而在網(wǎng)絡的后半段,特征圖的通道數(shù)大,此時需要較小的通道擴展系數(shù),甚至不需要進行通道擴展。
本文在此基礎上提出了Two-Stage MobileNet,根據(jù)輸入通道數(shù)將MobileNetV2[10]分成前后兩個階段stage-1 和stage-2,在不同的階段使用不同的通道擴展系數(shù)t1和t2。在stage-1 階段,輸入通道數(shù)較小,此時使用較大的通道擴張系數(shù)t1;在stage-2 階段,輸入通道數(shù)較大,此時使用較小的通道擴張系數(shù)t2。由第1章可知,模型的計算量與通道數(shù)成正比,當減小通道擴張系數(shù)時,對應的通道數(shù)也會減小,網(wǎng)絡的計算量和參數(shù)量相應也減少。
式(6)和式(7)中Cin為輸入特征圖的通道數(shù),Cthreshold為確定stage-1 和stage-2 的通道數(shù)閾值,為一個超參數(shù),本文中取Cthreshold=32。
完整的Two-Stage MobileNet 結構如表1 所示,包含多個線性瓶頸的倒殘差模塊序列,激活函數(shù)使用relu6,卷積核大小為3×3,其中表1 的每一行表示一個有n個操作(operator)的操作序列,序列中的第一個操作的步長s=2,其余為1。每個序列的輸出通道數(shù)為c,通道擴展系數(shù)為t。
表1 Two-Stage MobileNet 網(wǎng)絡結構
為了便于分析,我們將Two-Stage MobileNet 用TM-t1-t2 表示,其中t1 為stage-1 階段的通道擴張系數(shù),t2 為stage-2 階段的通道擴張系數(shù)。
本文采用的人臉屬性數(shù)據(jù)集為CelebA[1],該數(shù)據(jù)集包含超過20 萬張名人身份的照片。每張照片都標注了40 個人臉屬性,包括性別、臉型、是否戴眼鏡等。每一個人臉屬性標注為二元標簽,1 表示屬性存在,0 表示屬性不存在。所有圖片的大小為224×178。數(shù)據(jù)集被分成了訓練集、驗證集、測試集,分別包含162770、19867、19962 張照片。
在訓練卷積神經(jīng)網(wǎng)絡時,合理的數(shù)據(jù)預處理十分重要。本文采用的數(shù)據(jù)預處理步驟有隨機水平翻轉、隨機縮放像素值、隨機縮放圖片的亮度、對比度和飽和度,最后將圖片放大為224×224 送入網(wǎng)絡。實驗采用Adam 優(yōu)化器,總訓練輪數(shù)為30,初始學習率為0.001,在第 10、15、20、25 輪時學習率衰減 0.1 倍。實驗采用NIVIDIA RTX 2080Ti GPU,批大小為64,訓練時間為5個小時。
表2 中為不同網(wǎng)絡在CelebA 數(shù)據(jù)集上的測試結果,本文使用平均準確率作為評價結果。由于之前的研究未給出準確的模型計算量和參數(shù)量,本文按照如下方式進行估計:部分模型是通過改善常見模型得到的,這時使用常見模型的計算量和參數(shù)量進行代替,如Adaptive CNN[8]、Dual- path[9]、MTCNN- 2[14]是 基 于ResNet-50[13],使用ResNet-50[13]的計算量和參數(shù)量代替,LNet+ANet[1]和 MTCNN-1[5]基 于 AlexNet[14],使用AlexNet[14]的計算量代替,MOON[3]基于 VGG-16[15],使用VGG-16[15]的計算量代替;對于其他非常見模型,則不列出計算量。
與基于AlexNet[14]和VGG-16[15]的模型相比,TM-6-2 不僅準確率更高,而且參數(shù)量減小60 倍,計算量減少近20 倍。與基于ResNet-50[13]的模型相比,TM-6-2 的準確率略低,但是計算量和參數(shù)量減小了10 倍;與其他的輕量化模型相比,TM-6-2 比Slim-CNN[16]的準確率更高,在達到相同準確率的情況下,比MobileNetV2[17]的參數(shù)量減少一倍,計算量減少34%;與NAS-Mobile[17]相比,TM-6-2 的準確率略低,但是神經(jīng)網(wǎng)絡搜索得到的結構不整齊,不利于硬件的實現(xiàn)。綜合以上分析,本文提出的Two-Stage MobileNet 在大幅減小計算量和參數(shù)量的同時可以有效的保持高準確率。
表2 不同網(wǎng)絡在CelebA 上的平均準確率
Stage-1 階段的通道擴張系數(shù)保持與Mobile-NetV2[10]一致,stage-2 階段的通道擴張系數(shù)設置為可變。
表3 為stage-2 階段不同通道擴展系數(shù)的實驗結果,可以看出TM-6-2 既可以保持高準確率,又降低了計算量和參數(shù)量,達到了準確率和復雜度的平衡。另外從表3 還可以看出,當合理地減小網(wǎng)絡后半段的通道擴展系數(shù)時,對網(wǎng)絡的性能幾乎不產(chǎn)生影響,但是模型的復雜度卻大幅降低,這也證明了Two-Stage MobileNet 網(wǎng)絡的有效性。
表3 不同 t2 的Two-Stage MobileNet 網(wǎng)絡在CelebA 上的平均準確率
本文提出了一種用于人臉屬性識別的輕量化模型:Two-Stage MobileNet,將網(wǎng)絡分成前后兩個階段stage-1 和stage-2,合理地為不同階段設置不同的通道擴張系數(shù),同時采用了深度可分離卷積,大幅減少了模型的參數(shù)量和計算量,在CelebA 數(shù)據(jù)集上的實驗表明,Two-Stage MobileNet 在達到相當高的準確率的同時,減少了模型的計算量和參數(shù)量。接下來的工作為將Two-Stage MobileNet 進行落地,將人臉屬性識別模型應用到手機移動端。