凌 弘 毅
(南京大學計算機科學與技術系 江蘇 南京 201203)
由于在智能商業和視頻監控等領域的巨大潛力,學習識別諸如性別、年齡、體型、衣服類型等人類屬性在計算機視覺的研究中受到越來越多的關注。屬性識別已被用于人類檢測、人類再識別、人臉識別等領域,并且已被證明可以極大地改進其與視覺相關的任務,但在實際監控環境下仍然是一個巨大的挑戰。這是因為在真實的監控視頻中,由于監控攝像頭與行人之間的距離,幾乎沒有關于行人臉部或身體區域的清晰照片。同時,由于行人的數量以及監控攝像頭的位置等因素,用于識別的照片中往往會出現行人身體的部分區域被遮擋的現象。所以,行人屬性識別會在一個缺少關鍵面部信息以及部分視覺信息缺失的情況下進行。
在面對這個問題的時候,傳統的方法是直接將多余的屬性信息丟棄,僅僅處理需要識別的屬性。這樣的做法會將一些有用的信息直接丟棄,無法有效地利用數據集中的所有信息。本文旨在利用這些多余的屬性信息,挖掘出屬性之間隱藏的知識,使得屬性識別的準確率能夠進一步提升。
關于屬性識別的研究方法大體分為兩類:
(1) 傳統的機器學習方法。支持向量機SVM算法、k最鄰近分類算法(kNN)和 AdaBoost算法作為分類算法被大量地使用以及優化。文獻[1]從重疊的patch中提取出HOG特征與Adaboost分類器一起完成了性別的屬性識別。文獻[2]提取LBG以及HOG特征來訓練ADAboost和kNN分類器,從而完成了屬性分類。文獻[3]提出了利用性別、頭發長度等二元屬性來描述一個人的外觀方法。
(2) 將深度學習應用到行人屬性分類與識別。從VGG到Inception[4-7]和RESNET,卷積神經網絡在圖像分類和圖像檢測等方面取得了巨大的成就和廣泛的應用。CNN與傳統的機器學習方法最大的區別是其多層結構能夠自動學習多個層次的特征:較淺的卷積層感知域較小,可以學習圖像的局部特征;較深的卷積層感知域較大,能夠學習到更加抽象的特征。這些抽象特征對物體的大小、位置和方向并不敏感,從而有助于提高識別的準確度。上述這些研究雖然都嘗試訓練一個魯棒的屬性識別模型,但它們都沒有探究丟棄的屬性信息中是否存在有“價值”的信息。本文認為在這些被丟棄的屬性信息中含有大量有用的隱藏信息,并且利用這些隱藏信息可以對原本的屬性識別任務有巨大的提升。
為了挖掘多余的屬性信息中的有用信息,本文采用了一個教師網絡加學生網絡的框架,其中:教師網絡的作用是學習多余屬性信息;學生網絡的作用是完成真正的屬性識別。首先訓練教師網絡,讓其對多余的屬性進行識別。然后用已有教師網絡聯合數據集中屬性數據,指導學生網絡的訓練,使教師網絡的知識能夠被學生網絡所吸收。為了達到這個目的,采用了知識蒸餾的方法,并提出了一種混合的損失函數(KD Loss)。具體的訓練方式如圖1所示。
教師網絡用于對多余的屬性進行識別,它的結構如圖2所示。教師網絡由一個深度CNN和一個Embedding層組成。輸入為圖片,輸出為一個向量,代表著該圖片的屬性識別結果。

圖2 教師網絡的結構
完成對教師網絡的訓練后,會利用教師網絡的輸出以及數據集中屬性數據對學生網絡進行訓練,讓學生網絡吸收教師網絡的知識。學生網絡的結構如圖3所示。在學生網絡中,深度CNN結構后跟著一個Embedding層。Embedding層的輸出是對于所有屬性識別的結果,我們將結果分為需要識別的屬性(LOGIT1)以及多余屬性(LOGIT2)。LOGIT1就作為學生網絡在測試時的輸出,而LOGIT2則會在學生網絡訓練時與LOGIT1一起用于計算KD Loss。

