使用的網絡結構VarGNet可見VarGNet: Variable Group Convolutional Neural Network for Efficient Embedded Computing - 1 -論文學習
2019
VarGFaceNet: An Efficient Variable Group Convolutional Neural Network for Lightweight Face Recognition
Abstract
為了提高輕量級人臉識別網絡的識別能力和泛化能力,我們提出了一種高效的可變分組卷積網絡VarGFaceNet。VarGNet引入了可變分組卷積,解決了計算量小與塊內計算強度不平衡的矛盾。我們使用可變分組卷積來設計我們的網絡,它可以支持大規模的人臉識別,同時降低了計算成本和參數。具體來說,我們在網絡開始時使用head設置來保留必要的信息,並提出了一種特殊的嵌入設置來減少全連接層的嵌入參數。為了提高解釋能力,我們使用角蒸餾損失的等價性來指導我們的輕量級網絡,並使用遞歸知識蒸餾來消除教師模型和學生模型之間的差異。在LFR(2019)挑戰賽deepglintlight track的冠軍結果證明了我們的模型和方法的有效性。VarGFaceNet的實現將很快在https://github.com/z-137/vargfacenet發布。
1. Introduction
雖然MobileNet[12] 、MobileNetV2[21]、ShuffleNet[27]和ShuffleNetV2[18]等網絡在推理過程中計算量小,在各種應用中性能良好,但嵌入式系統的優化問題仍然存在於嵌入式硬件和相應的編譯器中[26]。為了解決這一矛盾,VarGNet[26]提出了一種可變分組卷積算法,有效地解決了塊內計算強度的不平衡問題。同時,我們還發現在相同的kernel大小下,可變分組卷積比深度卷積具有更大的容量,這有助於網絡提取更多的本質信息。但是,VarGNet主要用於圖像分類和目標檢測等一般任務。為了節省內存和計算開銷,在頭部設置中將空間面積減少了一半,但是這種設置不適合人臉識別任務,因為需要人臉的詳細信息。在嵌入的最后一個卷積層和全連接層之間只有一個平均池化層,可能無法提取足夠的判別信息。
基於VarGNet,我們提出了一種高效的輕量級人臉識別可變分組卷積網絡,簡稱VarGFaceNet。為了提高VarGNet對大規模人臉識別任務的識別能力,我們首先在VarGNet的塊上添加SE塊[13]和PReLU塊[8]。然后在網絡初始階段刪除下采樣過程,以保留更多的信息。為了降低網絡參數,我們在fc層之前使用可變分組卷積將特征張量縮小到1×1×512。VarGFaceNet的性能表明,該嵌入設置可以在降低網絡參數的同時保持網絡的鑒別能力。
為了提高輕量級網絡的解釋能力,我們在訓練中采用了知識蒸餾的方法。有幾種方法旨在使深層網絡更小和更經濟有效,如模型剪枝、模型量化和知識提取。其中,知識蒸餾正因其架構的靈活性而受到積極的研究。Hinton[11]引入了知識蒸餾的概念,提出利用教師網絡的softmax輸出來實現知識蒸餾。為了更好地利用教師網絡的信息,FitNets[20]采用特征蒸餾的思想,鼓勵學生網絡模仿教師網絡的隱含特征值。經過FitNets之后,嘗試利用教師網絡知識的方法有很多種,如傳遞feature activation map[10], active-based and gradient-based Attention Maps[25]。最近,ShrinkTeaNet[6]引入了一種角度蒸餾損失來專注於教師模型的角度信息。受角度蒸餾損失的啟發,我們采用具有更好實現效率的等效損失作為VarGFaceNet的指導。此外,為了解決由於教師模型和學生模型之間的差異而導致的優化問題的復雜性,我們引入了遞歸知識蒸餾,將第一代訓練的學生模型作為下一代的預訓練模型。
我們在LFR挑戰[4]中評估了我們的模型和方法。LFR挑戰是一種輕量級的人臉識別挑戰,它需要的網絡FLOPs小於1G,內存占用小於20M。VarGFaceNet在這一挑戰中實現了最先進的性能,如第3節所示。我們的貢獻總結如下:
- 為了提高VarGNet[26]在大規模人臉識別中的識別能力,我們采用了不同的head設置,並提出了一種新的嵌入塊。在嵌入塊中,我們首先通過1×1卷積層將通道擴展到1024來保留必要的信息,然后使用可變分組卷積和pointwise卷積將空間面積縮小到1×1,同時節省了計算成本。這些設置提高了人臉識別任務的性能,將在第3節中說明。
- 為了提高輕量級模型的泛化能力,我們提出了遞歸知識蒸餾的方法,從而在一代的時間內消除了教師模型和學生模型之間的泛化差距。
- 我們分析了可變分組卷積的效率,並在訓練中應用了角度蒸餾損失的等價性。實驗證明了該方法的有效性。
2. Approach
2.1. Variable Group Convolution
分組卷積是在AlexNet[16]中首次引入的,用於在gpu上降低計算成本。然后,在ResNext[23]中,分組卷積的基數性表現出比深度和寬度維度更好的性能。針對移動設備,MobileNet[12]和MobileNetV2[21]提出了depthwise可分卷積,它是在分組卷積的基礎上提出的,既節省了計算成本,又保持了卷積的判別能力。然而,depthwise可分離卷積在卷積1×1中花費了95%的計算時間,導致兩個連續的層(Conv 1×1和Conv DW 3×3)[12]之間存在較大的MAdds間隙(即兩者的MAdds的差距較大)。這個缺口對那些加載所有網絡權值來執行卷積[24]的嵌入式系統是不友好的:嵌入式系統需要額外的緩沖區來執行卷積1×1。
為了保持塊內計算強度的平衡,VarGNet[26]將組內的信道數設為常數S。可變分組卷積的計算代價為:
該層的輸入為hi × wi × ci,輸出為hi × wi × ci+1。k是核的大小。當MobileNet[12]中使用可變分組卷積代替depthwise卷積時,pointwise卷積的計算成本為:
這樣可變分組卷積和pointwise卷積的計算開銷比例為 k2S / ci+2 ,而depthwise卷積和pointwise卷積的比例為k2 / ci+2。實際上,ci+2 >> k2, S > 1,所以 k2S / ci+2 > k2 / ci+2。因此,在pointwise卷積的基礎上使用可變分組卷積而不是depthwise卷積,在塊內的計算會更加均衡。
S > 1表示與depthwise卷積(核大小相同時)相比,可變分組卷積具有更高的MAdds和更大的網絡容量,能夠提取更多的信息。
2.2. Blocks of Variable Group Network
在嵌入式系統[24]上,當一個塊被分組並一起計算時,片外存儲器和片內存儲器之間的通信才會發生在塊計算的開始和結束。為了限制通信開銷,與normal塊中VarGNet將輸出通道的數量設置為與輸入通道的數量相同。同時,VarGNet使用可變分組卷積將塊開始處的C通道擴展為2C通道,以保持塊的泛化能力。我們使用的normal塊如圖1(a)所示,向下采樣塊如圖1(b)所示。不同於VarGNet[26]中的塊,我們在normal塊中加入SE塊,並使用PReLU代替ReLU來提高塊的識別能力。
2.3. Lightweight Network for Face Recognition
2.3.1 Head setting
人臉識別的主要挑戰是測試/訓練階段涉及的大規模身份識別。它需要盡可能多的辨別能力來支持區分數百萬種身份。為了在輕量級網絡中保留這種能力,我們在網絡開始時使用stride=1的3×3 卷積層,然后在VarGNet中使用stride=2的3×3卷積。它類似於[3]的輸入設置。VarGNet中第一個卷積的輸出特征大小將在之后進行下采樣,如圖1(c)所示。
2.3.2 Embedding setting
為了獲得人臉嵌入信息,許多工作[3,17]直接在最后一個卷積層的頂部使用一個全連接層。然而,當上一個卷積的輸出特征相對較大時,全連接層的參數就會很大。例如,在ResNet 100[3]中,最后一個卷積層的輸出為7×7×512,那么fc層的參數(嵌入大小為512)為7×7×512×512。fc層整體嵌入參數為12.25M,內存占用49M(float32)!
為了設計一個輕量級的網絡(內存占用小於20M, FLOPs小於1G),我們在最后一個卷積層后使用可變分組卷積將特征映射縮小到fc層之前的1×1×512。因此,fc層用於嵌入的內存占用只有1M。圖1(d)為嵌入塊設置。在fc層之前將特征張量壓縮到1×1×512進行嵌入是有風險的,因為這個特征張量包含的信息是有限的。為了避免重要信息的丟失,我們在上一個conv之后擴展了渠道,盡可能多的保留信息。然后利用可變分組卷積和pointwise卷積來減少參數和計算成本,同時保持信息。
具體來說,我們首先使用1×1的卷積層將通道從320擴展到1024。然后利用7×7可變分組卷積層(一組8個通道)將特征張量從7×7×1024縮小到1×1×1024。最后利用pointwise卷積將通道連接起來,將特征張量輸出到1×1×512。新的嵌入塊設置僅占用5.78M,而原來的fc層占用磁盤上的30M(7×7×320×512)。
第3.3節中我們的網絡與VarGNet的對比實驗證明了我們的網絡在人臉識別任務上的有效性。
2.3.3 Overall architecture
我們的輕量級網絡(VarGFaceNet)的總體架構如表1所示:
我們的VarGFaceNet的內存占用是20M,而FLOPs是1G。根據經驗,我們在一個組中設S = 8。得益於可變分組卷積、Head設置和特定的嵌入設置,VarGFaceNet可以在有限的計算成本和參數下實現良好的人臉識別性能。在第三部分,我們將展示我們的網絡在一百萬干擾物人臉識別任務上的有效性。
2.4. Angular Distillation Loss
知識蒸餾可以將大網絡的解釋能力轉化為小網絡[12],因此在輕量級網絡訓練中得到了廣泛的應用。利用知識蒸餾的大部分任務是封閉數據集任務[20,11]。他們使用分數/logits或嵌入/特征量來計算l2距離或交叉熵作為損失。然而,對於公開數據集任務,訓練集的得分/logits中包含的測試集信息有限,在某些情況下特征值的精確匹配可能過於正則化。為了提取有用信息,避免過度正則化,[6]提出了知識蒸餾的角度蒸餾損失(angular distillation loss):
Fti是教師模型的第i個特征,Fsi是學生模型的第i個特征。m是每個batch的樣本數量。等式4首先計算教師和學生特征之間的余弦相似度,然后最小化該相似度與1之間的l2距離。受[6]的啟發,我們提出使用等式5來提高實現效率。由於余弦相似度小於1,最小化等式4等於最小化等式 5:
與以往精確切特征的l2損失相比,等式4和等式側重於角度信息和嵌入分布。
另外,我們使用arcface[3]作為我們的分類損失,同時也注意到了角度的信息:
綜上所述,我們在訓練中使用的目標函數為:
一般實現中設置α=7
2.5. Recursive Knowledge Distillation
當教師模型與學生模型之間存在較大差異時,單代知識蒸餾有時難以傳遞足夠的知識。例如,在我們的實施中,教師模型的FLOPs是24G,而學生模型的FLOPs是1G。教師模型參數數為108M,學生模型參數數為5M。此外,教師模型和學生模型的不同架構和塊設置也增加了訓練的復雜性。為了提高學生網絡的識別和泛化能力,我們提出了遞歸知識蒸餾,利用第一代學生模型初始化第二代學生,如圖2所示:
在遞歸知識提取過程中,我們在所有代中使用相同的教師模型。這意味着指導學生模型的樣本的角度信息是不變的。使用遞歸知識提取有兩個優點:
- 當應用良好的初始化時,更容易接近老師模型的引導方向。
- 第一代的分類損失邊際與導向角信息之間的沖突將在下一代中得到緩解。
第3節的實驗結果說明了遞歸知識蒸餾的性能。
3. Experiments
在本節中,我們首先介紹數據集和評估度量。然后,為了證明我們的VarGFaceNet的有效性,我們將我們的網絡與y2網絡(一個更深層次的mobilefacenet[2,3])進行了比較。在此基礎上,研究了不同教師模式對知識提取的影響。最后,我們展示了VarGFaceNet在LFR2019挑戰中使用遞歸知識蒸餾的競爭性能。
3.1. Datasets and Evaluation Metric
使用RetinaFace截取圖像中的人臉,並resize到112*112
3.2. VarGFaceNet train from scratch
為了驗證VarGFaceNet的效率和有效性,我們首先從頭開始訓練我們的網絡,並與mobilefacenet(y2)進行性能比較[2,3]。在訓練過程中,我們使用arcface loss作為分類的目標函數。表2給出了VarGFaceNet和y2的比較結果:
可以看出,在1G FLOPs的限制下,VarGFaceNet能夠在驗證集上獲得更好的人臉識別性能。與y2相比,我們對AgeDB-30、CFP-FP的驗證結果分別增加了0.6%和0.2%,對deepglint-light (TPR@FPR=1e-8)的測試結果增加了5%。要獲得更好的性能,有兩個直覺:
1. 當限制FLOPs時,因為使用了可變分組卷積,我們的網絡可以包含比y2更多的參數。在y2中最大的通道數是256,而我們最后的卷積層是320
2. 我們的嵌入設置可以提取更多的基本信息。y2將通道數從256擴展到512,然后使用7×7depthwise卷積得到fc層之前的特征張量。我們將通道數量從320個擴展到1024個,然后使用具有更大網絡容量的可變分組卷積和pointwise卷積得到fc層之前的特征張量。
3.3. VarGFaceNet guided by ResNet
為了獲得比從頭開始訓練更高的性能,利用角度蒸餾損失,采用更大的網絡進行知識蒸餾。此外,我們還進行了實驗來研究不同的教師模型對VarGFaceNet的影響。我們使用帶有SE的ResNet 100[9]作為我們的教師模型。教師模型有24G FLOPs和108M參數。結果如表3所示:
可以觀察到:
1. 盡管教師和學生的結構有很大的不同,VarGFaceNet仍然接近ResNet的性能;
2. VarGFaceNet的性能與教師模型的性能高度相關。教師模型性能越高,VarGFaceNet學習的解釋能力越強。
為了驗證我們的設置層(即Embedding setting,圖1(d))的效率,我們在我們的網絡和VarGNet之間進行了比較實驗。使用相同的教師網絡,我們將VarGNet的head設置改為我們的head設置進行公平比較,並使用相同的loss函數。在表4中,普通VarGNet在LFW、CFP-FP、AgeDB-30中的精度較低。在VarGNet中,最后一個卷積層和fc層之間只有一個平均池化層。結果表明,我們的嵌入設置更適合人臉識別任務,因為它可以提取更多的基本信息。
3.4. Recursive Knowledge Distillation
正如我們在第2.5節中所討論的,當教師模型與學生模型之間存在較大差異時,知識的一代積累可能不足以實現知識的轉移。為了驗證該模型,我們使用ResNet 100模型作為我們的教師模型,並在VarGFaceNet上進行遞歸知識提取。我們在下一代中訓練模型時的性能改進如表5所示:
LFW和AgeDB-30的結果增加了,而deeplint-linght的測試結果(TPR@FPR=1e-8)比前一代增加了0.4%。此外,我們相信,如果我們在更多代中繼續進行訓練,將會導致更好的表現。
4. Conclusion
本文提出了一種用於大規模人臉識別的高效輕量級網絡VarGFaceNet。得益於可變分組卷積,VarGFaceNet能夠在效率和性能之間找到更好的平衡。針對人臉識別的Head設置和嵌入設置(Embedding setting)在減少參數的同時有助於信息的保存。此外,為了提高輕量級網絡的解釋能力,我們采用角蒸餾損失的等價性作為目標函數,提出了一種遞歸知識蒸餾策略。在LFR挑戰中的最新表現證明了我們方法的優越性。