徐振國,張 旭,丁亞男,湯 健
(上海工程技術大學 航空運輸學院,上海 201620)
行人重識別是指用給定待識別的行人圖像,從采集自不同時間點、不同攝像頭的圖像或者視頻中檢索特定行人的任務。行人重識別可以彌補目前固定攝像頭的視覺局限,并可與目標檢測、目標跟蹤技術相結合,應用于視頻監控、智能安防等領域[1]。在實際情況中,因攝像頭安裝位置、拍攝視角、環境光照變化及遮擋干擾等因素的影響,造成行人的姿態變化及外觀差異,給行人識別帶來巨大挑戰。
行人的特征表示的魯棒性對行人重識別算法的準確度有很大的影響,越好的特征表示能夠獲取到更加全面的特征信息,對應算法的效果就越好。早期的行人重識別一般都是提取手工設計的特征,包括顏色、方向梯度直方圖、LOMO、SIFT 等,之后利用KISSME 或XQDA 度量相似性[2-3]。但在復雜場景下,傳統的手工特征描述能力有限,相似性度量也會很難求解,隨著深度特征在各任務中表現出相較于傳統特征更強的表征能力,目前行人重識別都是基于深度卷積神經,自動提取深度特征。起初基于深度學習的行人重識別方法主要是用深度網絡學習圖像的全局特征,用分類損失或者度量損失進行訓練,文獻[4]提出了一個基于難樣本采樣的三元組損失算法,通過在一個訓練批量中挑選出特征距離較大的正樣本和特征距離較小的負樣本進行訓練,能夠明顯加快模型的收斂,提高網絡的泛化能力;當只用圖像的全局特征作為特征,表示識別的方法遇到瓶頸,文獻[5]提出一種基于水平切塊的局部特征的模型,將每一個局部特征作為一個獨立的特征連接損失函數單獨訓練,將局部特征拼接起來,得到最終的特征。引入基于局部的精確池化(Refined part pooling,RPP)方法,用注意力機制對水平切塊進行修正,進一步提升了算法的性能。但使RPP 需預先訓練好網絡模型,再凍結模型參數重新訓練,因此整個模型不能端到端的訓練,且僅使用單一尺度的局部特征會丟失一部分有用的視覺信息。文獻[6]引入人體骨架關鍵點模型,提取人體關鍵點,利用關鍵點通過區域候選網絡提取7 個身體子區域,然后根據子區域的不同語義層次與關系在不同的階段將特征向量進行融合,得到一個聯合全局特征和多階段局部特征的行人重識別特征;文獻[7]提出了一種全局到局部對齊的描述子學習方法(Global-Local-Alignment Descriptor,GLAD),通過估計人體的4 個關鍵點把圖像分成頭部、上半身和下半身,然后將原圖和3 個局部圖像一起連接到一個4 分支共享權重的卷積網絡中,分別學習3 個局部特征和全局特征,利用全局平均池化(Global average pooling,GAP)來提取各自的特征,最后特征融合了全局以及3 個局部圖像的信息。上述方法利用行人姿態點提取特征,雖然可以對齊不同圖像中的人體結構信息,但是需要一個額外的姿態估計模型,算法效率低,且分塊區域共享權重可能會導致信息丟失,影響行人識別的準確度[8]。
為減少圖像背景對行人信息表征的影響,本文將RPN 引入到行人重識別算法中,通過RPN 獲取不同尺度信息的候選區域,更關注圖像中的行人區域,將候選區域投影到特征圖上,經過后處理篩除得到最終的候選區域;再結合ROI 池化層處理不同尺度大小的特征圖,實現多尺度信息的協調統一;搭建了一個聯合全局特征、水平切塊的局部特征以及基于RPN 和ROI 特征的多分支網絡結構,利用局部分支關注細粒度的行人特征彌補全局分支中的信息缺失,進而得到一個聯合全局和局部多尺度信息的多分支網絡。另外,訓練階段在難樣本采樣的三元組損失上引入正樣本的最小距離為類內距離,提高正樣本之間的聚類性能,防止結果過擬合。
本文的模型結構如圖1 所示,采用聯合全局特征、水平切塊的局部特征以及經過區域生成網絡提取ROI 的多尺度特征。全局特征關注行人整體特征,水平切塊的局部特征關注細粒度的行人特征,區域生成網絡提取ROI 的多尺度特征抑制背景噪聲。

