雷 磊,陶青川
(四川大學電子信息學院,成都 610000)
在值班室、儀器操作室、保衛室、生產流水線等場景下,工作人員的工作職責要求持續在崗職守,而這類人員如果異常離崗或脫崗,導致實時性監督得不到保障,留下重大的安全隱患或造成經濟損失。
離崗檢測算法的首要目標是獲取人體的位置。深度學習算法中目標檢測算法經過訓練之后泛化性強且具有較高的檢測精度,因此基于目標的離崗檢測算法具有更高可行性。
迄今為止,目標檢測算法主要分為兩類:一種是以R-CNN為代表的Two Stage 方法;另一種以SSD、YOLO算法為代表的One Stage方法。相比之下,One Stage 算法網絡結構較簡單,且更容易進行將算法部署至移動、嵌入式設備。
本文在YOLOv4算法基礎上,通過對網絡結構進行研究和改進,降低網絡的計算量和參數,提高推理速度。而后基于輕量化YOLOv4實現離崗檢測算法并部署至邊緣設備進行測試。
YOLOv4目 標 檢 測 算 法 是 由AlexyAB 于2020年提出的新一代目標檢測算法,YOLOv4從輸入端、主干網絡、特征融合以及激活函數等多個方面進行改進,在保證推理速度更快前提下具有更高的檢測精度。
YOLOv4算法性能優越,但是根據實際使用場景、檢測目標大小等不同,網絡結構不一定需要如此復雜。如在移動端設備、邊緣設備等算力有限、存儲資源有限的終端上,YOLOv4難以做到實時性。在這種情況下,通常可用一部分的性能損耗來換取更快的推理速度。因此本文選擇對YOLOv4進行輕量化改進,具體的措施主要有以下3個方面:
(1)對MobileNetV2的Bottleneck網絡進行調整,在保證精度的前提下,降低計算量,并使用改進的MobileNetV2 網絡替換YOLOv4 的特征提取網絡。
(2)將SPP 結構加入特征提取網絡末端,提高網絡檢測精度。
(3)YOLOv4 采用3 層特征融合的方式主要是為了解決小目標難以檢測的問題,而由于離崗檢測只需要檢測較為簡單的人體目標,故采用2層特征融合并結合路徑網絡降低網絡參數的同時保持檢測精度。
2.1.1 MobileNetV2原始結構
MobileNet 以網絡結構簡單、參數量小、推理速度快著稱,因此該網絡適用于移動端或邊緣設備。MobileNetV2網絡延續了MobileNet中所使用的深度可分離卷積,并借鑒了ResNet網絡中的經典瓶頸層結構。MobileNetV2 的網絡結構如表1。

表1 MobileNetV2網絡結構
表1中Input為輸入尺寸,Operator為某層的操作類型,為網絡擴展因子,表示某一層的卷積核個數,為bottleneck 的重復次數,表示卷積步長,為類別數,conv2d 表示二維卷積,Avgpool表示平均池化。
2.1.2 深度可分離卷積
深度可分離卷積將傳統卷積操作拆分為深度卷積(depth wise,DW)與逐點卷積(point wise,PW)。傳統卷積如圖2所示。

圖2 傳統卷積操作
以卷積步長為1 為例,D表示輸入圖像的大小,D表示卷積核的大小,表示輸入圖像的通道深度,表示輸出特征圖的通道深度。則傳統卷積計算量如公式(1)所示。

DW 卷積操作則是對于每一個輸入通道單獨使用一個卷積核進行處理,如圖3 所示。相對于傳統卷積,DW 卷積核個數對應輸入特征矩陣的通道數,其操作實質是分別對各個通道進行卷積計算,可以更充分地理解單個通道的特征。

圖3 DW卷積操作
但是由于DW 卷積每個卷積核只關注單個通道的特征信息,因此存在空間特征信息表達力不夠的問題。為了解決這個問題,引入PW 卷積與DW 卷積相配合。由圖4 可知,PW 卷積操作主要是通過1×1 的傳統卷積操作對輸入特征圖進行處理,該操作的主要目的是使得各通道之間的特征信息融合,從而得到表達能力較強的空間特征信息。

圖4 PW卷積操作
在同樣的條件下,深度可分離卷積的計算量為公式(2)所示。

其中,

化簡可得,最終的深度可分離卷積的計算量為:

通過公式(1)(5)可得同樣輸入輸出條件下傳統卷積操作與深度可分離卷積的比值為:


