厙向陽,李蕊心,葉 鷗
西安科技大學 計算機科學與技術(shù)學院,西安 710054
行人重識別主要是為了判斷不同攝像機下的行人是否為同一行人,攝像機捕獲的行人信息由于視角、光照、分辨率等的不同,造成行人身份難以分辨。目前行人重識別方法[1]主要有傳統(tǒng)的方法和基于深度學習的方法。傳統(tǒng)行人重識別方法主要由特征提取和度量學習兩部分組成。特征提取算法有LOMO算法[2]、Fish算法[3]、GOG算法[4]等,主要是從顏色、紋理、形狀、梯度等底層視覺信息入手進行特征提取。度量學習算法有LMNN算法[5]、RankSVM算法[6]、KISSME算法[7]等,主要是學習特征之間的距離來進行行人距離判別。而深度學習是將特征提取與距離度量融合到深度學習網(wǎng)絡中進行行人重識別。側(cè)重于特征提取的算法有MGN算法[8]、APR算法[9]、多尺度局部特征選擇算法[10],主要是從網(wǎng)絡結(jié)構(gòu)設(shè)計入手提取到更具魯棒性的行人特征。側(cè)重于度量學習的損失方法有對比損失[11]、三元組損失[12]、四元組損失[13]等,主要是通過對一對或者是三元組圖片進行度量學習,使得同一行人的距離更近,而不同行人的距離更遠,進而通過距離分辨出不同的行人。深度學習模型能自主地提取特征,但隨著網(wǎng)絡層數(shù)的加深會出現(xiàn)梯度消失情況,殘差網(wǎng)絡緩解梯度消失問題,但提取出的特征信息未被合理使用。殘差網(wǎng)絡融合注意力機制模塊可以很好地克服由于特征信息未被合理使用所帶來的弊端。例如,Zheng等人提出的PAN算法[14],用神經(jīng)網(wǎng)絡模型自動提取特征,利用一個映射預測網(wǎng)絡訓練出來一個參數(shù),最后進行行人身份的判別。Sun等人提出的PCB算法[15]主要考慮到由于暴力分割所引起的行人未對齊問題,行人特征進行均分之后通過空間注意力來對行人部分信息進行微調(diào)使其對齊。但是上述算法只考慮了空間域的信息特征,而忽略了通道域的特征信息。行人部分圖像被遮擋是影響行人重識別準確性的另一個重要因素。金翠等提出的基于隨機擦除行人對齊網(wǎng)絡的行人重識別方法[16],通過隨機擦除行人矩形框中的部分像素值可以解決圖像部分遮擋或者殘缺所帶來的匹配不準確問題。針對上述問題本文提出了融合隨機擦除和殘差注意力網(wǎng)絡的行人重識別算法。該算法在殘差網(wǎng)絡的基礎(chǔ)上,引入注意力機制模塊,通過強調(diào)有用的特征和抑制作用不大的特征來提升網(wǎng)絡的判別能力。引入隨機擦除的數(shù)據(jù)增強方法,以便降低過擬合現(xiàn)象,同時提高網(wǎng)絡泛化能力,解決行人重識別中遮擋問題。最后使用triplet loss對融合網(wǎng)絡進行監(jiān)督訓練,實現(xiàn)樣本在特征空間中達到更好的聚類效果,提升行人重識別的準確率。實驗驗證了算法的可行性和有效性。
卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)Fig.1 Convolutional neural network structure
(1)輸入層。輸入若干張行人圖像。
(2)卷積層。卷積層通過滑動窗口的不斷移動來提取特征,設(shè)Hi為第i層卷積輸出的特征,則
其中,Hi-1為輸入圖像的特征;Wi為該層的權(quán)值大??;b i為偏置;f(?)為激活函數(shù);?表示卷積運算。
(3)池化層。對卷積層輸出的特征圖進行尺度上的縮小以達到降維的目的。根據(jù)池化操作的不同,可分為最大池化(Max pooling),平均池化(Mean pooling)等。最大池化可以提取到最明顯的特征,平均池化就是提取所有區(qū)域內(nèi)像素的平均值。
(4)全連接層。一般位于網(wǎng)絡的輸出層之前,承擔特征映射及分類的功能。
(5)輸出層。在圖像分類領(lǐng)域輸出層通常采用softmax多分類器將全連接層的輸出映射到[0,1]區(qū)間,從而得到輸出的概率:
其中,h(x,y i)表示x屬于第i類的原始度量;P(y=i|x)表示樣本x屬于第i類的概率。
殘差網(wǎng)絡是由一系列殘差塊組成的網(wǎng)絡結(jié)構(gòu)。殘差網(wǎng)絡基本模塊結(jié)構(gòu)如圖2所示。
圖2 殘差網(wǎng)絡基本模塊結(jié)構(gòu)Fig.2 Basic module structure of residual network
假設(shè)第l+1層殘差卷積子模塊如下所示:
其中,xl為第l層的輸入;wl為第l層的參數(shù)。
由上式推導可得第L層的特征x L如下式所示:
設(shè)損失為ε,殘差網(wǎng)絡反向傳播如下所示:
殘差網(wǎng)絡[17]的基本模塊結(jié)構(gòu)通過將帶有權(quán)值的殘差項改用恒等映射代替的方法,令殘差部分趨近于0,很好地解決了隨著深度的增加而引起的梯度逐漸消失現(xiàn)象。
注意力機制模塊CBAM[18],是一種結(jié)合了空間(spatial)和通道(channel)的注意力機制模塊,如圖3所示。
圖3 注意力機制模塊Fig.3 Attention mechanism module
卷積運算所得特征圖作為輸入特征分別經(jīng)過空間注意力模塊(spatial attention module)與通道注意力模塊(channel attention module)之后得到精煉后的特征。其中通道注意力模塊如圖4所示。
圖4 通道注意力模塊Fig.4 Channel attention module
輸入特征圖(input feature)分別通過全局最大池化(MaxPool)和全局平均池化(AvgPool)之后,輸入到一個共享多層神經(jīng)網(wǎng)絡(SharedMLP)中,之后對輸出的特征進行相加,再經(jīng)過一個線性激活函數(shù)得到權(quán)重系數(shù)Mc,c為通道序號,最后將權(quán)重系數(shù)與原特征相乘就可以得到縮放后的新特征。
設(shè)F為輸入的特征圖,MLP為一個兩層共享權(quán)值的神經(jīng)網(wǎng)絡。則通道注意力模型如下:
其中,F(xiàn) cavg為通道維度的全局平均池化特征;F cmax為通道維度的全局最大池化特征;W0為第一層網(wǎng)絡之后的權(quán)值;W1為第二層網(wǎng)絡之后的權(quán)值;σ為激活函數(shù);C為通道數(shù);r為減少率。
空間注意力模塊如圖5所示。
圖5 空間注意力模塊Fig.5 Spatial attention module
通道注意力模塊修正的特征圖(channel refined feature)分別通過全局平均池化(AvgPool)和全局最大池化(MaxPool)之后按照通道拼接兩部分特征,然后經(jīng)過一個7×7的卷積層,再經(jīng)過一個線性激活函數(shù)得到權(quán)重系數(shù)M s,最后將權(quán)重系數(shù)與輸入特征相乘就可以得到縮放后的新特征。
設(shè)F為輸入的特征圖,空間注意力模型如下:
其中,F(xiàn) savg為空間維度的全局平均池化特征;F smax為空間維度的全局最大池化特征;f7×7為卷積核大小為7×7的卷積層;σ表示激活函數(shù)。
輸入圖片采用隨機擦除對行人數(shù)據(jù)集進行預處理,通過殘差注意力網(wǎng)絡進行特征提取,再通過triplet loss對融合網(wǎng)絡進行監(jiān)督訓練,之后輸出行人重識別結(jié)果。算法流程圖如圖6所示。
圖6 算法流程圖Fig.6 Algorithm flow chart
設(shè)原始圖像為I,圖像大小W和H,圖像面積為S,擦除概率P,隨機初始化擦除區(qū)域為Se,Se/S取值范圍設(shè)置為(Sl,S h),擦除長寬比為Re,Re取值范圍設(shè)置為(r1,1/r1),Ie為隨機擦除矩形框,隨機初始化P1,(Xe,Ye)為圖像I中隨機選取的坐標點,V(x,y)=random(x,y),random()為隨機數(shù)生成函數(shù)。隨機擦除算法描述如下:
輸入原始行人圖像,隨機初始化擦除概率為P1,若隨機初始化的概率P1大于擦除概率P,則直接輸出原始圖像。否則,根據(jù)給定的擦除面積以及長寬比的取值范圍,隨機初始化擦除面積以及長寬比,計算擦除框的長和寬。隨機初始化坐標點P(Xe,Ye),若隨機擦除的長與坐標點Xe之和小于等于原始圖像的長度以及寬與坐標點Ye之和小于等于原始圖像的寬度,對隨機擦除矩形框隨機選擇(0,255)之間的像素賦值,最終輸出擦除后圖像。否則,重復上述步驟。
隨機擦除概率P=0.5可以達到最好的識別效果。隨機擦除算法流程圖如圖7所示。
圖7 隨機擦除算法流程圖Fig.7 Random erasing algorithm flow chart
使用改進的殘差網(wǎng)絡(Resnet50)為主干網(wǎng)絡,添加分支網(wǎng)絡,重寫全連接層。殘差注意力網(wǎng)絡如圖8所示。
圖8 殘差注意力網(wǎng)絡Fig.8 Residual attention network
殘差注意力網(wǎng)絡描述如下所示:
(1)主干網(wǎng)絡。對輸入的訓練數(shù)據(jù)集,經(jīng)過conv、con2_x、conv3_x、conv4_x輸出一個卷積特征。將卷積特征輸入到conv5_x中,并將conv5_x的下采樣步長改為1,將conv5_x輸出的卷積特征通過全局平均池化獲取全局平均特征。
(2)分支網(wǎng)絡。網(wǎng)絡將conv卷積層輸出的卷積特征輸入到conv2_x,分別在conv2_x、conv3_x、conv4_x之后創(chuàng)建CBAM特征注意力分支,對輸出的卷積特征經(jīng)過CBAM注意力機制模塊進行微調(diào),將調(diào)整過的特征與每個分支的輸入特征相加得到新的特征,通過全局最大池化得到每個分支最明顯的特征。融合通過最大池化后得到的所有分支特征,并將特征降維得到1 024維特征。
(3)融合全局平均特征與分支特征得到新的特征通過BN層進行批歸一化處理后輸出到fc全連接層進行行人重識別。
三元組損失(triplet loss)會計算batch中的每一張圖片在特征空間的距離,然后選出與樣本距離最遠(最不像)的正樣本和距離最近(最像)的負樣本來計算三元組損失。其中損失函數(shù)如下所示:
式中,P為類別數(shù)目;K為每個類別的圖像數(shù)目;φ(x kp)為P類中的第K張圖像的特征;D(·)為兩個特征向量之間的余弦距離;?為閾值。
三元組損失只考慮了正負樣本對之間的相對距離,四元組損失(Quadruplet_loss)引入正負樣本之間的絕對距離。其中損失函數(shù)如下所示:
式中,a、p為正樣本對,m、n為負樣本對;?為閾值,da,p為正樣本對之間的歐氏距離;d m,n為負樣本對之間的歐式距離。
實驗的系統(tǒng)環(huán)境為Linux Ubuntu16.04,編程環(huán)境為Python,采用Pytorch深度學習框架。數(shù)據(jù)集采用Market1501數(shù)據(jù)庫和DukeMTMC-reID數(shù)據(jù)庫。數(shù)據(jù)集屬性信息如表1所示。
表1 數(shù)據(jù)集屬性信息Table 1 Data set attribute information
3.2.1 參數(shù)設(shè)置
參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置Table 2 Parameter settings
3.2.2 評價指標
(1)Rank-k
在Rank-k評價指標中,將查詢圖像和候選圖像依次提取特征后計算距離,然后根據(jù)距離排序,判斷候選圖像的首位圖有沒有命中查詢圖像。Rank-1表示第一張圖片的命中率,Rank-5表示1~5張圖片至少有一張命中,Rank-k表示1~k張圖片里面至少有一張命中的概率。
(2)mAP
設(shè)TP為預測正確的正樣本數(shù),F(xiàn)P為預測錯誤的正樣本數(shù)。則準確率Precision的定義為:
平均準確率AP為某一類別返回列表所有圖像準確率之和除以含有該類別目標的圖像數(shù)。則平均準確率AP如下所示:
式中,n c為類別的圖像數(shù);M為返回列表的圖像數(shù);Precisioni為返回列表中第i個圖像屬于該類別的準確率。
AP衡量模型在單個類別上的結(jié)果,mAP衡量模型在所有類別上的結(jié)果。
由于識別中有不止一個類別,因此需要對所有類別計算平均值mAP:
式中,C為總類別數(shù);APk為第k類的平均準確率。
3.2.3 實驗方案
為了驗證文中行人重識別算法的有效性,本文在相同實驗環(huán)境和數(shù)據(jù)集下進行試驗。方案設(shè)計如下:
方案1對添加通道注意力機制模塊(channel)、添加通道與空間注意力機制模塊(CBAM)行人重識別網(wǎng)絡進行實驗對比,并對結(jié)果進行可視化。
方案2對分別添加三元組損失(triplet loss)、四元組損失(quadruplet loss)的殘差注意力網(wǎng)絡進行行人重識別實驗對比。
方案3對主干網(wǎng)絡(Resnet50+(stride=1))、添加CBAM注意力機制模塊、添加隨機擦除行人重識別網(wǎng)絡進行實驗對比。
方案4本文算法與PAN[14]、SVDNet[19]行人重識別算法進行比較,并采用Rank-k以及mAP指標進行衡量。
方案1實驗結(jié)果如表3所示。
表3 方案1實驗結(jié)果Table 3 Scheme 1 experimental results %
從表3可知,在Market-1501數(shù)據(jù)集上添加CBAM模塊網(wǎng)絡比添加channel模塊網(wǎng)絡在Rank-1上提升0.41個百分點,mAP提升了0.58個百分點。在DukeMTMCreID數(shù)據(jù)集上,添加CBAM模塊網(wǎng)絡比添加channel模塊網(wǎng)絡在Rank-1上提升了0.31個百分點,mAP提升了0.51個百分點。通過表3數(shù)據(jù)分析,驗證了添加CBAM模塊的優(yōu)越性。對表3添加不同注意力模塊可視化結(jié)果如圖9所示。
圖9 可視化結(jié)果圖Fig.9 Visualization result graph
從圖9可以看出,添加了CBAM注意力機制特征覆蓋到了行人更多部位。
方案2實驗結(jié)果如表4所示。
表4 方案2實驗結(jié)果Table 4 Scheme 2 experimental results %
從表4可知,在Market-1501數(shù)據(jù)集上,triplet loss比quadruplet loss在Rank-1提升了0.84個百分點,mAP提升了1.51個百分點。在DukeMTMC-reID數(shù)據(jù)集上,triplet loss比quadruplet loss在Rank-1提升了1.52個百分點,mAP提升了1.78個百分點。在網(wǎng)絡監(jiān)督訓練中使用triplet loss可以取得更好的訓練效果。
方案3實驗結(jié)果如表5所示。
表5 方案3實驗結(jié)果Table 5 Scheme 3 experimental results %
從表5可知,在Market-1501數(shù)據(jù)集上,殘差注意力網(wǎng)絡比主干網(wǎng)絡在Rank-1上提升了0.65個百分點,mAP提升了1.25個百分點。添加了隨機擦除的網(wǎng)絡比殘差注意力網(wǎng)絡在Rank-1上提升了2.44個百分點,mAP提升了3.06個百分點。在DukeMTMC-reID數(shù)據(jù)集上,殘差注意力網(wǎng)絡比主干網(wǎng)絡網(wǎng)絡在Rank-1上提升了0.98個百分點,mAP提升了1.39個百分點。添加了隨機擦除的網(wǎng)絡比殘差注意力網(wǎng)絡在Rank-1上提升了5.73個百分點,mAP提升了5.78個百分點。
添加CBAM注意力機制模塊通過對特征信息分配不同的權(quán)值,使網(wǎng)絡提取到更具判別力的行人特征信息,提升網(wǎng)絡的識別能力。添加隨機擦除通過遮擋住一部分的行人圖像迫使網(wǎng)絡在剩余的部分進行訓練,最終提升網(wǎng)絡的識別結(jié)果。
方案4實驗結(jié)果如表6所示。
表6 與其他方法的比較Table 6 Comparison with other methods %
從表6可知,在Market-1501數(shù)據(jù)集上,本文算法比PAN算法在Rank-1上提升了7.39個百分點,mAP提升了16.1個百分點。本文算法比SVDNet算法在Rank-1上提升了7.90個百分點,mAP提升了16.1個百分點。在DukeMTMC-reID數(shù)據(jù)集上,本文算法比PAN算法在Rank-1上提升了12.30個百分點,mAP提升了24.72個百分點。本文算法比SVDNet算法在Rank-1上提升了7.19個百分點,mAP提升了24.72個百分點。
綜上所述,通過對不同行人重識別算法和本文所提出的行人重識別算法實驗結(jié)果的比較,證實了本文算法的優(yōu)越性。PAN算法使用了空間注意力網(wǎng)絡來進行特征映射,但忽略了通道特征。SVDNet算法對特征向量進行分解增加網(wǎng)絡層,但忽略了提取的低階特征不夠精細。本文算法通過添加注意力機制模塊并融合隨機擦除的數(shù)據(jù)增強方法來提升網(wǎng)絡的識別能力。
本文提出了融合隨機擦除和殘差注意力網(wǎng)絡的行人重識別算法,相比于大部分行人重識別算法來說,使用隨機擦除法解決行人部分圖像被遮擋問題,提高了模型的泛化能力。在特征提取時,引入CBAM注意力機制模塊使模型提取到更具有判別力的行人特征。用triplet loss函數(shù)進行訓練,提升了網(wǎng)絡的識別能力和識別精度。由于人們實際生活環(huán)境的復雜性,在實際場景中應用該算法還是有較大的困難和較高的挑戰(zhàn)。