汪 磊,陶青川
(四川大學電子信息學院,成都 610065)
在機場加油車等一系列場景下,工作人員需要做出一系列行為來表示某個操作已經完成,如彎腰、伸手等動作,而這些動作還需要機場方面對其進行監督,采用最多的監督方式仍然是人工進行視頻監督,非常耗費人力,且如果機場方面的監督人員工作不到位,很容易影響監督的實時性,甚至會造成一系列的安全隱患。基于深度學習的行為識別算法則可以對監控視頻進行智能分析和處理,在進行行為分析前,對加油員進行人體識別[1?2]的實時性和高效性提出了更高的要求。但現有的人體識別算法存在模型較大,且檢測速度慢的問題,部署到GPU成本也較大,因此需要對其算法進行輕量化,以適合在嵌入式部署。
近年來,隨著深度學習的發展,計算機視覺技術在目標檢測中得到了廣泛的應用。基于計算機視覺的目標檢測算法一般分為兩類:第一種是兩階段目標檢測算法,第二種是本文用的一階段目標檢測算法。主流的兩階段目標檢測算法包括RCNN[3]、R?FCN[4]和Faster RCNN[5]等,其工作過程是首先檢測出目標的所在區域,再對區域中的目標進行CNN[6]分類處理。一階段目標檢測算法可以直接獲得目標的位置和類別概率,其中包括YOLO[7?11]和SSD[12]。兩者區別體現在兩階段檢測算法具有較高的定位和目標識別精度,但推理速度相對較慢。而一階段檢測算法由于其網絡的相對簡潔性,其推理速度會更快,但也失去了推理的精度優勢。但通過對網絡主干網進行修改,增加注意力等機制,可以使得模型在合理的精度損失范圍內,推理速度提升明顯,更適合在嵌入式上部署。
YOLOv5 是目前主流的單階段目標檢測網絡,共有4 種型號,包括YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x。隨著模型深度和模型寬度的增加,參數的數量也隨之增加。
YOLOv5 的結構如圖1 所示,分為以下四部分:輸入、backbone、neck以及預測模塊。YOLOv5在輸入端使用Mosaic 數據增強,并具有內置的自適應錨定和自適應縮放。數據增強是通過隨機裁剪任意四張圖像,并將其拼接到單張圖像上作為訓練數據,減少圖像中檢測目標的像素點大小,使網絡在小目標檢測方面表現更好。一旦數據集進入網絡,YOLOv5將數據集中的圖像縮放到640 × 640 的大小,然后使用K?means聚類算法計算與該數據集中標注的框匹配的錨框,并將其與預設的錨框進行比較,以此來更新網絡參數。在backbone 中,包含了Focus、SPP、CBL和C3等結構。Focus結構主要是對輸入圖像進行下采樣操作,使得圖片的長和寬減半,通道數變為4 倍,以此來減少網絡的計算量。SPP的主要作用是對高層特征進行提取并融合,在融合的過程中多次運用最大池化,盡可能多的去提取高層次的語義特征。CBL 包含三步,卷積操作,其次是BN,接著送入激活函數。C3模塊包含了多個殘差網絡結構,主要解決了卷積網絡結構中重復梯度的問題,另外也加強了特征融合的能力。neck 網絡模型部分使用了FPN和PAN 的組合。淺層特征圖的位置信息較多,語義信息較少,隨著神經網絡層數的增加,較深層特征圖的語義信息較多,一些小像素點會被忽略,一些位置信息會丟失;然而,這兩種類型的信息對于目標檢測都很重要,因此在保留原始位置信息的同時獲得更多語義信息的更深層次的網絡結構對于良好的網絡結構是必不可少的。FPN將強語義特征從頂部特征映射傳遞到下方特征映射。同時PAN從較低的特征圖向較高的特征圖傳遞更強的定位特征,這兩種結構結合起來增強了neck特征融合能力。預測模塊執行最后的檢測,并對輸出特征映射應用錨框,生成具有類別概率、置信度評分和邊界框的輸出向量。損失函數使用GIOU_loss,置信度損失和類別損失使用二元交叉熵損失函數。

圖1 YOLOv5網絡結構
YOLOv5 相比于YOLOv4 和YOLOv3 有了非常明顯的精度和速度提升,但對于嵌入式設備而言,其參數計算量和模型大小依然很大,因此需要對其進行網絡改造以適應嵌入式設備的部署和運行。
本文使用輕量級網絡GhostNet 重構YOLOv5的backbone 和neck,減少參數的計算,同時加強對特征的提取能力。并且在主干網的最后一層增加SE 注意力機制,使得網絡對目標更加關注,增強目標在復雜環境背景的檢測精度。由于本文檢測的目標大小比較固定,因此在特征融合的時候減少了一層,采用兩層融合的方式,同時減少了backbone的網絡深度。
在CNN 模型中,特征圖的冗余非常重要,但很少有人在模型結構設計中考慮到特征圖的冗余問題。2020 年,Han 等[13]提出了一種新的Ghost 模塊,可以使用更少的參數生成更多的特征映射。Ghost 模塊分為兩步進行,第一步用傳統的卷積生成少量特征圖,第二步將生成的特征圖通過相應的線性計算生成最終的特征圖。顯然,與直接使用傳統卷積相比,Ghost 模塊的計算量明顯減少。從另一個角度來看,這樣卷積得到的特征圖也得到了數據增強。Ghost 卷積結構如圖2所示。