2.1.3 SandGlass模塊
MobileNetv2 借 鑒 了ResNet網 絡 中 的bottleneck,使用PW 卷積來實現靈活改變特征維度的目的。由圖5(a)可知,ResidualBlock 先通過一個PW 卷積減少特征通道數;而后通過傳統卷積進行特征提取;最后利用PW 卷積進行通道間信息融合并恢復通道數。通過2.1.2 中的計算方式可知,這種做法顯著降低了網絡計算量。
如果一開始使用1×1 的逐點卷積進行降維,在降維的過程中很可能造成高維信息丟失,因此MobileNetV2 首先使用PW 卷積擴展維度,避免直接降維所造成的信息丟失;而后使用DW卷積提取各通道的特征;最后的PW 卷積采用Linear 激活函數,能夠避免使用ReLU 激活函數所造成的信息丟失。Linear Inverted Residual 結構如圖5(b)所示。
相關研究表明:殘差模塊中的短連接在特征信息較少的情況下可能會影響梯度回傳。考慮到Residual Block 和Inverted Residual Block的局限性,文獻[13]提出了SandGlass Block。SandGlass Block 主要基于兩點進行bottleneck 模塊的重構:一是盡可能保證殘差結構從bottom上傳到top 時具有更多的信息,從而有助于提高梯度回傳的效果;二是由于DW 卷積具有輕量化的特點,采用兩次DW 卷積有助于保留更多的空域信息,從而提升分類性能。SandGlass 的網絡結構如圖5(c)所示。

圖5 三種bottleneck結構
使用SandGlass 模塊替換MobileNetv2 的bottleneck,修改主體網絡的輸入尺寸為416×416,并刪去MobileNetV2 網絡末端的Avgpool 層與逐點卷積。此時,改進MobileNetV2 網絡中有兩種bottleneck模塊,一種為SandGlass模塊,另一種是由PW 卷積與DW 卷積組合的Block,兩者細節如圖6所示。

圖6 改進MobileNetV2網絡兩種模塊
當特征提取網絡的輸入尺寸固定,由于輸入樣本圖片尺寸不一致,需要在訓練或推理時使用裁剪、縮放等圖像處理方式改變輸入圖像的尺寸,但這可能會造成圖像畸變,造成特征信息失真。為了解決這個問題,在特征提取網絡之后引入空間金字塔池化結構,該結構可以對不同尺度的特征圖進行信息壓縮和融合,最終得到固定尺寸的輸出。考慮到人體目標屬于中型或大型目標,本文引入的SPP 網絡結構如圖7所示。

圖7 SPP空間金字塔池化模塊
具體而言,SPP 模塊的工作步驟為:首先,輸入特征圖經過三次最大值池化層(尺寸分別為3、5、7);而后通過一條short-cut 路徑將輸入特征圖與三個池化輸出進行維度拼接(concat);最后,通過一個卷積層對四個不同尺度的特征信息進行融合、學習。
由于人體目標較大且較為簡單,為降低網絡計算量,提高前向推理速度,本文采用2層特征信息融合。為了提高細節信息的利用率,使用路徑聚合網絡PANet來進行特征增強網絡。PANet包含了自下而上和自上而下兩條特征融合路徑,如圖8所示,其有兩個輸入層,分別來自特征提取網絡中的中端與末端,這種方式可以使得多尺度特征反復融合、相互增強,能夠更充分地理解特征提取網絡的高層語義信息與低維度信息,提升網絡表達能力。

圖8 路徑聚合網絡PANet
綜合以上有關網絡的改進,本文所提出的改進YOLOv4 網絡結構如圖9 所示,為方便行文,將改進的YOLOv4算法稱為YOLOv4-Fast。

圖9 YOLOv4-Fast網絡結構
本文所提出的離崗檢測算法流程如圖10所示。

圖1 YOLOv4網絡結構

圖10 睡崗檢測算法流程
離崗檢測算法的具體步驟為:
(1)選擇待崗區域。選擇工作人員的待崗區域,即需要進行離崗檢測的區域。
(2)前處理。利用攝像機實景圖像,經過邊緣設備解碼后,將解碼出的每一幀圖像傳入目標檢測網絡中。
(3)目標檢測網絡。本文所提出的改進目標檢測算法YOLOv4-Fast 將檢測到的人體位置傳遞給后續算法。
(4)離崗判定算法。當未檢測到人體目標或人體目標位置不處于待崗區域時,進入離崗判定算法:間隔2 s(實驗設定,可自定義)再次對圖像進行人體目標檢測,持續檢測10 次,如果超過半數檢測結果顯示人體位置異常,則判定人員離崗,否則不存在離崗行為。
(5)離崗通知。如果存在離崗情況,則將現場圖像發送至相關負責人并警示工作人員,達到督促工作人員持續在崗的目的。
3.1.1 實驗數據集
目前用于值班室等場景下的人體目標檢測數據集較少。本文所用數據集來源包括實地場景采集與網絡圖片資源,數量為5462 張。為增強網絡的泛化能力,從COCO 數據集選取4000張人體目標圖像。共有9462張圖片,以8∶2劃分訓練集和測試集。

圖11 數據集示例
3.1.2 實驗平臺
本文選用PC以及Kria KV 260開發板作為實驗平臺,其中PC的硬件配置如表2所示。

表2 本地計算機相關參數
Kria KV 260 開發板為Xilinx 公司最新推出的智能邊緣設備,其參數如表3所示。

表3 Kria KV 260相關參數
其中推理引擎DPU 是由板載FPGA 資源所抽象而成的深度學習推理資源,具有實時、高效、低能耗的特點。
3.2.1 PC GPU驗證結果
為了驗證YOLOv4-Fast 算法的檢測效果,使用相同的硬件條件和數據集分別重新訓練本文算法以及YOLOv4、YOLOv3 算法。對比多種算法的準確率、推理耗時、計算量(BFLOPs)和模型大小,具體實驗數據如表4所示。

