李粘粘
(昆明理工大學 信息工程與自動化學院,云南 昆明 650500)
行人再識別(Person Re-identification,ReID)是指在不同攝像機拍攝的圖像庫中尋找指定的行人[1-2],對于安防監控領域尤為重要。為確保人們的安全,在公共場所(如機場、火車站或擁擠的城市區域)部署大量的攝像機網絡。由于拍攝場景存在背景復雜、行人身體的遮擋、行人姿態變化及光照強度的改變等不可控因素問題,進一步增加了識別行人的難度,因此面對這些復雜任務時,如何在大規模數據中自動完成識別任務變得至關重要。
解決行人再識別問題主要分為傳統手工特征方法和深度學習方法。傳統手工特征方法需要手動提取特征非常耗時而且準確度較低。近幾年基于深度學習的行人再識別方法得到快速發展,與傳統手工特征方法不同,基于深度學習的方法能自動提取特征,進而將提取的特征映射到度量學習方法中,在行人再識別方法的性能上取得大幅提升。文獻[3]采用深度孿生網絡(Siamese Network)對人體部位特征學習來做行人再識別的工作,與傳統手工特征相比效果較好。Zheng 等人[4]以ResNet50 作為骨干網絡,將每個身份視為不同的類,從卷積神經網絡(Convolutional Neural Network,CNN)中提取特征,然后在數據集上對其進行訓練。之后,研究者們相繼提出一些改進方法應用在行人再識別任務中。Sun 等人[5]同樣以ResNet50 作為骨干網絡,將均等劃分的局部特征通過拼接表示并提出細化部分池(Refined Part Pooling)使每個區域保持一致。雖然這些方法在行人再識別任務中取得較高準確度,但模型運行時計算開銷較大。在實際應用場景中,受計算資源的限制,需要在保持準確率情況下降低計算開銷。
模型壓縮背后的思想通常是去掉深度神經網絡中信息含量少的權重,再通過微調以進一步提高網絡性能。從計算復雜度上看,整體結構計算復雜度降低,但同時也導致壓縮后的模型準確度下降。當數據集很大或類別數量很多時,準確率下降尤為明顯,這在行人再識別任務中十分常見。相比之下,知識蒸餾(Knowledge Distillation,KD)在更寬/更深層網絡的支持下訓練較小模型能夠實現與深層網絡非常相似的準確度,而且計算成本會低得多[6-7]。因此,在這項工作中,我們將在有效深層網絡行人再識別背景下探索知識蒸餾。這個想法最初是在文獻[8]中提出的,在采用這種方法時,根據教師網絡輸出的軟標簽(Soft Target)對學生網絡進行懲罰,通過學生網絡預測教師網絡的輸出以及真實的分類標簽來進行訓練。Heo 等人[9]提出邊界激活知識蒸餾,關注被轉移的網絡激活的特征符號。目前,知識蒸餾方法已經被用于行人再識別。文獻[10]中,作者提出在整個訓練過程中使用一對學生網絡進行協作學習和互相指導。每個學生網絡訓練都有兩個損失函數,以及使每個學生類別與其他學生類別概率保持一致的損失,最終每個學生相互學習比單獨學習更好。
考慮到對于行人再識別實際的任務需求,需要同時保證模型具有較短的推理時間和較高的識別準確率,本文提出了一種新的蒸餾方法。與前面講到的知識蒸餾方法不同,我們針對特征,拉近學生與老師的距離,蒸餾方法包括兩個部分:(1)學習教師網絡多個階段的中間層表示;(2)對教師網絡全連接層前的特征進行學習,使學生網絡與教師網絡的特征盡可能接近。具體地,對教師網絡不同階段特征圖進行學習,使學生網絡不同階段得到的特征圖與教師網絡盡可能接近,這有助于第二部分學生特征與教師特征拉近距離。行人再識別網絡識別的準確率很大程度上取決于行人再識別網絡提取的特征表示的好壞,教師網絡提取的特征表示好于學生網絡,因此使學生網絡提取的特征與教師網絡提取的特征盡可能接近,就能提高學生網絡的識別準確率。本文對Market1501[11]、DukeMTMC-reID[12]和 CUHK03[13]這3 個具有挑戰性的大規模行人再識別基準進行實驗。實驗結果表明,本文提出的蒸餾方法在行人再識別應用中具有一定的提升。
本文的主要貢獻有3 方面:
(1)提出了適合行人再識別模型的多階段蒸餾框架結構;
(2)探究了在不同階段蒸餾的有效性;
(3)根據線性整流函數[14](Rectified Linear Unit,ReLU)的特性,提出一種在ReLU 層前蒸餾的有效方法。
本文以提出的蒸餾網絡方法應用于行人再識別網絡PCB[5]為例。PCB 的網絡結構如圖1 所示。輸入的圖像經過ResNet50[15]骨干網絡,經Conv5_x輸出的張量圖Tensor T 縱向均勻切分成6 部分,即6 個4×8 的張量,然后各自進行全局平均池化(Global Average Pooling,GAP),得到6 個張量p,每個張量p通道數為2 048,再用1×1 卷積對張量p進行降維得到張量h,6 個張量h的向量大小均為256×1×1,最后將輸出的向量輸入全連接層和softmax 進行分類。
本文提出以骨干網絡為ResNet50 的PCB 作為教師網絡,骨干網絡為ResNet18 的PCB 作為學生網絡進行蒸餾的多階段知識蒸餾方法。蒸餾結構如圖2 所示,蒸餾方法結構主要分為兩部分:第一部分在骨干網絡的不同階段進行蒸餾,即在ResNet的Conv2_x、Conv3_x、Conv4_x、Conv5_x 末端進行蒸餾。Ft表示教師骨干網絡不同階段特征圖,rs表示學生骨干網絡階段通過1×1 卷積升維到與教師網絡特征圖維度一致后的特征圖,Ft特征圖與rs特征圖之間的距離d用作蒸餾損失函數;第二部分對全連接層前的特征進行蒸餾,即對張量h之后拼接起來的教師特征tFeatureD和學生特征sFeatureD通過最小化損失使學生網絡提取的特征與教師網絡盡可能接近,從而使學生網絡的準確率能與教師網絡相當甚至超過。
1.2.1 蒸餾網絡位置
第一部分選擇在骨干網絡的多個下采樣階段進行蒸餾。最終希望學生網絡輸出的全連接層前的特征(sFeatureD)盡可能與教師網絡輸出的特征(tFeatureD)相似。因為學生網絡的骨干網絡和教師網絡的骨干網絡存在較大差異,要想使sFeatureD與tFeatureD輸出特征盡可能接近,只通過sFeatureD與tFeatureD進行蒸餾很難實現。因此我們在整個骨干網絡的多個階段同時進行蒸餾,盡可能全面地將教師的重要信息進行傳遞。
當骨干網絡采用ResNet 時,我們在ResNet 的Conv2_x、Conv3_x、Conv4_x、Conv5_x 末端進行蒸餾。這部分的網絡結構如圖3(a)所示。這里對學生網絡的特征圖進行處理,讓學生網絡經過1×1 卷積升維到與對應的教師網絡特征圖相同通道數,方便直接計算它們特征圖之間的差值。
激活函數對模型性能影響很大,大多數網絡[16-18]中使用ReLU。本文蒸餾方法充分考慮了ReLU 的特性,在ReLU 之前進行蒸餾,如圖3(b)中長線條所在位置進行蒸餾。目的是讓學生網絡和教師網絡的特征圖值盡可能一致,教師網絡和學生網絡特征圖值主要分3 種情況:(1)教師網絡與學生網絡ReLU 前特征圖的值均為正時,學生網絡對應的值應與其越相近越好。這時,ReLU 前特征圖的值與ReLU 后沒有差異。(2)教師網絡ReLU 前特征圖的值為負時,學生網絡對應特征圖的值只需為負數即可,此時經過ReLU 后都為0。若在ReLU后做蒸餾,教師網絡特征圖負值變為0,而此時學生網絡對應的為正的特征圖值經過ReLU 后難以變為0。(3)教師網絡特征圖的值為正,學生網絡對應特征圖的值為負,若在ReLU 后蒸餾,經過ReLU 后學生網絡對應特征圖值變為0,神經元失活且難以恢復,而在ReLU 前蒸餾則不存在這樣的問題。
第二部分蒸餾是將PCB 的教師網絡和學生網絡的全連接層前的6 個特征拼接起來,對拼接起來的教師特征和學生特征做蒸餾。全連接層前的特征直接用于檢索,會直接影響到識別準確率。
1.2.2 蒸餾結構的有效性分析
行人再識別網絡能否有較高的識別準確率,主要取決于行人再識別網絡是否能學習到一個好的特征表示,也就是從行人圖中提取最具區分性的信息到特征中。教師網絡能夠比學生網絡學習到更好的特征表示,要想學生網絡識別準確率達到與教師網絡相當,就需要學生網絡提取的特征與教師網絡盡可能接近。最直觀的做法就是用損失函數使學生網絡提取的特征與教師網絡提取的特征逐漸接近。但前期的實驗表明只對提取的特征做蒸餾效果并不理想,僅學習教師網絡的特征,難以真正拉近特征間距離。所以本文通過骨干網絡多個階段的中間層特征圖學習,使每一階段教師網絡與學生網絡輸出都能保持一致,從而大大降低最后特征學習的難度。
1.2.3 損失函數
第一部分在骨干網絡部分的蒸餾損失函數。學生網絡用于蒸餾的特征圖首先通過1×1 卷積升維到與教師網絡用于蒸餾的特征圖維度一致,然后與教師網絡特征圖計算均方誤差。