圖2 Ghost卷積結構
假設第一步輸入生成m個特征圖,第二步生成s個特征圖,那么一共會輸出n=m×s個特征圖,傳統卷積和Ghost 卷積在輸出特征圖數量相等的情況下,網絡參數量之比為
P1和P2分別代表傳統卷積和Ghost 卷積的網絡參數量,兩者的值為
其中:k×k和d×d分別表示代表傳統卷積操作和線性操作的卷積核的尺寸,輸入圖像的通道數為c。
兩者的浮點型計算量之比為
h'和w'表示Ghost 卷積生成的原始特征圖的高和寬。
其中,q1和q2為傳統卷積和Ghost 卷積的浮點型計算量,分別為
由以上公式可以看出Ghost 卷積的網絡參數量以及浮點型計算量約為傳統卷積的1/s。Ghost bottleneck 類似于ResNet[14]中的基本殘留塊,它集成了多個卷積層,Ghost bottleneck主要由兩個Ghost模塊組成。Ghost bottleneck結構如圖3所示。

圖3 Ghost bottleneck結構
本文用Ghost卷積替換了主干網以及neck網絡中所有的傳統卷積,用Ghost bottleneck 結構替換了C3中的bottleneck結構,以此來減少網絡的參數量,同時增強網絡特征提取能力,降低了模型的大小,使得模型有利于部署到嵌入式設備。
本文在主干網的最后一層加上了SE 注意力機制,增強網絡對重點區域的選擇,同時也可以減少計算量。SENet 是自動駕駛公司Momenta在2017 年宣布的一種新的圖像識別結構,它通過建模特征通道之間的相關性和增強重要特征來提高精度。SENet強化了重要通道的特性,弱化了非重要通道的特性,取得了良好的效果。SE層結構如圖4所示。

圖4 SE層結構
SE模塊主要包括三個操作,壓縮(squeeze)、激勵(excitation),以及scale 操作。輸入X經過卷積后得到特征圖U, 其尺寸為W×H×C,其中W、H、C分別代表寬度、高度以及通道數。接著再將特征圖U進行壓縮操作,進行最大池化或者平均池化,得到1 × 1 ×C的向量,寬和高變為1,通道數沒有發生變化。其壓縮的公式為
其中:Fsq表示壓縮函數;Xc表示壓縮操作的輸入;i和j代表每個通道對應長和寬平面的坐標;H和W代表通道的高度和寬度,本文在壓縮時采用的平均池化的方式。
接著將壓縮的輸出向量輸入到激活模塊,激活模塊由全連接層和激活函數組成,其中全連接層有兩個,第一個全連接層的神經元個數為C× SERatio,輸入的向量1 × 1 ×C經過此全連接層后輸出為1 × 1 ×C× SERatio,送入到第二個全連接層,由于此層具有C個神經元,輸出為1 × 1 ×C。具體過程如圖5所示。

圖5 激活過程
最后就是scale 操作,將SE 模塊得到的1 ×1 ×C的向量按通道分別和W×H×C的特征圖相乘,具體就是特征圖的每個通道對應的二維矩陣里面的所有值乘上相應的權重值,最終輸出。
由于本文檢測的目標較為單一且大小比較固定,因此與YOLOv5的三層特征融合相比,如圖6所示,本文減少了一層,采用兩層特征融合來提升網絡的推理速度,減少網絡的計算量。采用路徑聚合網絡PANet[15]來提升信息的利用率,PANet 基于Mask R?CNN 和FPN 框架,并在此基礎上優化信息的傳播。網絡的特征提取器使用自底向上路徑的FPN 結構,從而優化低級特征的傳播。使用前一階段的特征圖作為第三路徑每一階段的輸入,同時使用3*3卷積層對其進行處理。通過水平連接將輸出添加到自頂向下路徑的同一階段的特征映射中,這些特征映射為下一階段提供信息。同時采用自適應特征池,恢復所有特征級別與每個候選區域之間的受損信息路徑,并在每個特征級別上聚合每個候選區域,以防止任意分配,PANet網絡結構如圖6所示。

圖6 路徑聚合網絡PANet
綜合以上對YOLOv5 原網絡三個改進點,改進后的網絡結構如圖7 所示,為了在接下來的敘述更加方便,故將改進后的網絡命名為YOLOv5s?GhostNet?SE。