表4 本文改進YOLOv4目標檢測算法效果對比
圖12分別為三種算法的檢測效果。

圖12 GPU測試結果
從目標檢測結果上看,三種算法的檢測結果大致相同;從實際精度上看,相較于原YOLOv4 算法,YOLOv4-Fast 算法精度低3.5%,但檢測速度卻提升了100 FPS,并且模型大小降低210 MB,網絡計算量下降近90%。
3.2.2 Kria KV 260驗證結果
本文所提出的目標檢測算法YOLOv4-Fast旨在移植至移動、邊緣設備,充分發揮其高速數據處理、功耗低、性價比高等優點,因此第二個實驗是在PC(GPU)和Kria KV 260 開發板上分別運行YOLOv4-Fast 算法,對比兩者的檢測速度、功耗、和精度。如表5所示。

表5 GPU與Kria KV 260實驗對比
圖13是Kria KV 260上的目標檢測效果圖。
通過表5可知,將YOLOv4-Fast算法部署至Kria KV 260時由于模型轉換的損耗,造成0.52%的精度下降,但從圖13 可以看出,Kria KV 260的檢測結果與GPU 上的檢測結果基本一致,與此同時,FPS 達56,足以勝任實時性的目標檢測場景。在功耗方面,Kria KV 260 約為GPU 的八分之一。

圖13 Kria KV260測試結果
由上述分析可知,YOLOv4-Fast 算法既有較好的檢測性能與較快的推理速度,又能充分發揮FPGA智能邊緣設備高速處理、低能耗的優點,因此,本文所提出的YOLOv4-Fast 算法非常適合部署在邊緣設備上。
為了研究本文改進模塊和相關策略對網絡性能帶來的影響,設計消融實驗如表6所示。表中√表示本次實驗包含該結構,×表示不包含該結構。MobileNetV2 表示將YOLOv4 的主干網絡替換為MobileNetV2;SandGlass 表示將Mobile-NetV2 中的bottleneck 模塊替換為SandGlass 模塊;SPP 表示在主干網絡末端增加SPP 模塊以提高不同尺度的特征信息融合;PANet表示使用路徑聚合網絡。
由表6 的消融實驗可以看到,原版YOLOv4具有最高準確率、浮點運算量與模型大小;第二組實驗表明將主干網絡替換為MobileNetV2時,精度有所下降,但浮點運算量和模型大小大幅下降;第三組、第四組、第五組實驗表明SPP 與PANet對模型的精度都有不同程度的提升效果;第六組實驗使用SandGlass 模塊替換MobileNetV2 網絡的bottlneck,精度有些許下降,但浮點運算量與模型大小下降明顯,可能是由于SandGlass 模塊采用兩次3×3 的卷積提高了網絡的特征信息獲取能力;第七組、第八組、第九組實驗表明各種策略對于網絡的精度都有顯著提升。綜上所述,本文所提出的YOLOv4-Fast 算法針對YOLOv4 的輕量化改進具備有效性和合理性,以較低性能損耗為代價大幅減小了網絡的浮點運算量與模型大小。

表6 消融實驗
在章節2.5 中提出了一種基于目標檢測的離崗檢測算法,使用本文提出的YOLOv4-Fast 作為其目標檢測算法。采集多個場景下的值班室視頻,將視頻分割為30 s一段,一共170段,其中95 段為員工在崗視頻,75 段為員工離崗視頻。將離崗檢測算法部署至Kria KV 260,并對上述視頻進行一一檢測,檢測結果如表7所示。

表7 離崗算法檢測結果
由表7 可知,離崗檢測算法的準確率為96.87%,能夠有效的識別員工是否離崗并及時進行反饋。通過分析判定錯誤的例子,當員工身體被大面積遮擋,或是場景中存在衣物等物體時容易造成誤判,這是后續算法優化需要解決的問題。
針對智能邊緣設備上的計算資源有限的問題,本文在YOLOv4 算法和MobileNetv2 網絡的基礎上進行了模型的替換和改進,提出了YOLOv4-Fast 算法,并分別部署至GPU 和Kria KV 260開發板。GPU上的實驗結果表明,YOLOv4-Fast在犧牲3.5%的精度下,提高了100 FPS的運行速度,并將模型大小降低了210 MB。與此同時,Kria KV260 開發板與GPU 的實驗結果表明,YOLOv4-Fast 算法能夠充分利用KV260 的FPGA計算資源,并且相比于GPU 僅只有1 8 的功耗。基于YOLOv4-Fast 算法的離崗檢測算法達到96.87%的準確度,說明本文所提出的算法具有很大的實用性。為了盡可能提高算法的檢測精度,以免產生誤判,在之后的工作中,需要結合Kria KV 260 開發板特性對網絡結構進行分析,探究各種網絡結構對推理速度以及模型參數的關系,從而在降低網絡計算量、模型參數的前提下,進一步提高目標檢測網絡的推理速度和精度。