張曉涵
(中國石油大學(xué)(華東) 計算機科學(xué)與技術(shù)學(xué)院, 青島 266580)
行人重識別(person re-identification)也稱行人再識別, 近年來引起學(xué)術(shù)界與工業(yè)界的廣泛關(guān)注, 成為一個研究熱點. 行人重識別旨在檢索跨攝像頭下的某一目標行人, 該技術(shù)可以與人臉識別、行人檢測等相結(jié)合, 促進嫌犯追蹤、走失救助等智慧安防領(lǐng)域以及無人超市等智慧商業(yè)領(lǐng)域的發(fā)展. 然而, 在真實的場景下,不同攝像頭的同一行人由于受到光照、姿態(tài)、遮擋、分辨率等各種因素的影響, 往往呈現(xiàn)很大的外觀差異,這給行人重識別的研究與應(yīng)用帶來諸多挑戰(zhàn)[1]. 因此,如何提取更具判別力的行人特征, 并采用高效的相似性度量方法以減小類內(nèi)差距, 增大類間差距成為行人重識別的關(guān)鍵問題.
傳統(tǒng)的行人重識別由特征提取與相似性度量兩個子任務(wù)組成, 首先手工設(shè)計顏色、紋理、形狀等低級特征對行人進行表示, 然后借助度量學(xué)習算法對特征距離進行約束, 無法實現(xiàn)端到端, 費時費力且精度普遍低下. 隨著深度學(xué)習的興起, 行人重識別將特征提取與相似性度量整合到一個統(tǒng)一的框架中. 通過卷積神經(jīng)網(wǎng)絡(luò)提取行人的高層特征, 同時設(shè)計度量損失函數(shù)控制類內(nèi)類間距離, 大大提升了行人重識別的性能.2016 年, Zheng 等[2]提出IDE 模型, 把行人重識別看做一個分類任務(wù), 成為后續(xù)很多工作的基線模型. 近年,為了提升行人重識別在數(shù)據(jù)集上的精度, 大量工作采用結(jié)合行人局部特征的方法. Zhao 等[3]提出的Spindle Net, 由姿態(tài)估計模型獲得人體的若干關(guān)鍵點, 產(chǎn)生7 個子區(qū)域, 然后分區(qū)域進行特征提取與融合. Kalayeh等[4]提出了SPReID, 為了獲取局部特征, 將人體分割模型引入行人重識別中, 得到前景和4 個不同身體區(qū)域的掩膜. Sun 等[5]提出了經(jīng)典的PCB 網(wǎng)絡(luò), 把行人圖像水平均分為6 塊, 得到6 個局部特征向量, 之后每個特征向量都經(jīng)過降維和全連接層后送入分類器中, 進行單獨預(yù)測. 基于此工作, Wang 等[6]結(jié)合了全局特征設(shè)計了MGN 網(wǎng)絡(luò), 通過將行人圖像分別水平均分為2 塊和3 塊, 得到了不同粒度的行人局部特征. 這些方法雖然性能表現(xiàn)更好, 但無疑增加了網(wǎng)絡(luò)的復(fù)雜程度.基于姿態(tài)估計的方法和基于語義分割的方法需要引入額外的標注信息, 很大程度上依賴于預(yù)訓(xùn)練模型的性能. 基于水平切塊的方法通常包含多個支路, 且粗暴的劃分容易造成相應(yīng)部件語義不對齊問題. 而基于全局特征的行人重識別網(wǎng)絡(luò)結(jié)構(gòu)簡單, 近年來一直被忽視,具有很大的研究意義. 相似性度量方面, 通過將行人特征映射到歐幾里得空間, 最小化度量損失使得正樣本間特征距離減小, 負樣本間特征距離增大. 行人重識別中的度量損失主要有對比損失[7]、三元組損失[8]、四元組損失[9]等, 其中使用最廣泛的是三元組損失. 在三元組損失的基礎(chǔ)上, Hermans 等[10]提出了難樣本采樣三元組損失, 進一步提升模型的泛化性.
本文以ResNet50 為骨干網(wǎng)絡(luò), 在特征提取層面做出3 點改進, 最大程度上利用行人的全局特征: (1)設(shè)計一種多重感受野融合模塊, 采用不同大小的卷積核獲取不同感受野的行人信息; (2)采用GeM 池化代替被普遍使用的全局平均池化獲取細粒度特征; (3)分別從ResNet50 的Conv4_x 和Conv5_x 層進行采樣, 得到兩個通道數(shù)不同的特征圖, 各送入一個分支, 兩個分支得到的特征均使用分類損失與難樣本采樣三元組損失聯(lián)合訓(xùn)練. 本文方法在Market1501 數(shù)據(jù)集與DukeMTMCreID 數(shù)據(jù)集上驗證, 實驗結(jié)果表明, 本文方法具有較好的表現(xiàn), 甚至優(yōu)于一些基于局部特征的方法.
此前基于全局特征的行人重識別方法整體流程大致如圖1 所示, 網(wǎng)絡(luò)提取特征后, 采用全局平均池化(GAP)獲得全局特征向量, 之后經(jīng)過全連接層獲得低維的輸出特征. 這類方法結(jié)構(gòu)簡單但精度普遍較低, 在此基礎(chǔ)上, 本文對基于行人全局特征的方法進行了改進. 本文整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示, 使用在ImageNet上預(yù)訓(xùn)練過的ResNet50 作為骨干網(wǎng)絡(luò), 該網(wǎng)絡(luò)在行人重識別中被普遍使用. 移除網(wǎng)絡(luò)最后的平均池化層和全連接層, 把最后一個卷積層的步長由2 設(shè)為1 以獲取分辨率更高的特征圖, 這就使得Conv4_x 與Conv5_x采樣的特征圖具有相同的尺寸. 之后是兩個獨立的分支, 第一個分支是從Conv5_x 得到的特征圖, 經(jīng)過本文設(shè)計的多重感受野融合模塊, 之后進行GeM 池化, 得到2 048 維的特征向量, 使用難樣本采樣三元組損失約束. 該特征向量經(jīng)過一個全連接層得到512 維的輸出特征, 使用交叉熵損失約束. 第二個分支是從Conv4_x得到通道數(shù)為1 024 的特征圖, 后續(xù)結(jié)構(gòu)與第一分支保持相同. 在測試階段, 將兩個分支經(jīng)過GeM 池化得到的特征向量進行融合得到3 072 維的向量對行人進行檢索.
圖1 基于行人全局特征的網(wǎng)絡(luò)結(jié)構(gòu)
圖2 本文網(wǎng)絡(luò)結(jié)構(gòu)
如圖1 所示, 基于全局特征的行人重識別方法在提取特征之后, 通常直接進行池化操作獲取行人的全局特征向量. 但是, 在行人重識別中存在行人尺度變化的問題, 而對于尺度不同的的目標來說, 不同大小的感受野將會產(chǎn)生不同的效果. 如果不考慮此問題, 直接將網(wǎng)絡(luò)提取到的特征輸入到后續(xù)的池化層中, 將在一定程度上降低行人重識別的識別精度. 為了適應(yīng)行人的尺度變化, 本文在網(wǎng)絡(luò)提取特征后先經(jīng)過本文設(shè)計的多重感受野融合模塊, 該模塊通過在不同分支設(shè)置不同的感受野大小, 最后進行融合, 有效利用目標上下文信息. 空洞卷積[11]最初源于語義分割任務(wù), 不需要增加參數(shù)量便可實現(xiàn)擴大感受野的目的. 如圖3 所示, 多重感受野融合模塊共包含3 個分支, 對輸入的特征圖X分別進行卷積操作. 3 個分支均選取3×3 卷積核, 但空洞率分別為1、2、3, 得到特征圖F1、F2、F3. 為了更有效地利用來自不同分支的特征, 關(guān)注更重要的信息, 將F1、F2、F3 分別經(jīng)過一個通道注意力模塊, 這里的通道注意力模塊源于卷積注意力模塊[12], 該模塊結(jié)構(gòu)如圖4 所示. 在通道注意力模塊中, 輸入的特征圖同時采用最大池化與平均池化得到兩個一維的向量,之后被送進權(quán)重共享的多層感知機中, 將輸出進行逐元素的相加后經(jīng)過Sigmoid 激活即可得到對應(yīng)的注意力權(quán)重. 將3 個分支得到的注意力權(quán)重系數(shù)分別于特征圖F1、F2、F3 相乘, 得到通道加權(quán)后的特征F1′、F2′、F3′. 最后, 將F1′、F2′、F3′進行融合, 即可得到最終的輸出特征X′. 多重感受野融合模塊可以有效聚合不同感受野的特征, 使行人重識別性能進一步得到提升.
圖3 多重感受野融合模塊
圖4 通道注意力模塊
在行人重識別網(wǎng)絡(luò)中, 提取全局特征之后通常采用全局平均池化, 如圖1 所示. 全局平均池化關(guān)注的是圖像整體的信息, 很容易受到背景和遮擋的干擾. 因此,在本文中, 采用generalized-mean (GeM)池化[13], 該池化方法已在圖像檢索任務(wù)中取得了顯著成果. 相比于傳統(tǒng)的全局平均池化, GeM 池化包含了可學(xué)習的參數(shù)捕獲細粒度信息. 公式如下:
目前, 大部分行人重識別工作僅利用網(wǎng)絡(luò)最后一個卷積層提取到的高層語義特征圖, 如圖1 所示. 高層語義特征能有效獲取行人的顯著信息, 但會忽視部分細節(jié)信息, 而這些細節(jié)信息對行人身份的判別同樣有效. 因此, 為彌補缺失的細節(jié)信息, 本文同時采樣低層特征, 進行多層特征融合. 具體來說, 分別采樣ResNet50的Conv5_x 的高層顯著特征與Conv4_x 低層細節(jié)特征, 得到兩個特征圖, 通道數(shù)分別為2 048 和1 024. 如圖2 所示, 兩個特征圖形成兩個獨立的分支G1 和G2,兩分支采用相同的結(jié)構(gòu), 都經(jīng)過多重感受野融合模塊-GeM 池化-全連接層. 兩分支都使用交叉熵損失與難樣本采樣三元組損失訓(xùn)練, 在測試時, 將兩個分支的特征向量進行融合, 通過整合網(wǎng)絡(luò)不同深度的信息進行預(yù)測. 多層特征融合的操作, 結(jié)合了行人的高層顯著信息與低層細節(jié)信息, 使得特征更具判別力.
本文聯(lián)合交叉熵損失與難樣本采樣三元組損失預(yù)測行人的身份. 交叉熵損失被廣泛應(yīng)用于圖像分類任務(wù)中, 通過最小化真實概率分布與預(yù)測概率分布之間的差異對網(wǎng)絡(luò)進行優(yōu)化. 在行人重識別中, 每張行人圖像對應(yīng)一個身份標簽, 因此可以轉(zhuǎn)化為一個分類問題.使用身份標簽作為監(jiān)督信號, 類別數(shù)即為訓(xùn)練集中行人身份數(shù). 對于第i個學(xué)習到的特征fi, 交叉熵損失表示如下:
其中,N表示一個批次中的圖像數(shù)量,Wk表示對應(yīng)類別的權(quán)重向量,C表示訓(xùn)練集中行人的類別數(shù). 在本文實驗中, 把G1 分支學(xué)習到的512 維特征與G2 分支學(xué)習到的512 維特征計算交叉熵損失. 交叉熵損失函數(shù)使得行人圖像接近所屬的類別, 實現(xiàn)分類的效果.
此外, 行人重識別本質(zhì)是一個圖像檢索問題, 這就需要引入一個度量學(xué)習函數(shù)使網(wǎng)絡(luò)學(xué)習兩張圖像之間的相似度. 對于行人重識別來說, 就是使得相同行人不同圖像之間比不同行人不同圖像之間更為相似. 三元組損失經(jīng)常被用于行人重識別任務(wù)中, 但由于行人圖像存在大量外觀相似的負樣本對, 如果采樣簡單易區(qū)分的樣本進行訓(xùn)練, 不利于網(wǎng)絡(luò)學(xué)習到更有用的特征從而提升模型的可泛化性. 因此, 本文中對G1 分支的2 048 維特征與G2 分支的1 024 維特征使用難樣本采樣三元組損失, 公式如下:
本文在行人重識別最常用的Market-1501 數(shù)據(jù)集和DukeMTMC-ReID 數(shù)據(jù)集上進行評估與分析. Market-1501 數(shù)據(jù)集采集自5 個高分辨率攝像頭和1 個低分辨率攝像頭, 共包含1 501 個行人的32 668 張圖像. 其中訓(xùn)練集由751 個行人的12 936 張圖像組成, 測試集由其他750 個行人的3 368 張query 圖像與19 732 張gallery圖像組成. DukeMTMC-ReID 數(shù)據(jù)集取自DukeMTMC數(shù)據(jù)集, 該數(shù)據(jù)集由8 個高分辨率攝像頭拍攝的1 404 個行人的36 411 張圖像組成. 隨機采樣702 個行人的16 522 張圖像組成訓(xùn)練集, 剩余702 個行人的2 228張query 圖像和17 661 張gallery 圖像組成測試集.
本文實驗使用行人重識別普遍使用的平均準確度mAP (mean average precision)和首位命中率Rank-1 作為評估標準.
本文實驗基于PyTorch 框架, 實驗環(huán)境為NVIDIA Tesla P100. 骨干網(wǎng)絡(luò)采用在ImageNet 上預(yù)訓(xùn)練的ResNet50, 移除最后的全連接層與平均池化層, 并將最后一塊的卷積步長設(shè)為1. 實驗所采用的行人圖像尺寸為256×128, 通過隨機擦除、隨機水平翻轉(zhuǎn)、隨機裁剪進行數(shù)據(jù)增強. 設(shè)置一個訓(xùn)練批次為32, 一個批次選取的行人類別數(shù)P=4, 一個行人采樣的圖片數(shù)K=8. 超參數(shù) α設(shè)置為0.3,pk設(shè)置為3. 采用SGD 優(yōu)化器進行梯度更新, weight decay 設(shè)為5E-4, momentum 設(shè)為0.9.共訓(xùn)練80 個epoch, 初始學(xué)習率為0.05, 訓(xùn)練40 個epoch 后學(xué)習率衰減至原來的1/10.
為了分析本文各模塊的有效性, 分別在Market-1501 數(shù)據(jù)集和DukeMTMC-ReID 數(shù)據(jù)集進行消融實驗, 具體結(jié)果如表1 和表2 所示. 其中, w/o MFF 表示去掉多重感受野融合模塊, w/o GeM 表示去掉GeM 池化采用全局平均池化, w/o MSF 表示去掉多尺度特征融合只保留G1 分支的結(jié)果.
表1 Market-1501 數(shù)據(jù)集上去掉各模塊的結(jié)果(%)
表2 DukeMTMC-ReID 數(shù)據(jù)集上去掉各模塊的結(jié)果(%)
從實驗結(jié)果可以看出, 本文各模塊都起到了一定的作用. 去掉多重感受野融合模塊, Market-1501 數(shù)據(jù)集和DukeMTMC-ReID 數(shù)據(jù)集的mAP 分別為82.6%和73.9%, 添加多重感受野融合模塊之后, 兩個數(shù)據(jù)集上的mAP 分別提升了1.2%和1.0%. 這證明了該模塊可以有效獲取整合不同感受野的特征, 減輕行人圖像尺度變化帶來的負面影響. 為了證明本文中GeM 池化更有優(yōu)勢, 將網(wǎng)絡(luò)中的GeM 池化替換為一般的全局平均池化. 結(jié)果表明, 采用GeM 池化后, 在Market-1501數(shù)據(jù)集上和DukeMTMC-ReID 數(shù)據(jù)集上的mAP 分別提升了1.6%和2.8%, Rank-1 分別提升了0.8%和1.2%.同時, 相比于去掉G2 分支, 只保留G1 分支訓(xùn)練和測試, 本文方法在Market-1501 數(shù)據(jù)集上mAP 提升了2.2%, Rank-1 提升了0.6%, 在DukeMTMC-ReID 數(shù)據(jù)集上mAP 提升了3.9%, Rank-1 提升了1.2%. 結(jié)果表明, 融合多層信息可以提升網(wǎng)絡(luò)性能.
表3 和表4 分別給出了本文方法在Market-1501數(shù)據(jù)集和DukeMTMC-ReID 數(shù)據(jù)集上與其他行人重識別方法的對比, 包括傳統(tǒng)方法(LOMO+XQDA[14]、BoW+kissme[15]) 和基于深度學(xué)習的方法(IDE[2]、SVDNet[16]、HA-CNN[17]、PCB+RPP[5]、Mancs[18]、IANet[19]). 從表中可以看出, 傳統(tǒng)方法在數(shù)據(jù)集上的表現(xiàn)較差. 此外, 相比于近年來基于深度學(xué)習的方法, 本文方法均有顯著提升. 具體來說, 本文方法在Market-1501 數(shù)據(jù)集上的mAP 指標達到83.8%, 在引入重排序算法[20]后, mAP 達到了92.6%. 同時, 在DukeMTMCReID 數(shù)據(jù)集上的mAP 指標達到74.9%, 通過重排序后, 精度進一步提升, 其中mAP 達到了88.6%. 本文方法具有競爭性, 雖然是基于簡單的全局特征進行改進,效果卻優(yōu)于部分基于局部特征的方法, 如PCB+RPP[5].
表3 Market-1501 數(shù)據(jù)集上與其他方法的對比(%)
表4 DukeMTMC-ReID 數(shù)據(jù)集上與其他方法的對比(%)
將檢索結(jié)果可視化, 如圖5 所示, 實線框的檢索結(jié)果表示該圖像匹配正確, 虛線框的檢索結(jié)果表示該圖像匹配錯誤. 從匹配結(jié)果來看, 本文方法取得了較高的檢索準確率. 但一些外觀十分相似的不同行人很難區(qū)分, 雖然難樣本采樣三元組損失一定程度上減輕了該問題, 但還是會造成少數(shù)樣本誤檢測.
圖5 可視化結(jié)果
本文提出了一種基于全局特征的行人重識別方法.為適用行人尺度變化, 設(shè)計多重感受野融合模塊, 采用空洞率不同的卷積核進行卷積操作并使用注意力模塊獲取關(guān)鍵特征, 然后將各分支的特征進行融合. 此外,將全局平均池化替換為更有效的GeM 池化. 采樣網(wǎng)絡(luò)不同深度的特征送入不同分支, 測試時將多層特征融合用來預(yù)測. 在公開數(shù)據(jù)集上的實驗表明, 本文方法具有較好的性能. 未來研究中將考慮行人重識別的實用性, 尤其是在無監(jiān)督與跨模態(tài)方面提升檢索準確率.