式中,T表示教師特征圖值,S表示學生特征圖值,教師網絡和學生網絡在骨干網絡的各個階段提取的特征圖值T,S∈RW×H×C,特征圖中第i維的值Ti,Si∈R,dp(T,S)表示距離函數。
本文方法在ReLU 之前蒸餾,因此距離函數需要考慮ReLU 的變化:在ReLU 前,如果Si≤0,Ti≤0,經過ReLU 后,教師和學生的值均變為0、因此不需要計算損失;當不滿足Si≤0、Ti≤0 時,需要通過均方誤差dp(T,S)拉近學生網絡特征圖值與教師網絡特征圖值的距離,使學生網絡在骨干網絡的多個階段輸出都與教師網絡對應的階段輸出越來越相似,從而促使最終網絡提取的人體特征更加相似。將rs(·)作為學生骨干網絡提取特征圖后做的1×1 卷積和批量歸一化的轉換函數,則第一部分的蒸餾損失函數定義為:

式中,Ft表示教師骨干網絡階段特征圖值,Fs表示學生網絡轉換前的特征圖值。
第二部分蒸餾是針對提取的人體特征,即全連接層前的網絡特征進行蒸餾。這部分教師網絡的特征為tFeatureD,學生網絡的特征為sFeatureD,特征中第j位值sFeature DtFeatureDj,sFeatureDj∈R。同樣通過均方誤差計算第二部分蒸餾損失:

式(3)中的C表示特征通道數。因此,提出方法的蒸餾部分的損失函數可以表示為:

式(4)中的?是一個常數,實驗中的?為2。最終得到多階段蒸餾方法行人再識別損失函數為:

當對PCB 網絡進行蒸餾時,Ltask=6softmax,實驗中的β取為常數1。
為了充分說明本文方法的有效性,主要在Market1501[11]、DukeMTMC-reID[12]、CUHK03[13]這3個數據集上進行評估。它們包含實際應用中存在的一些問題。每個身份出現在不同的攝像機中,且呈現不同的視角、姿態和光照變化。因此,在這些數據集上進行測試具有很大的挑戰和意義。
Market1501[11]是通過6 個攝像機拍攝,追蹤并手工標注檢測框得到的數據集,具有1 501 位行人的32 668 個檢測框。該數據集中每位行人最少被2個攝像機拍攝到,其中751 位行人共計12 936 張圖像用作訓練集,750 位行人共計19 732 張圖像用作測試集。在圖像搜索庫(gallery)中,人工標注了3 368 張用于查詢圖像的行人檢測矩形框,該矩形框是通過使用DPM(Deformable Parts Model)[19]檢測器進行繪制的。
DukeMTMC-reID[12]是一個大規模標注的行人跟蹤數據集。由8 個同步攝像機拍攝的大型高清視頻,通過間隔采樣得到36 411 張標記圖像。其中16 522張圖像用于訓練,2 228 張圖像用于查詢和17 661張gallery 圖像。
CUHK03[13]數據集是在香港中文大學(CUHK)校園內通過5 對攝像機采集得到1 467 位行人的圖像,每對攝像機能夠拍攝到每位行人不完全重疊的5 個視角,其中訓練集和測試集分別包括767 位行人和700 位行人的圖像數據。
實驗所用的硬件配置如下,GPU:GTX TITAN X(顯存12GB)、CPU:Intel(R)Xeon(R)CPU E5-2620 v3(主頻2.40 GHz)、內存128 GB,采用pytorch[20]深度學習框架。
訓練時輸入圖像大小為384×128,設置batch size 為64,選用ResNet50 作為教師網絡的骨干網絡,采用在ImageNet[21]上訓練的參數作為預訓練模型。優化器使用動量系數為0.9 的SGD。蒸餾訓練的初始學習率為0.5,在20 個epoch 學習率衰減到0.05,40 個epoch 時學習率衰減到0.000 5,經過60 個epoch 訓練停止。訓練時圖像前處理采用隨機水平翻轉做數據擴增。本文采用平均精確度(mean Average Precision,mAP)和rank-1、rank-5和rank-10 的累計匹配特性(Cumulative Matching Characteristics,CMC)評價行人再識別方法。
本文中,比較的方法主要分為兩組,第一組,不采用蒸餾方法時骨干網絡為ResNet50 的教師網絡和骨干網絡為ResNet18 的學生網絡識別結果。第二組,采用不同蒸餾方式時骨干網絡為ResNet18 的學生網絡識別結果。方法實驗中,PCB+MKD 表示在ResNet 骨干網絡后4 個階段,ResNet50 作為教師網絡對ResNet18 進行蒸餾,PCB+FKD 表示在最后一層全連接層之前,ResNet50 作為教師網絡對ResNet18進行蒸餾,PCB+MKD+FKD 表示ResNet 的骨干網絡后4 個階段的蒸餾與全連接層之前的特征蒸餾同時采用ResNet50 作為教師網絡蒸餾ResNet18。