圖3 學生網絡結構
在對學生網絡進行訓練的過程中,本文方法最重要的部分在于讓學生網絡吸收教師網絡對多余屬性學習的知識從而提高屬性識別的準確度,所以提出了一種混合的損失函數KD Loss。在計算該損失函數的過程中會對教師網絡進行知識蒸餾,從而讓學生網絡學習到數據集中的隱藏知識。
傳統的知識蒸餾方法的目的是將一個巨大的模型集合壓縮為單個模型。利用這個方法,將原本數據集中離散的屬性標簽變成了連續的概率分布,提取教師網絡中的隱藏知識,使得教師網絡學習到的知識成為學生網絡的一部分,具體的做法如下:
神經網絡通常使用“softmax”輸出層產生一個分類的概率向量p,該輸出層將每個類的logit值zi與其他類的logit值進行比較,從而生成每個類的概率pi:
(1)
知識蒸餾的方法[9]對“softmax”輸出層進行了修改,讓輸出層產生一個被“軟化”后的概率向量qi:
(2)
式中:T為溫度,當T=1的時候就是常用的softmax輸出層。如果T的值使用的較高,會得到一個更平均的概率向量。
在訓練學生網絡的時候,對訓練集上每個情況,使用由教師網絡高溫蒸餾得到的軟目標,作為目標的一部分,隱藏知識就可以從教師網絡傳遞到學生網絡。即教師網絡的輸出zi會經過一個“高溫”的“softmax”層得到qi,并將其用于KD Loss的計算。
為了讓學生網絡吸收教師網絡對于多余屬性學習的知識,我們將相對熵損失函數和交叉熵損失函數進行了結合。相對熵損失函數用來衡量兩個分布之間的相異度,當兩個隨機分布相同時,它們的相對熵為零;當兩個隨機分布的差別增大時,它們的相對熵也會增大,可以用于衡量教師網絡輸出的分布和學生網絡輸出的分布之間的相異度。交叉熵損失函數往往用來表征真實樣本標簽和預測概率之間的差值,當預測概率與真實樣本標簽的差異增大時,它們的交叉熵也會增大,可以用于衡量學生網絡預測的概率和真實樣本標簽的差值。將這兩種損失函數進行混合后,就可以同時衡量教師網絡輸出的分布和學生網絡輸出的分布之間的相異度以及學生網絡預測的概率和真實樣本標簽的差值。由此,本文使用了一個混合的損失函數KD Loss,表達式如下:
Loss=KL(p2,q)×alpha×T2+
CE(label,p1)×(1-alpha)
(3)
式中:T為溫度,KL為相對熵(Kullback-Leibler divergence),CE為交叉熵(cross entropy),q為教師網絡輸出經過蒸餾后的結果,p1為學生網絡中的LOGIT1,p2為學生網絡中LOGIT2經過蒸餾后的結果,label為數據集所給的真實標簽信息,alpha為KL和CE在KD Loss中的比例參數。當alpha=0的時候,學生網絡就相當于一個使用交叉熵作為損失函數的深度卷積神經網絡。KD Loss的第一部分旨在讓學生網絡向一個軟化后的分布(即經過知識蒸餾的教師網絡的輸出)優化,第二部分則如傳統的那樣讓學生網絡向真實的標簽值進行優化。
實驗主要是為了證明本文提出的框架和損失函數可以有效地利用多余屬性信息來提升行人屬性識別的準確率,關注點在于新的框架和損失函數對原有網絡的提升,而不是為了取得超過現有所有方法的準確率。因此,本文選用了在圖像識別上表現較好的卷積神經網絡ResNet101作為教師網絡以及學生網絡中的deep architecture。實驗的數據集選用了圖片數量巨大、識別難度較高的RAP[10]數據集。通過將學生網絡與直接使用ResNet101的結果進行對比,證明本文提出的知識蒸餾方法能夠有效地利用多余信息提升屬性識別的準確率。
RAP是一個專門針對行人屬性識別的數據集,它收集了一個購物中心監控網絡的數據。在該監控網絡中選擇了26個監控攝像頭連續三個月所拍攝的圖像信息。該數據集中的部分圖像如圖4所示。在現實場景中,由于監控攝像頭的位置、行人的姿態、行人的面部朝向、行人距離監控攝像頭的距離等因素,同一種屬性會有很大的變化并對屬性識別帶來巨大的挑戰。