圖1 網絡模型結構Fig.1 Structure of the network model
模型的主干網絡采用Resnet50 網絡,在原來網絡的基礎上移除最后的平均池化層和全連接層,定義特征維度并添加分類器。將骨干網絡最后一個殘差塊的最后一層卷積層的步長設置為1,將提取的特征圖尺寸增大一倍,提取更加細粒度的特征。
將經過主干網絡提取的特征圖分別經過3 個分支:
(1)全局分支:經過全局平均池化得到2048 維的特征,再經過一個BNNeck 結構;
(2)局部分支:利用水平池化得到8 個局部特征,經由BN 層對特征向量和權重向量作歸一化處理,之后采用1×1 卷積對特征向量降維,最后利用動態對齊算法(DMLI)對齊局部信息;
(3)區域生成網絡分支:在特征圖上生成候選區域并提取ROI 的多尺度特征。
使用帶標簽平滑的分類損失和難樣本采樣的改進三元組損失進行聯合訓練優化,測試階段聯合3個分支進行相似性匹配。
圖像切塊是一種簡潔有效的提取局部特征方法。考慮到在行人重識別數據集中,一部分圖像背景噪聲區域過大,一部分圖像只包含部分前景,造成識別的困難,本文引入區域生成網絡選擇候選區域,再通過ROI 池化層提取ROI 的多尺度特征,降低背景噪聲的影響。
當pH為4.0的時候,濃度為2 μg/ml氯霉素標準品的出峰時間是10.27 min。峰圖有稍微的拖峰現象。
區域生成網絡(Region Proposal Network,RPN)由Faster R-CNN 一文提出,RPN 網絡在特征圖上生成目標候選區域,并對目標候選區域的位置進行回歸[9]。具體操作為:首先,在卷積網絡提取的特征圖上,用一個3×3 的滑動窗口檢測,找到與滑動窗口中心點對應原始圖像上的區域,將框的中心作為錨點,并生成預先定義的K個候選窗口,滑動窗口每滑動一個位置,生成一個256 維的特征向量,遍歷得到一個新的特征圖;其次,對整個特征圖分別進行兩次1×1 卷積,得到每個特征向量的類別分數和候選框的回歸參數;最后,通過篩除越界的候選框、非極大值抑制及偏移,得到最終的候選框。
使用RPN 網絡生成候選區域后,將RPN 網絡生成的候選框投影到特征圖上,獲得相應的特征矩陣,由于經過RPN 網絡生成的候選區域具有不同的尺度和形狀,不能直接通過全連接層預測分類,因此本文又將每個特征矩陣通過一個ROI 池化層獲得統一大小的特征圖。具體操作為:首先,將經過RPN 網絡生成的候選區域映射到特征圖上;其次,對映射后的區域進行劃分,使之與輸出的維度相同;最后,對劃分后的每個部分進行最大池化,得到固定大小的特征圖。
本文在區域生成網絡的基礎上做出修改,如圖2 所示。