表1 在不同數據集上的對比結果
表1 是在Market1501、DukeMTMC-reID、CUHK03這3 組數據集上的實驗結果。第一組實驗中在不采用蒸餾方法時學生網絡和教師網絡實驗結果mAP分別相差3.96%、5.62%、5.51%、Rank1 分別相差1.28%、5.15%、5.89%。第二組實驗中,采用PCB+MKD 的蒸餾方式時,骨干網絡為ResNet18 的學生網絡mAP 分別有1.53%、2.24%、1.71%的提升,Rank1 分別有0.76%、2.13%、0.11%的提升。采用PCB+FKD 的蒸餾方式時,學生網絡mAP 分別有0.64%、1.05%、1.43%的提升。而最后同時采用MKD 和FKD 的蒸餾方式時,學生網絡mAP 分別有4.21%、5.8%、5.82%的提升,Rank1 分別有1.93%、5.5%、6.89%的提升,與教師網絡相比,mAP 分別有0.25%、0.18%、0.31%的提升,Rank1分別有0.65%、0.35%、1%的提升。由此可見,在3 個數據集中,采用不同蒸餾方法時學生網絡性能都有一致的提高。其中同時采用MKD 和FKD 時,蒸餾效果最好,甚至超過教師網絡性能,說明此蒸餾方法能夠較好地拉近學生網絡與教師網絡之間的距離,使學生網絡與教師網絡具有相似的特征輸出,這種相似就是我們提出的方法能夠提高性能的主要原因。
圖4 為本文比較方法中的不同模型識別效果圖。query 表示查詢圖,Ran5 表示模型計算出的與查找行人(query)最為接近的5 張圖,其中與查詢圖是同一個人用綠色框表示,與查詢圖不是同一個人用紅色框表示。可見,本文提出方法,不管數據集圖像中視角、光照強度、姿態如何變化,排序最靠前的5 張圖識別效果均達到最好。

圖4 不同模型識別效果圖
本文驗證了提出的多階段知識蒸餾方法(MKD+FKD)與多篇工作中的蒸餾方法在行人再識別任務上的對比,繼續選擇骨干網絡為ResNet50的PCB 作為教師網絡,基于ResNet18 的PCB 作為學生網絡。表2 為DukeMTMC-reID 數據集上的實驗對比結果,所有模型均經過60 個epoch 的訓練,學習率與文獻[5]相同。可以看出,MKD+FKD 在Rank1 和mAP 指標上表現最好,mAP 比第二好的MEAL 高3.83 個點,Rank1 高3.03 個點。由此可見,本文提出的多階段知識蒸餾方法與其他蒸餾方法在行人再識別任務上的識別準確度相比,學生網絡準確度提升較高,甚至超過教師網絡的準確度,證明了該方法的有效性。
為了實際部署行人再識別模型時使其既具有較高準確度,同時還能降低計算成本,本文提出了一種適合行人再識別模型的多階段蒸餾框架結構,第一部分是在骨干網絡中的后4 個階段進行蒸餾,第二部分是對全連接層前的特征進行蒸餾。結合ReLU 層的特性,在ReLU 前進行蒸餾,同時探究了在不同階段蒸餾的有效性。實驗結果表明:不管是在第一部分進行蒸餾還是在第二部分進行蒸餾,在不同數據集中使用蒸餾方法比未使用蒸餾方法的網絡都有一致的提升;當同時對第一部分和第二部分進行蒸餾時效果達到最好,學生網絡模型甚至超過教師網絡模型。后續的工作中將繼續研究參數規模更小、計算成本更低的行人再識別模型,從而使其能夠更加方便部署在應用設備中,以達到更好的效果。

表2 在數據集DukeMTMC-reID 上的比較結果