圖4 RAP數據集中部分圖像的示例
RAP數據集共有41 585張剪裁好的行人圖片,分辨率從36×92到344×554,它應該是至今為止最大的行人屬性數據集。整個RAP數據集被劃分為訓練集和測試集兩個部分,其中訓練集有33 268張圖片,占總數的80%;測試集有8 317張圖片,占總數的20%。訓練集和測試集的比例為4∶1。在RAP數據集給出標記的屬性中,選擇了54個屬性(見表1)作為需要識別的屬性,其余66個屬性當作多余信息處理。

表1 所有需要識別的屬性名稱
首先使用傳統的方式(即將多余的屬性信息直接丟棄)進行對照的實驗。這里采用了ResNet101的網絡結構,Batch Normalization的方式作為抑制過擬合的手段,對于模型的初始參數值采用了隨機初始化。對輸入的圖像做一個變換,使得網絡的輸入是一個256×128×3的矩陣,并且不再對輸入圖像做其他的處理。訓練完成后將其在測試集上進行測試,得到結果:所有54個屬性的平均準確率為92.13%,F1-score為71.94%。
為了進行對比實驗,我們使用了本文提出的方法。教師網絡同樣選用了ResNet101的網絡結構,Batch Normalization的方式作為抑制過擬合的手段以及同樣的圖像處理方式。完成對教師網絡的訓練后,使用教師網絡結合數據集的人工標簽對學生網絡進行訓練。學生網絡仍然采用了ResNet101作為深度網絡結構,但在損失函數中使用了本文中提到的KD Loss混合損失函數。對于KD Loss中的參數:我們嘗試了[1,2,5,10]的溫度,[0.1,0.3,0.5]的比例alpha。最后在測試集上得到的具體結果如表2所示。

表2 學生網絡的屬性識別結果 %
通過表2的實驗結果可以發現:本文提出的方法對于屬性識別有著一定的提升,在T=2,alpha=0.1的情況下提升效果最為明顯,對54個屬性的平均分類準確率最高提升了1.76%,F1-score最高提高了3.75%。這是在原本ResNet網絡準確率已經很高的情況下帶來的提升,證明了學生網絡吸收教師網絡對多余屬性學習的知識后,挖掘了被丟棄的屬性信息中的隱藏信息,并將其用于對選中的54個屬性進行識別。
進一步對屬性進行分析后發現了幾個問題:在選中的54個屬性中關于部分年齡段的識別準確率非常低,關于年齡屬于30~45歲還是45~60歲的區分準確率只有70%左右。在識別行人鞋子屬于皮鞋還是運動鞋的識別準確率也比較低,在78%左右。這幾個屬性的識別正確率相較于原本的網絡幾乎沒有提升。
通過對RAP圖像的深入分析,發現部分圖像中只有行人的背影,行人的臉部并沒有出現在圖片中。此外,即使是帶有行人臉部的圖片中,由于行人和監控攝像頭的距離原因,行人臉部的圖像也很模糊。所以,本文認為缺少關鍵面部信息以及近距離視覺信息是造成以上兩個屬性區分準確率很低的主要原因。這些需要在今后的研究中深入探討。
本文針對神經網絡對訓練數據中隱藏知識利用不充分的問題以及訓練數據中的部分信息沒有被利用的問題,研究了一種利用多余屬性信息進行數據蒸餾的方法。通過優化網絡結構并使用一種混合的損失函數,提高了屬性識別的性能。使用最新的大規模行人屬性數據集RAP進行實驗,證明了本文提出的優化方法能夠有效地利用多余信息提升屬性識別的性能。