圖7 YOLOv5s?GhostNet?SE網絡結構
本文采用PC 和比特大陸開發板作為實驗的硬件平臺,其中PC的具體參數見表1。

表1 PC端參數性能
開發板Sophon SE5 是比特大陸推出的智能邊緣設備,具體參數見表2。

表2 比特大陸開發板參數性能
推理引擎TPU 的優勢在于它優化了網絡中卷積的計算,能夠進一步減少整個網絡的推理計算量,從而降低模型的功耗。
由于本文加油站場景所需的數據集比較少,加上在網絡上搜集的數據集,一共4432張(示例見圖8)。為了增強網絡的泛化能力,本文在COCO 數據集選取了3000 張人體目標圖像,一共7432 張圖像,按照8∶2 的比例劃分為訓練集和測試集再訓練網絡,并且驗證相關指標。

圖8 數據集示例
本實驗選取BFLOPs、召回率(recall)、mAP、模型大小和檢測速度共五個指標對訓練后的加油員人體檢測模型進行性能評價。
BFLOPs 描述的是卷積所用的運算量,其算法模型的復雜度可以通過多次卷積等運算所耗費的浮點運算次數相加來表示。精度反映了模型或分類器正確預測陽性樣本精度的能力。該值越大,性能越好。召回率是預測為陽性樣本的陽性樣本占總陽性樣本的比例,其性能與Precision 相同。精度和召回率相互影響。一般來說,正確率高召回率就會低,正確率低召回率就會高。精度和召回率的計算方式為
以圖中待檢測的人體為例,TP表示圖中的目標被正確識別為人體,FP表示被檢測到的另一個目標被錯誤識別為人體,FN表示圖中的目標被錯誤識別為其他類別。
AP 的大小可以用PR 曲線的積分來表示,即曲線所圍的面積,各類別AP 的平均值就是mAP。其中mAP_0.5 為IOU 閾值設置為0.5 時,所有AP 的平均值。mAP_0.5:0.95 表示IOU 閾值在0.5~0.95 下的平均mAP。C表示目標類型個數,N表示欠條閾值個數,K表示當前欠條閾值,P(K)和R(K)表示精度和召回率。具體計算為
模型大小定義為訓練出來的權重文件所占用的磁盤空間大小,單位為MB。檢測速度定義為模型每秒可處理的圖片張數。
本文模型訓練輪次為300輪,batch?size為8,采用YOLOv5 改進的yaml 文件進行訓練,圖片大小不固定,由模型自動轉化為640 × 640。
首先是在PC 硬件平臺上,將原始YOLOv5模型和改進后的模型進行實驗對比,檢測到的結果如圖9所示,相關的參數指標見表3。

表3 不同網絡模型性能指標對比

圖9 各模型檢測結果
其中YOLOv5s?SE表示在YOLOv5s原網絡的基礎上增加SE注意力機制,由此可以看出在增加注意力機制后,模型的參數量和模型的大小略有增加,FPS幾乎不變,但是召回率和mAP都增加,特別是mAP 增加了0.011。YOLOv5s?GhostNet 表示在用GhostNet重構YOLOv5s網絡,并且去掉了主干網中的兩層,減少模型的深度以此來減少參數量,另外檢測頭也減少為兩個。可以看出用GhostNet對主干網進行重構后,模型的大小和參數量都有非常明顯的降低,均約降為原來的1/7,在召回率和mAP有輕微下降的情況下,FPS提高了51.8%。最終的網絡模型YOLOv5s?GhostNet?SE相比于原網絡而言,mAP沒有下降,反而還增加了0.005,且參數量和模型大小均降為原始模型的1/7,并且FPS也提升了46.8%,說明對原網絡的改進是成功的。
接著在比特大陸開發板進行改進后的模型指標測試,測試結果如圖10所示。

圖10 Sophon SE5檢測結果
和PC 硬件環境進行性能對比,檢測到的參數指標見表4。

表4 不同網絡模型性能指標對比
由于網絡模型YOLOv5s?GhostNet?SE 在部署到邊緣設備Sophon SE5 前要進行模型轉化,轉化后的模型推理得到的mAP 為0.942,相比轉換前在GPU 上運行的0.959有所下降。但其在邊緣設備上的功耗僅為9.6 W,只有GPU 功耗的八分之一,且PFS 可達49,完全滿足邊緣設備進行實時監測的要求。
本文針對加油員人體檢測的任務,對YOLOv5網絡提出了幾點輕量化改進:用GhostNet 重構YOLOv5網絡,且去掉主干網中的兩層,減少檢測頭的個數,以此來減少網絡的參數量,增加推理速度,在此基礎上添加注意力機制,來減少網絡重構后精度的損失。在自建數據集上的實驗結果表明,改進后的網絡的精度幾乎沒有損失,而模型大小和參數量大大降低,推理速度也有了較大的提升,非常有利于在嵌入式開發板上部署。