孫杰,吳紹鑫,王學(xué)軍,華璟*
(1.浙江工商大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,杭州 310018;2.深圳市星火電子工程公司,廣東 深圳 518001)
行人重識(shí)別算法通過標(biāo)注監(jiān)控視頻圖像的行人來獲取圖像,但是預(yù)處理工作繁瑣,不適用于現(xiàn)實(shí)場景;并且一個(gè)單獨(dú)的行人重識(shí)別算法也不能滿足實(shí)際應(yīng)用需求,可以通過行人搜索的思想解決該問題。行人搜索分為行人檢測與行人重識(shí)別兩個(gè)模塊。行人檢測任務(wù)從圖像集合或視頻集合中找到所有出現(xiàn)的行人,并分別對(duì)他們的位置進(jìn)行定位和標(biāo)注;行人重識(shí)別任務(wù)通過計(jì)算機(jī)視覺技術(shù)判斷目標(biāo)行人是否存在于某段視頻或圖片中,主要解決跨攝像頭跨場景下行人的識(shí)別與檢索問題[1]。給定現(xiàn)實(shí)場景中的原始監(jiān)控視頻或圖像,行人檢測技術(shù)完成每幀圖像的行人定位,生成候選行人圖像數(shù)據(jù)庫;再將目標(biāo)行人圖像和候選行人圖像輸入行人重識(shí)別模塊進(jìn)行特征提取與比對(duì),完成相似度度量,最終獲取目標(biāo)行人在原始監(jiān)控視頻中存在的信息。
基于深度學(xué)習(xí)的檢測算法能學(xué)習(xí)到更有效的行人特征表示和相似度度量,相較于傳統(tǒng)算法,此類算法過程簡便,魯棒性和準(zhǔn)確性較高。目前已經(jīng)有越來越多的目標(biāo)檢測技術(shù)用于行人檢測,Redmon等[2]提出的YOLOv3(You Only Look Once version 3)里程碑式地增加了多尺度檢測,提高了網(wǎng)絡(luò)對(duì)小物體的檢測準(zhǔn)確率。Wang等[3]提出了引入神經(jīng)網(wǎng)絡(luò)隱式知識(shí)學(xué)習(xí)的YOLOR(You Only Learn One Representation),該算法具備捕獲不同任務(wù)的物理意義的能力。Ge等[4]提出YOLOX,將解耦頭、數(shù)據(jù)增強(qiáng)、無錨點(diǎn)以及標(biāo)簽分類等目標(biāo)檢測領(lǐng)域的優(yōu)秀進(jìn)展與YOLO 進(jìn)行巧妙的集成組合。
近年來,從有監(jiān)督學(xué)習(xí)到半監(jiān)督學(xué)習(xí),以及面對(duì)復(fù)雜多變的場景,數(shù)據(jù)跨模態(tài)和端到端的行人重識(shí)別算法也開始成為研究關(guān)注的對(duì)象。Zeng等[5]提出分類聚層和難樣本挖掘三元組損失(Hard-batch Triplet Loss)相結(jié)合的偽標(biāo)簽聚類算法,通過層次聚類,充分利用目標(biāo)數(shù)據(jù)集中樣本間的相似性產(chǎn)生高質(zhì)量的偽標(biāo)簽,并提高了算法性能。He等[6]采用了Vison Transformer 作為骨干網(wǎng)絡(luò)提取特征,將圖像塊打亂后重組形成不同的局部表示,每個(gè)部分都包含多個(gè)隨機(jī)的圖像塊嵌入,并在網(wǎng)絡(luò)中嵌入了非視覺信息以學(xué)習(xí)更多不變的特征。Zhang等[7]提出多分辨率表征聯(lián)合學(xué)習(xí)(Multi-resolution Representations Joint Learning,MRJL)算法,充分利用高分辨率行人圖像中的細(xì)節(jié)信息和低分辨率圖像中的全局信息。
雖然當(dāng)前的算法都具有較好的檢測效果和重識(shí)別能力,但也需要更多的計(jì)算需求和耗時(shí),難以在確保準(zhǔn)確性和實(shí)時(shí)性的同時(shí)將算法部署在硬件資源有限且功率預(yù)算緊張的設(shè)備上。降低模型計(jì)算強(qiáng)度、參數(shù)大小和內(nèi)存消耗,并高效地部署于AI 芯片,是將行人搜索算法應(yīng)用于生產(chǎn)中的必備環(huán)節(jié),設(shè)計(jì)一個(gè)符合應(yīng)用需求的行人搜索系統(tǒng)值得深入研究。為解決上述問題,本文圍繞提高行人檢測速度和行人重識(shí)別精度兩個(gè)方面展開理論研究和實(shí)驗(yàn)證明,并基于Sophon SC5+人工智能芯片,對(duì)改進(jìn)后的算法進(jìn)行量化,將高性能行人搜索系統(tǒng)部署于實(shí)際場景中。本文主要工作如下。
1)在行人檢測算法上,使用GhostNet[8]優(yōu)化YOLOv5 的主干網(wǎng)絡(luò)結(jié)構(gòu),替換原有的部分CBS 和C3 模塊,大幅度減少了模型的參數(shù)量;同時(shí)在主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)中加入CBAM(Convolutional Block Attention Module)[9]增強(qiáng)網(wǎng)絡(luò)對(duì)行人重要信息的提取能力,在保證檢測精度的同時(shí)提升檢測速度。
2)在行人重識(shí)別算法上,使用一個(gè)負(fù)樣本對(duì)和兩個(gè)正樣本對(duì)緩解難樣本挖掘三元組損失[10]優(yōu)化模糊的問題,并加入中心損失約束,進(jìn)一步壓縮類內(nèi)特征;再使用附加間隔交叉熵?fù)p失[11]進(jìn)行組合,有效地使用融合損失優(yōu)化網(wǎng)絡(luò),以提高網(wǎng)絡(luò)的特征提取能力,加快網(wǎng)絡(luò)訓(xùn)練。
3)將改進(jìn)后的行人檢測和行人重識(shí)別算法在AI 芯片Sophon SC5+上進(jìn)行量化和部署實(shí)驗(yàn),實(shí)現(xiàn)行人搜索系統(tǒng)。
YOLOv5 中使用了較多的CBS 和C3 模塊提取輸入圖像的特征,它們的結(jié)構(gòu)如圖1 所示。其中,C3 模塊使用了多個(gè)殘差組件會(huì)導(dǎo)致特征冗余的問題產(chǎn)生。
圖1 YOLOv5中的CBS和C3模塊結(jié)構(gòu)Fig.1 CBS and C3 module structure in YOLOv5
為了減少模型的計(jì)算量和參數(shù)量,使網(wǎng)絡(luò)更輕量化,使用Ghost 模塊替換YOLOv5 主干網(wǎng)絡(luò)中的部分CBS 和C3 模塊。目前大部分卷積操作都使用1×1 的逐點(diǎn)卷積方式降低維度,再通過深度卷積提取特征,而Ghost 模塊采用線性變換的方式生成特征圖,可以更有效地減少網(wǎng)絡(luò)的計(jì)算量,傳統(tǒng)卷積與Ghost 模塊的結(jié)構(gòu)示意如圖2 所示。
圖2 傳統(tǒng)卷積生成特征圖和Ghost模塊生成特征圖Fig.2 Traditional convolution to generate feature maps and Ghost module to generate feature maps
普通卷積層生成n個(gè)特征圖,可以表示為如下形式:
其中:卷積輸入X∈Rc×h×w,c、h、w分別為輸入特征圖的通道、高度與寬度;f∈Rc×k×k×n代表n個(gè)大小為k×k×c的卷積核;b是偏置項(xiàng)。輸出特征圖Y∈Rn×k′×w′,n為輸出特征圖的通道數(shù)。整個(gè)卷積過程運(yùn)算所需要的浮點(diǎn)運(yùn)算量為n×h′×w′×c×k×k。在YOLOv5s 中,n和c通常為512 或1 024,導(dǎo)致計(jì)算量非常大。
Ghost 模塊的計(jì)算如式(2)所示:
其中:卷積輸入Y′∈Rm×h′×w′;m是經(jīng)過普通卷積后得到的特征圖個(gè)數(shù),由于m≤n,所以省略了偏置項(xiàng);Yi′是Y′的第i個(gè)特征圖;φij是第i個(gè)特征圖生成第j個(gè)Ghost 特征映射的線性操作。此處普通卷積的浮點(diǎn)運(yùn)算量為m×h′×w′×c×k×k。為保證空間尺度相同,通過式(2)生成n-m個(gè)特征圖。假設(shè)每個(gè)線性運(yùn)算核為d×d,可以用理論加速比衡量Ghost的提升程度,如式(3)所示:
其中:d×d與k×k的大小相同,且s?c。最終Ghost 模塊的計(jì)算量是普通卷積的,且參數(shù)計(jì)算量也相似,可以從理論上證明Ghost 模塊的優(yōu)越性。因此將YOLOv5 的主干網(wǎng)絡(luò)中的C3 和CBS 模塊替換為步長分別為1、2 的GhostBottleneck。
CBAM 是高效的注意力機(jī)制,可無縫嵌入各種CNN,經(jīng)過CBAM 之后生成的特征圖,可以提高特征在通道和空間上的聯(lián)系,有利于提取目標(biāo)的有效特征。CBAM 主要由通道注意力模塊(Channel Attention Module,CAM)與空間注意力模塊(Spartial Attention Module,SAM)組成,在這兩個(gè)維度上對(duì)特征進(jìn)行調(diào)整,以加強(qiáng)網(wǎng)絡(luò)的特征提取能力。如圖3 所示。
圖3 CBAM結(jié)構(gòu)Fig.3 Stucture of CBAM
輸入的特征圖首先經(jīng)過CAM,如圖3(a)所示,基于特征圖的寬高分別進(jìn)行最大池化(MaxPool)和平均池化(AvgPool);兩個(gè)池化操作共享一個(gè)多層感知機(jī)(MultiLayer Perceptron,MLP),經(jīng)過MLP 后分別輸出兩個(gè)特征向量進(jìn)行相加;最后經(jīng)過Sigmoid 激活函數(shù)δ得到通道權(quán)重,將權(quán)重與輸入特征圖相乘得到新的加權(quán)特征圖,完成通道注意力對(duì)原始特征的重新標(biāo)定。計(jì)算如式(4)所示:
其中:W0和W1是MLP 中的兩層全連接層的權(quán)重參數(shù)。
通過SAM 對(duì)輸入的特征圖每個(gè)位置的所有通道進(jìn)行最大池化和平均池化,得到兩個(gè)h×w×1 的特征圖并按照通道拼接。再使用7×7 的卷積核和Sigmoid 激活函數(shù)生成空間權(quán)重,然后與通道特征圖相乘,得到經(jīng)過CBAM 后的最終特征,從通道和空間兩個(gè)維度上完成對(duì)特征圖的重標(biāo)定:
因此基于上述思想,結(jié)合了Ghost 模塊的YOLOv5 雖然降低了模型的參數(shù)和計(jì)算量,但也會(huì)導(dǎo)致檢測精度降低。通過添加CBAM 可以在少量增加模型計(jì)算量和參數(shù)的基礎(chǔ)上,提高檢測效果,緩解精度下降問題。
本文在YOLOv5 中使用步長為2 的GhostBottleneck 替換原始主干網(wǎng)絡(luò)中的4 個(gè)C3 模塊,使用步長(Stride)為1 的GhostBottleneck 替換主干網(wǎng)絡(luò)中的部分CBS 模塊,并在主干網(wǎng)絡(luò)的末端和頸部網(wǎng)絡(luò)的3 個(gè)尺度特征模塊后面嵌入CBAM,總計(jì)5 個(gè)注意力機(jī)制模塊,并保留YOLOv5 中的其他結(jié)構(gòu),最終得到輕量級(jí)YOLOv5-GC 行人檢測模型如圖4 所示。新的網(wǎng)絡(luò)結(jié)構(gòu)通過替換原來Bottleneck 中較多的3×3 標(biāo)準(zhǔn)卷積,降低了網(wǎng)絡(luò)的計(jì)算量,并提高了模型檢測速度;再通過添加CBAM 提高對(duì)行人檢測任務(wù)的準(zhǔn)確率。
圖4 YOLOv5-GC網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 YOLOv5-GC network structure
三元組損失[12]函數(shù)是行人重識(shí)別中常用的損失函數(shù)之一,其中的三元組由目標(biāo)、正樣本、負(fù)樣本圖片組成。損失函數(shù)的目的是網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)后使正樣本和目標(biāo)圖片的特征表達(dá)距離更近,負(fù)樣本和目標(biāo)圖片的特征表達(dá)距離更遠(yuǎn)。
難樣本挖掘三元組損失[13]是三元組損失的改進(jìn)版本,傳統(tǒng)的三元組損失是從訓(xùn)練數(shù)據(jù)中隨機(jī)抽取三張圖片,雖然該方法比較簡單,但抽取的圖片大部分都是容易區(qū)分的樣本對(duì),不利于網(wǎng)絡(luò)學(xué)習(xí)到更好的表征,因此最相似的負(fù)樣本和最不相似的正樣本是所需要的難樣本。對(duì)于每個(gè)輸入圖像,選取與它距離最遠(yuǎn)的正樣本和距離最接近的負(fù)樣本構(gòu)成三元組,并計(jì)算三元組距離,如式(6)所示:
其中:一個(gè)批次中的圖片數(shù)量N=M×K,M是從每個(gè)批量訓(xùn)練組中挑選出的查詢行人數(shù),每個(gè)行人對(duì)應(yīng)有K張圖片;分別代表目標(biāo)圖片、正樣本、負(fù)樣本的特征向量;α是正負(fù)樣本之間的閾值,控制不同行人ID 圖像之間的特征向量接近程度。
難樣本三元組損失在優(yōu)化時(shí)可能會(huì)存在優(yōu)化目標(biāo)模糊的情況,如圖5 所示。圖5(a)是樣本在特征空間中的一種表示情況,Hard Negative 是距離最近的負(fù)樣本,Hard Positive 是距離最遠(yuǎn)的正樣本,Nearest Positive 是距離最近的正樣本。經(jīng)過難樣本三元組損失后,可能會(huì)出現(xiàn)圖5(b)所示的結(jié)果,屬于同一個(gè)行人的anchor 和最近正樣本之間的距離大于同一行人的Anchor 和最近負(fù)樣本之間的距離。
圖5 圖片在特征空間上的距離Fig.5 Distance of image in feature space
因此為了較好地緩解優(yōu)化目標(biāo)模糊的問題,在原有難樣本挖掘三元組損失的基礎(chǔ)上,使用一個(gè)負(fù)樣本對(duì)和兩個(gè)正樣本對(duì)進(jìn)行改進(jìn),使圖片在特征空間上,anchor 最近正樣本和最遠(yuǎn)正樣本的距離都小于最近負(fù)樣本的距離。此外,考慮到會(huì)有少量樣本特征沒有歸屬到本類中心,和其他類別特征重疊,這樣對(duì)行人重識(shí)別任務(wù)十分不利。因此在上述改進(jìn)的基礎(chǔ)上,增加中心損失[13]約束項(xiàng),驅(qū)使相同類別向各自類內(nèi)中心聚集,使特征分布更加緊湊,以提高類內(nèi)相似度。改進(jìn)后的中心約束三元組損失計(jì)算如式(7)所示:
其中:α和β控制樣本對(duì)之間的相對(duì)距離;Cyi是第i個(gè)樣本所屬類別的中心特征;γ是平衡改進(jìn)難樣本挖掘損失和中心損失的權(quán)重。
網(wǎng)絡(luò)模型在同時(shí)訓(xùn)練分類模型和驗(yàn)證模型時(shí),可以采用不同的損失函數(shù)。不同的損失函數(shù)雖然針對(duì)不同任務(wù),但最終對(duì)樣本特征分布的約束相似,因此起到互補(bǔ)的作用。有效利用這種互補(bǔ)性可以對(duì)網(wǎng)絡(luò)產(chǎn)生較強(qiáng)約束,幫助網(wǎng)絡(luò)學(xué)習(xí)到魯棒性更強(qiáng)的行人特征,從而改善網(wǎng)絡(luò)的性能。
因此本文嘗試將附加間隔交叉熵?fù)p失[11]和改進(jìn)后的中心約束三元組損失共同組合對(duì)模型進(jìn)行監(jiān)督優(yōu)化。附加間隔交叉熵?fù)p失中引入了角間距,對(duì)類間距離的優(yōu)化效果明顯,但由于類內(nèi)約束不足,同類行人的特征分布仍比較分散。而中心約束三元組損失對(duì)有較強(qiáng)的類內(nèi)約束能力,聚集相同類別的樣本,但由于每次僅可以利用一個(gè)batch 中的信息,神經(jīng)網(wǎng)絡(luò)會(huì)隨著訓(xùn)練、迭代,遺忘掉之前的信息,存在收斂困難的情況。融合附加間隔交叉熵?fù)p失后不僅可以加快收斂,在訓(xùn)練時(shí)會(huì)同時(shí)考慮難樣本對(duì)和簡單樣本對(duì),完全利用訓(xùn)練集中所有行人圖片的標(biāo)注信息。綜上所述,融合損失函數(shù)可以讓兩種損失之間優(yōu)勢互補(bǔ),提高網(wǎng)絡(luò)的特征提取能力,加快網(wǎng)絡(luò)訓(xùn)練。融合損失函數(shù)如式(8)所示:
其中:cos(θyi)是計(jì)算樣本在類別yi中的區(qū)域;cos(θyi)-m表示要求不同類的行人區(qū)域之間至少有m的間隔。s(c os(θyi)-m)將cos(θyi)增大s-1 倍,由于cos (θyi)的取值范圍為[0,1],數(shù)值較小,無法有效區(qū)分不同類的差異,增大s倍之后,再通過Softmax 可以提高分布差異性,產(chǎn)生明顯的馬太效應(yīng),使收斂速度提升。
圖6 給出了本文行人重識(shí)別算法ReID(Person Re-IDentification)的網(wǎng)絡(luò)結(jié)構(gòu),將ResNet50 作為ReID 網(wǎng)絡(luò)中的基礎(chǔ)提取網(wǎng)絡(luò),引入BNNeck(Batch Normalization Neck)[14]網(wǎng)絡(luò)結(jié)構(gòu)的思想,經(jīng)過批標(biāo)準(zhǔn)化(Batch Normalization,BN)層得到歸一化后的特征,在各個(gè)維度上獲得平衡,近似于在超球面附近分布,使分類損失更易收斂,從而緩解融合損失優(yōu)化目標(biāo)特征所在的空間差異導(dǎo)致?lián)p失優(yōu)化方向不同的問題。并在ResNet50 中引入Non-local[15]注意力機(jī)制,通過加權(quán)得到非局部的響應(yīng)值,構(gòu)造了和特征圖尺寸一樣大小的卷積核,進(jìn)而保留更多的行人特征。
圖6 ReID網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Structure of ReID network
本文的行人檢測與行人重識(shí)別算法基于Pytorch 深度學(xué)習(xí)框架實(shí)現(xiàn),為了將模型移植到SC5+上,需要把基于開源框架的模型轉(zhuǎn)換為BITMAIN TPU 平臺(tái)特有的bmodel 格式。bmodel 是面向比特大陸張量處理器((Tensor Processing Unit,TPU)的深度神經(jīng)網(wǎng)絡(luò)模型文件格式,包括目標(biāo)網(wǎng)絡(luò)的權(quán)重、TPU 指令流、輸入輸出等信息。因此首先需要將本文算法在圖形處理器(Graphics Processing Unit,GPU)的環(huán)境中訓(xùn)練后,得到文件后綴為.pt 的模型,完成模型轉(zhuǎn)換后,以fp32 模型和int8 模型兩種格式部署到SC5+中。
現(xiàn)有的行人檢測和行人重識(shí)別算法,在訓(xùn)練時(shí)往往都會(huì)使用fp32 的數(shù)據(jù)精度表示權(quán)值、偏置、激活值。如果使用深層次的網(wǎng)絡(luò),參數(shù)和計(jì)算量就會(huì)大幅度增加,用于實(shí)際的視頻監(jiān)控系統(tǒng)會(huì)面臨性能較差的問題。因此采用模型量化的方法,在保證一定精度的情況下,對(duì)模型的大小進(jìn)行壓縮,以減少內(nèi)存占用,加速前向推理。本文通過比特大陸自主開發(fā)的網(wǎng)絡(luò)模型量化工具Quantization-Tools 對(duì)fp32 模型進(jìn)行量化。在Sophon SC5+運(yùn)算平臺(tái)上,網(wǎng)絡(luò)各層輸入、輸出、系數(shù)都用8 bit 表示,在保證網(wǎng)絡(luò)精度的基礎(chǔ)上,大幅減少功耗、內(nèi)存、傳輸延遲,提高運(yùn)算速度。模型的量化步驟如圖7 所示。
圖7 中的int8_umodel 是通過量化生成的int8 格式的網(wǎng)絡(luò)系數(shù)文件,是作為臨時(shí)中間存在的文件形式。需要將該文件進(jìn)一步轉(zhuǎn)換成可以在SC5+中執(zhí)行的int8_bmodel 文件。經(jīng)過int8 量化后的算法與原本在GPU 下的算法精度存在一定誤差。因此還需要對(duì)網(wǎng)絡(luò)的精度進(jìn)行預(yù)檢測,比特大陸平臺(tái)提供了可視化分析工具calibration 來初步查看網(wǎng)絡(luò)的誤差,該工具使用平均絕對(duì)百分比誤差(Mean Absolute Percentage Error,MAPE)、余弦相似度(COsine Similarity,COS)和歐氏距離(DIST)作為誤差評(píng)價(jià)的標(biāo)準(zhǔn),具體如式(9)~(11)所示:
圖7 模型量化為int8_bmodelFig.7 Quantizing model as int8_bmodel
其中:At代表實(shí)際值;Ft代表預(yù)測值;xi、yi分別表示特征向量。本文以YOLOv5-GC 算法為例,通過calibration 可視化分析工具生成如圖8 所示的量化誤差分析圖。
參考COS 曲線,在圖8(a)中,在模型最后輸出階段,曲線下滑得較為明顯,說明經(jīng)過直接量化的int8 模型誤差較大。而圖8(b)中的混合量化執(zhí)行在部分層使用定點(diǎn)計(jì)算,部分層使用浮點(diǎn)計(jì)算,有效提高了網(wǎng)絡(luò)的整體量化精度,因此COS 曲線較為平穩(wěn),近似于1,是本文所需要的量化模型。兩個(gè)量化后的int8 模型誤差較大,因?yàn)榛赑ytroch 框架的網(wǎng)絡(luò)轉(zhuǎn)換之后的模型可能包含前處理和后處理相關(guān)的算子,對(duì)這些算子進(jìn)行量化在很大程度上會(huì)影響網(wǎng)絡(luò)的量化精度,Sophon SC5+內(nèi)部集成了浮點(diǎn)計(jì)算單元,因此可以高效地利用浮點(diǎn)計(jì)算,根據(jù)這個(gè)特點(diǎn),在轉(zhuǎn)換int8_umodel 文件的命令行中,提供了標(biāo)記前處理、后處理相關(guān)的層,并允許這些層以浮點(diǎn)形式計(jì)算,有效提高網(wǎng)絡(luò)的整體量化精度,使轉(zhuǎn)換后的模型精度與原有算法不會(huì)產(chǎn)生較大誤差。
圖8 量化誤差分析圖Fig.8 Quantitative error analysis diagram
為驗(yàn)證本文行人重識(shí)別和行人檢測算法的有效性,采用COCO[16]、Market-1501[17]、DukeMTMC-ReID[18]數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。COCO 數(shù)據(jù)集進(jìn)行了預(yù)處理,只提取行人圖片,訓(xùn)練集包含行人圖片64 115 張,行人數(shù)量為257 252;測試集包含圖片數(shù)量2 693 張,行人數(shù)量11 004。Market-1501 數(shù)據(jù)集共收集了1 501 個(gè)行人的32 688 張身份標(biāo)注的行人圖片。DukeMTMC-ReID 包含來自不同視角的行人1 812 個(gè)。實(shí)驗(yàn)運(yùn)行環(huán)境為Ubuntu18.04 和Pytorch1.8,硬件平臺(tái)使用的GPU 為2080Ti,AI 芯片為Sophon SC5+,內(nèi)存為64 GB。
行人檢測部分設(shè)置圖片的輸入分辨率為640×640,Batchsize 為64,共訓(xùn)練300 個(gè)epoch。行人重識(shí)別部分設(shè)置圖片的輸入分辨率為256×128,Batchsize 為64,共訓(xùn)練120 個(gè)epoch。
為了保證對(duì)比實(shí)驗(yàn)的客觀性,采用平均精度均值(mean Average Precision,mAP)、幀率、Rank-k指標(biāo)進(jìn)行評(píng)價(jià)。mAP 用于評(píng)價(jià)檢測模型的平均準(zhǔn)確率均值:
其中:M為圖像總數(shù);P為精度;IAP表示平均檢測精度(Average Precision,AP),mAP 是所有類別的平均精度。由于本文行人檢測中只有行人這一類目標(biāo),所以AP 值與mAP 值相等。一般來說行人檢測模型的性能越好,mAP 值越大,模型精度越高。
Rank-k表示在算法測試階段,對(duì)于查詢目標(biāo)行人query,在候選集(gallery)中對(duì)圖片提取特征后根據(jù)相似度高低進(jìn)行排序,若最靠前的k張圖片中包含query 行人,則正確匹配的概率。k一般取值為1、5 或者10。以Rank-1 為例,表示在提取的query 特征和gallery 特征計(jì)算特征距離后,正確的目標(biāo)行人排在首位的準(zhǔn)確率,如式(13)所示:
其中:n是待查詢行人圖像的總數(shù);i是第i個(gè)查詢對(duì)象,Si表示若第i個(gè)查詢行人對(duì)應(yīng)的首位排序是同一個(gè)行人的話,則識(shí)別成功Si=1;否則Si=0。
4.3.1 消融實(shí)驗(yàn)
為了驗(yàn)證本文行人檢測算法(YOLOv5-GC)的有效性,對(duì)不同模塊在YOLOv5s 上的作用進(jìn)行對(duì)比實(shí)驗(yàn)。為了驗(yàn)證改進(jìn)效果對(duì)不同深度的YOLOv5 的影響,加入了原始YOlOv5l和YOLOv5l-Ghost 進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果如表1 所示。可以看出,將YOLOv5s 的網(wǎng)絡(luò)主干替換為Ghost 模塊時(shí),使原先復(fù)雜的卷積操作更輕量化,YOLOv5s 的模型大小降低了3.9 MB,但由于包含重要信息的網(wǎng)絡(luò)參數(shù)減少,也會(huì)使平均精度會(huì)下降。YOLOv5s 在添加CBAM 后,盡管模型參數(shù)量會(huì)增大,但檢測速度變化較小,并且精度也有所提升,達(dá)到了82.9%。而同時(shí)添加兩個(gè)模塊的YOLOv5s-GC 網(wǎng)絡(luò),相較于初始的YOLOv5s,模型大小減少了3.7 MB,在GPU 上的推理時(shí)間也從5.3 ms 降低到了4.9 ms,并且相較于YOLOv5s-Ghost,mAP 也提升了1.1 個(gè)百分點(diǎn)。此外,YOLOv5l 在加入Ghost 模塊后,模型大小相較于原始YOLOv5l 降低了47%。對(duì)加入CBAM 注意力機(jī)制的行人檢測模型進(jìn)行可視化分析,如圖9 所示。
圖9 檢測結(jié)果示意圖Fig.9 Schematic diagram of detection results
表1 各模塊對(duì)行人檢測算法的影響Tab.1 Influence of each module on person detection algorithm
可以看到Y(jié)OLOv5s-ghost 在添加注意力模塊之后,對(duì)圖片中行人被干擾背景遮擋導(dǎo)致的漏檢問題,有一定的改善。本文結(jié)合Ghost 模塊和CBAM 模塊構(gòu)造的YOLOv5s-GC,在大幅度減少計(jì)算量、參數(shù)量和模型大小的情況下也保持了較高的mAP,并且隨著網(wǎng)絡(luò)的深度增加,輕量化效果也更明顯。
4.3.2 與YOLO其他算法的對(duì)比實(shí)驗(yàn)
將YOLOv5s-GC 與其他主流檢測算法進(jìn)行比較,以進(jìn)一步驗(yàn)證算法的可行性,結(jié)果如表2 所示。
表2 YOLOv5s-GC與其他YOLO算法對(duì)比實(shí)驗(yàn)結(jié)果Tab.2 Comparison of experimental results between YOLOv5s-GC and other YOLO algorithms
可以看出,在主流的行人檢測算法中,雖然YOLOv4-tiny的幀率最高,但它的mAP 精度較低。本文的YOLOv5s-GC 的mAP 比YOLOv4-tiny 高出35.7 個(gè)百分點(diǎn),并且模型大小減小了54.7%。YOLOv5s-GC 的mAP 相較于其他YOLO 算法最多提高了43.8 個(gè)百分點(diǎn)。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)的行人檢測算法可以應(yīng)用到行人搜索任務(wù)的現(xiàn)實(shí)場景中,并且比原有的YOLOv5 更輕量化。
4.4.1 消融實(shí)驗(yàn)
表3 列出了在Market-1501 和DukeMTMC-reID 數(shù)據(jù)集上使用行人重識(shí)別算法(ReID)的消融實(shí)驗(yàn)結(jié)果,Baseline 為BagTricks[14]??梢钥闯?,將Baseline 中的Softmax 替換為附加間隔交叉熵?fù)p失(LAMS),LAMS進(jìn)一步增大類間距離,縮小類內(nèi)距 離,在Market-1501 上Baseline+LAMS的mAP 和Rank-1分別提 高0.4 和0.1 個(gè)百分 點(diǎn)。在Market-1501 上,Baseline+L的mAP 和Rank-1 分別提高了0.6 和0.2 個(gè)百分點(diǎn),說明聯(lián)合兩個(gè)損失函數(shù)訓(xùn)練有效。此外本文在Baseline 上加入Non-local注意力機(jī)制,可以看出在Market-1501 數(shù)據(jù)集上,mAP 和Rank-1 分別提升了1.1 和0.4 個(gè)百分點(diǎn),說明Non-local 進(jìn)一步提升了主干網(wǎng)絡(luò)提取行人特征的能力。將所有方法整合后,在Market-1501 數(shù)據(jù)集上,ReID 的mAP 和Rank-1 相較于Baseline 分別提高了1.5 和0.6 個(gè)百分點(diǎn),另外在DukeMTMC-ReID 數(shù)據(jù)集上,ReID 仍然有較好的效果。
表3 消融實(shí)驗(yàn)結(jié)果 單位:%Tab.3 Results of ablation experiment unit:%
4.4.2 與其他算法的對(duì)比實(shí)驗(yàn)
表4 列出了ReID 和近幾年主流的行人重識(shí)別算法在Market-1501 和DukeMTMC-ReID 數(shù)據(jù)集下的對(duì)比實(shí)驗(yàn)結(jié)果。對(duì)比算法包括:ACRN(Attribute-Complementary Re-ID Net)[22]、SVDNe(tSingular Vector Decomposition Net)[23]、MMT-500(Mutual Mean-Teaching)[24]、GPR(Generalizing Person Re-identification)[25]、ConsAtt[26]、PCB-RPP(Part-based Convolutional Baseline with Refined Part Pooling)[27]、PPS(Part Power Set)[28]與BagTricks。
表4 不同行人重識(shí)別算法的對(duì)比實(shí)驗(yàn)結(jié)果 單位:%Tab.4 Comparison of experimental results of different person re-identification algorithms unit:%
與MMT-500 和GPR 這類無監(jiān)督的行人重識(shí)別算法相比,基于監(jiān)督學(xué)習(xí)的算法效果上會(huì)更好。在Market-1501 數(shù)據(jù)集上,雖然ReID 的Rank-1 相較于ConsAtt 算法降低了1 個(gè)百分點(diǎn),但ReID 的mAP 提高了2.7 個(gè)百分點(diǎn),說明ReID 對(duì)mAP 的影響更大。SVDNet 算法對(duì)全連接層進(jìn)行奇異值分解,提高了檢索性能,但需要人工操作的地方較多。PCBRPP 算法結(jié)合了分塊特征,而ReID 在僅提取全局特征的情況下,在Market-1501 數(shù)據(jù)集上的mAP 與Rank-1 提高了5.8和1.3 個(gè)百分點(diǎn)。綜上所述,在本文提出的融合損失函數(shù)的約束下,ReID 可以較好地壓縮類內(nèi)特征,在兩個(gè)數(shù)據(jù)集上都表現(xiàn)出較好的性能,mAP 最多提高了25.7 個(gè)百分點(diǎn)。
4.4.3 超參數(shù)設(shè)置
本文提出的中心約束三元組損失有3 個(gè)超參數(shù),分別是α、β與γ。文獻(xiàn)[14-29]已經(jīng)充分討論了平衡權(quán)重,因此設(shè)置γ=5× 10-4。本文選取不同的α和β在兩個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),結(jié)果如表5 所示。從表5 中可以看出α和β的值對(duì)實(shí)驗(yàn)結(jié)果存在一定影響,設(shè)置α=0.3,β=0.7,對(duì)本文算法會(huì)有較好的效果。
表5 不同參數(shù)的性能對(duì)比 單位:%Tab.5 Performance comparison of different parameters unit:%
在將模型量化后,還需要將量化后的模型加載到TPU 上執(zhí)行。由于行人搜索算法涉及到兩個(gè)不同模型的推理,預(yù)處理到后處理之間的步驟需要反復(fù)多次執(zhí)行。在實(shí)際的應(yīng)用開發(fā)中,只針對(duì)神經(jīng)網(wǎng)絡(luò)的運(yùn)算進(jìn)行加速,無法滿足真實(shí)安防場景下的需求。因此比特平臺(tái)提供了若干硬件加速模塊以及相應(yīng)的軟件接口庫,分別針對(duì)以上步驟進(jìn)行加速,提高算法運(yùn)行效率。不同算法量化后的模型結(jié)果比較如表6 所示,實(shí)驗(yàn)中設(shè)置推理的批處理大小為1,Sophon SC5+只使用一個(gè)BM1684 芯片,推理時(shí)間為平均推理時(shí)間。
由表6 中的數(shù)據(jù)可知,將NVIDIA 2080Ti 顯卡下訓(xùn)練出的模型轉(zhuǎn)換到fp32_bmodel,能有效地保證算法的精度不變。雖然轉(zhuǎn)換成fp32 之后,部分模型的大小會(huì)有少量增加,但模型在Sophon SC5+下的推理時(shí)間更短。YOLOv5s-GC 在轉(zhuǎn)換bmodel 中,需要將YOLOv5 算法export 成torchscript,才 能進(jìn)行量化部署,所以相較于GPU 下訓(xùn)練的模型,初始的模型更大。YOLOv5s-GC 的fp32 模型的平均推理時(shí)間相較于在2080Ti 下訓(xùn)練的模型,縮短了0.8 ms;基于融合損失的ReID模型的平均推理時(shí)間比在2080Ti 下訓(xùn)練的模型少1.3 ms。
表6 不同算法量化后的結(jié)果比較Tab.6 Comparison of results after quantization by different algorithms
將模型進(jìn)一步量化為int8_bmodel 后,只使用int8 量化的模型,如MMT 算法,相較于原始模型,模型大小減小了74.3%。此外,為了保證精度的誤差范圍,對(duì)于一些較為復(fù)雜的網(wǎng)絡(luò),需要采用混合執(zhí)行的方式進(jìn)行量化,如Fast-ReID算法,混合量化后Fast-ReID 的模型大小縮小了44.5%左右。且各個(gè)算法轉(zhuǎn)換成int8_bmodel 之后的平均推理時(shí)間,也比在GPU 和fp32 下的平均推理時(shí)間更短,模型也更輕量化。
本文的融合損失的ReID 模型在int8 下的推理時(shí)間相較于2080Ti 訓(xùn)練的模型少4.5 ms。雖然相較于fp32 下的模型,mAP 下降了1.7 個(gè)百分點(diǎn),但是模型容量減小了74.4%。且一張SC5+卡包含3 個(gè)BM1684 芯片,為算法現(xiàn)場場景應(yīng)用提供了高計(jì)算、低成本的方案,由此可以證明AI 芯片Sophon SC5+對(duì)算法的現(xiàn)實(shí)應(yīng)用有很高的價(jià)值。最后,本文將上述的改進(jìn)方法,在Sophon SC5+上進(jìn)行部署,完成行人搜索系統(tǒng)的實(shí)現(xiàn),可視化的結(jié)果如圖10 所示。圖10(a)表示從監(jiān)控?cái)z像機(jī)中以目標(biāo)對(duì)象的單張截圖為查詢條件,查找區(qū)域內(nèi)所有視頻中目標(biāo)對(duì)象;圖10(b)表示針對(duì)搜索的目標(biāo)結(jié)果,點(diǎn)擊任一結(jié)果圖片,播放對(duì)應(yīng)時(shí)間的監(jiān)控視頻。
圖10 行人搜索結(jié)果示意圖Fig.10 Schematic diagram of person search results
本文首先分析了在智能視頻監(jiān)控下行人搜索算法存在的問題,并基于這些問題提出了使用Ghost 模塊和CBAM,使算法模型的精度保持在一定范圍內(nèi),而模型計(jì)算量大幅下降,速度更快。針對(duì)行人重識(shí)別中難樣本挖掘三元組損失存在的目標(biāo)模糊和聚類不足的問題,引入中心損失函數(shù),并融合附加間隔交叉熵?fù)p失,使行人重識(shí)別算法在訓(xùn)練時(shí),能較好地壓縮類內(nèi)特征。將改進(jìn)模型部署在Sophon SC5+人工智能芯片上,驗(yàn)證量化后的模型的速度和大小都有較大優(yōu)勢。從算法到硬件,自上而下地優(yōu)化深度學(xué)習(xí)的效率,符合行人搜索系統(tǒng)低成本高性能的需求。在下一步的研究中,可以從處理行人服裝更換和室內(nèi)外場景變化下的行人重識(shí)別入手,通過姿態(tài)估計(jì)或骨架關(guān)鍵點(diǎn)檢測輔助提取行人可見信息,提高匹配的準(zhǔn)確率;還可以建立基于端到端聯(lián)合建模優(yōu)化的行人搜索模型,并部署到Sophon 芯片上,以減輕兩階段模型對(duì)邊界框生成這一額外步驟的依賴。