圖2 區域生成網絡分支結構Fig.2 Structure of the region proposal network
(1)本文主干采用Resnet50 網絡,輸出2 048 維的特征圖,為了減少計算量,在區域生成網絡之前先進行一次1×1 卷積,得到512 維的特征,經過區域生成網絡之后輸出16×8×512 維的特征;
(2)對于上述得到的特征,可以看作是16×8 的512 通道的圖像,在圖像上的每個位置定義候選窗口,考慮到特征提取網絡的圖像是256×128 像素的行人圖像,因此定義3 種比例的矩形錨框,分別是H∶W={2∶1,3∶2,1∶1};
(3)利用分類層輸出每個位置候選框屬于行人的概率,篩除得分排序低的結果,再經過非極大值抑制得到最終的預測;
(4)利用ROI 池化層統一特征向量大小時,首先將每個候選區域劃分為8×1 塊,對各部分進行平均池化;接著將得到的8×1 維的特征張量水平切分成8 個特征向量;將ROI 池化后的特征先聯合全局分支和局部分支連接三元組損失訓練優化;對8×1維的特征張量再進行全局平均池化,通過全連接層計算分類損失。
分類損失可以看作是在特征空間學習幾個超平面,把不同類別的特征劃分到不同的子空間里。將特征歸一化到超球面,再優化分類損失,取得更好的效果。基于分類損失的方法比較魯棒,訓練也比較穩定,但當訓練的ID 數過多時,分類損失會容易過擬合。而三元組損失(Triplet loss)可以縮短正樣本對之間的距離,增加負樣本對之間的距離,最終在特征空間中讓同一行人的圖像形成聚類。
由于三元組損失適合在自由的歐式空間里約束,如果把特征約束到超球面上,特征分布的自由區域會大大減小,導致三元組損失把正負樣本對推開的難度增加,因此若將特征歸一化到超球面上,再用三元組損失優化網絡,網絡的性能通常會變差。文獻[10]提出一種BNNeck 結構,將網絡全局池化得到的特征ft直接連接一個三元組損失,再將ft經過一個BN 層的歸一化得到fi,使一個批量里面fi的各個維度近似地分布在超球面附近,最后再經過一個分類的全連接層連接一個ID 損失,這樣可以使得三元組損失能夠在自由的歐式空間里約束特征,而分類損失可以在一個超球面附近約束特征。
本文使用BNNeck 結構的分類損失和三元組損失聯合優化的訓練方法。分類損失函數采用交叉熵損失(CrossEntropy Loss),利用行人ID 作為訓練標簽來訓練模型。由于傳統的三元組隨機從訓練數據中采樣的樣本大部分都是簡單易區分的樣本對,而且三元組損失沒有考慮到正樣本對之間的絕對距離,不利于網絡學習到更好的表示。本文使用難樣本采樣三元組損失(TriHard Loss),用更難的樣本去訓練網絡,并在此基礎上引入樣本的類內距離,提高網絡的泛化能力。本文的TriHard 損失表示式如下:

其中,(z)+表示max{z,0 };α是設定的閾值參數;da,p為行人正樣本對特征向量的歐式距離;da,n為行人負樣本對特征向量的歐式距離;A為與a相同行人ID 的圖像集;B為不同行人ID 的圖像集。
對于每一個訓練batch,隨機挑選p個同一行人ID 的行人,每個行人隨機選擇k張不同的圖片,即一個batch含有p × k張圖片。對于batch中的每一張圖片a,可以挑選一個最難的正樣本和一個最難的負樣本與a組成一個三元組。TriHard Loss 會計算a和batch中的每一張圖片在特征空間的歐式距離,選出與a距離最遠的正樣本p和距離最近的負樣本n來計算三元組損失,再增加一項優化類內損失。
為了驗證本文算法的有效性,在Market1501、DukeMTMC-reID 數據集上進行實驗,評估算法的性能。使用Rank-1 和mAP這兩個指標評估模型的性能。Rank-1 表示在ReID 算法返回的行人識別排序列表中第1 位命中檢索的行人;mAP指標反應檢索的人在數據庫中所有正確的圖片排在列表前面的程度,能更加全面的衡量ReID 算法的性能。
實驗平臺使用搭載NVIDIA GTX1060 GPU,16G內存的計算機。實驗采用PyTorch 深度學習框架,使用在ImageNet 數據集上預訓練的ResNet50 的殘差卷積網絡為骨架,調整行人圖像的尺寸為256×128 像素,將ResNet50 的最后一個殘差塊的最后一層卷積層的步長設置為1,移除最后的平均池化層和全連接層,在原來模型的基礎上重新定義分類器,行人圖像經過骨架網絡輸出的特征圖的尺寸為16×8×2 048。在定義網絡前向傳播時,使用ROI 池化,最后對特征進行歸一化處理。設置訓練過程中初始學習率為0.000 2,每訓練100 個epoch 學習率衰減10%,權重衰減系數為0.000 5,采用Adam 優化器進行參數更新。
為了驗證本文所提算法的有效性,將所提算法與基準模型在Market1501 和DukeMTMC-ReID 兩個數據集上進行對比實驗,實驗結果見表1 和圖3所示。采用Alignedreid模型作為本文的基準模型并對基準模型重新復現,結果顯示在Market1501 數據集上,Rank1 精度為89.6%,平均精確度mAP為76.2%,在Duke MTMC-reID 數據集上,Rank1 精度為79.3%,平均精確度mAP為64.9%。采用BNNeck結構,使用原始的TriHard 損失訓練模型,結果顯示模型的性能有了大幅度的提升。
為了驗證所提引入樣本類內距離的TriHard 損失的有效性,將原始的TriHard 損失改為引入正樣本類內距離的TriHard 損失,保證實驗中除了TriHard 損失不同,其他的設置完全一致。如圖3 所示,圖3(a)表示所提算法在Market1501 數據集的CMC,圖3(b)表示所提算法在Duke MTMC-reID 數據集的CMC。綠色虛線表示采用原始的TriHard 損失訓練的結果,藍色實線表示采用引入樣本類內距離的TriHard 損失的結果。實驗結果表明,引入樣本類內距離后的TriHard 損失模型在Market1501 和Duke MTMC-reID 數據集上的性能更好。
為了驗證區域生成網絡分支在本文模型中的有效性,在上述模型的基礎上引入區域生成網絡分支進行訓練,保持其他的設置完全一致。從表1 可以看出,加入區域生成網絡分支一起訓練后,在數據集Market1501 上的Rank1 精度提高到了94.7%,mAP精度提高到了85.8%;在數據集Duke MTMC-reID上的Rank1 精度提高到了86.8%,mAP精度提高到了74.3%。圖3 給出了所提算法CMC 曲線對比,其中紅色實線表示加入區域生成網絡分支后的CMC曲線。對比實驗表明,引入區域生成網絡分支,行人重識別的檢測效果有顯著的提升,驗證了區域生成網絡模塊的有效性。加入區域生成網絡分支后識別率提高的原因是區域生成網絡分支可以有效降低圖像中噪聲區域的干擾,從而提取到判別性更強的行人特征。

圖3 改進算法在Market1501 數據集和Duke MTMCreID 數據集CMC 曲線對比Fig.3 Comparison of CMC curve of the improved algorithm between Market1501 dataset and Duke MTMC-reID dataset

表1 實驗結果分析對比Tab.1 Analysis and comparison of experimental results
綜上所述,當模型同時采用BNNeck 結構、引入樣本類內距離的TriHard 損失以及加入區域生成網絡分支進行訓練時,所提算法能夠明顯提升模型性能,驗證了所提算法的有效性。
使用Re-ranking算法后,本文算法在Market1501 數據集上的Rank1 精度為95.3%,mAP精度為93.5%,在Duke MTMC-reID 數據集上的Rank1 精度為88.6%,mAP精度為86.1%。部分行人識別Rank10 的結果如圖4 所示。實驗查詢圖像分別選擇行人遮擋、圖像模糊、背景復雜的情況,其中右側虛線框內紅框標記的圖像表示匹配錯誤,綠色圖像表示匹配正確。從結果可以看出本文算法取得了較好的結果。

圖4 在Market1501 數據集的部分圖像查詢識別效果Fig.4 Some image query recognition effect in the Market1501 dataset
為了驗證所提算法的有效性,將本文算法與SCPNet、PCB、Pyramid、GLAD、MGN、Multi-Scale、MLFN、HPM、HACNN 等主流算法進行對比,結果見表2,可以看出本文算法在Market1501 和Duke MTMC-reID 這兩個數據集上的Rank1 精度和mAP精度優于絕大部分對比的算法。

表2 本文算法在Market1501 和Duke MTMC-reID 上與其他主流算法的對比Tab.2 Comparison of our algorithm with other mainstream algorithms on Market1501 and Duke MTMC-reID
本文提出了一種基于區域生成網絡的行人重識別改進算法。算法采用聯合全局分支、水平切塊的局部分支以及區域生成網絡ROI 池化分支的三分支網絡結構。其中全局分支關注行人整體特征,水平切塊的局部分支關注細粒度的行人特征,通過引入區域生成網絡選取候選區域,使用ROI 池化層提取不同尺度的特征,抑制數據集中部分圖像背景噪聲過大的影響,使學習到的特征具有更強的判別性。本文使用交叉熵損失函數和三元組損失聯合優化的訓練方法,在難樣本采樣三元組損失的基礎上引入正樣本的類內距離,提高網絡的泛化能力。通過在Market1501 和Duke MTMC-reID 數據集上進行實驗驗證,該方法取得了較好的識別效果,進一步提高了行人重識別的精度,表明所提方法的有效性。