雷 磊,陶青川
(四川大學(xué)電子信息學(xué)院,成都 610000)
在值班室、儀器操作室、保衛(wèi)室、生產(chǎn)流水線等場景下,工作人員的工作職責(zé)要求持續(xù)在崗職守,而這類人員如果異常離崗或脫崗,導(dǎo)致實(shí)時(shí)性監(jiān)督得不到保障,留下重大的安全隱患或造成經(jīng)濟(jì)損失。
離崗檢測算法的首要目標(biāo)是獲取人體的位置。深度學(xué)習(xí)算法中目標(biāo)檢測算法經(jīng)過訓(xùn)練之后泛化性強(qiáng)且具有較高的檢測精度,因此基于目標(biāo)的離崗檢測算法具有更高可行性。
迄今為止,目標(biāo)檢測算法主要分為兩類:一種是以R-CNN為代表的Two Stage 方法;另一種以SSD、YOLO算法為代表的One Stage方法。相比之下,One Stage 算法網(wǎng)絡(luò)結(jié)構(gòu)較簡單,且更容易進(jìn)行將算法部署至移動、嵌入式設(shè)備。
本文在YOLOv4算法基礎(chǔ)上,通過對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行研究和改進(jìn),降低網(wǎng)絡(luò)的計(jì)算量和參數(shù),提高推理速度。而后基于輕量化YOLOv4實(shí)現(xiàn)離崗檢測算法并部署至邊緣設(shè)備進(jìn)行測試。
YOLOv4目 標(biāo) 檢 測 算 法 是 由AlexyAB 于2020年提出的新一代目標(biāo)檢測算法,YOLOv4從輸入端、主干網(wǎng)絡(luò)、特征融合以及激活函數(shù)等多個(gè)方面進(jìn)行改進(jìn),在保證推理速度更快前提下具有更高的檢測精度。
YOLOv4算法性能優(yōu)越,但是根據(jù)實(shí)際使用場景、檢測目標(biāo)大小等不同,網(wǎng)絡(luò)結(jié)構(gòu)不一定需要如此復(fù)雜。如在移動端設(shè)備、邊緣設(shè)備等算力有限、存儲資源有限的終端上,YOLOv4難以做到實(shí)時(shí)性。在這種情況下,通常可用一部分的性能損耗來換取更快的推理速度。因此本文選擇對YOLOv4進(jìn)行輕量化改進(jìn),具體的措施主要有以下3個(gè)方面:
(1)對MobileNetV2的Bottleneck網(wǎng)絡(luò)進(jìn)行調(diào)整,在保證精度的前提下,降低計(jì)算量,并使用改進(jìn)的MobileNetV2 網(wǎng)絡(luò)替換YOLOv4 的特征提取網(wǎng)絡(luò)。
(2)將SPP 結(jié)構(gòu)加入特征提取網(wǎng)絡(luò)末端,提高網(wǎng)絡(luò)檢測精度。
(3)YOLOv4 采用3 層特征融合的方式主要是為了解決小目標(biāo)難以檢測的問題,而由于離崗檢測只需要檢測較為簡單的人體目標(biāo),故采用2層特征融合并結(jié)合路徑網(wǎng)絡(luò)降低網(wǎng)絡(luò)參數(shù)的同時(shí)保持檢測精度。
2.1.1 MobileNetV2原始結(jié)構(gòu)
MobileNet 以網(wǎng)絡(luò)結(jié)構(gòu)簡單、參數(shù)量小、推理速度快著稱,因此該網(wǎng)絡(luò)適用于移動端或邊緣設(shè)備。MobileNetV2網(wǎng)絡(luò)延續(xù)了MobileNet中所使用的深度可分離卷積,并借鑒了ResNet網(wǎng)絡(luò)中的經(jīng)典瓶頸層結(jié)構(gòu)。MobileNetV2 的網(wǎng)絡(luò)結(jié)構(gòu)如表1。
表1 MobileNetV2網(wǎng)絡(luò)結(jié)構(gòu)
表1中Input為輸入尺寸,Operator為某層的操作類型,為網(wǎng)絡(luò)擴(kuò)展因子,表示某一層的卷積核個(gè)數(shù),為bottleneck 的重復(fù)次數(shù),表示卷積步長,為類別數(shù),conv2d 表示二維卷積,Avgpool表示平均池化。
2.1.2 深度可分離卷積
深度可分離卷積將傳統(tǒng)卷積操作拆分為深度卷積(depth wise,DW)與逐點(diǎn)卷積(point wise,PW)。傳統(tǒng)卷積如圖2所示。
圖2 傳統(tǒng)卷積操作
以卷積步長為1 為例,D表示輸入圖像的大小,D表示卷積核的大小,表示輸入圖像的通道深度,表示輸出特征圖的通道深度。則傳統(tǒng)卷積計(jì)算量如公式(1)所示。
DW 卷積操作則是對于每一個(gè)輸入通道單獨(dú)使用一個(gè)卷積核進(jìn)行處理,如圖3 所示。相對于傳統(tǒng)卷積,DW 卷積核個(gè)數(shù)對應(yīng)輸入特征矩陣的通道數(shù),其操作實(shí)質(zhì)是分別對各個(gè)通道進(jìn)行卷積計(jì)算,可以更充分地理解單個(gè)通道的特征。
圖3 DW卷積操作
但是由于DW 卷積每個(gè)卷積核只關(guān)注單個(gè)通道的特征信息,因此存在空間特征信息表達(dá)力不夠的問題。為了解決這個(gè)問題,引入PW 卷積與DW 卷積相配合。由圖4 可知,PW 卷積操作主要是通過1×1 的傳統(tǒng)卷積操作對輸入特征圖進(jìn)行處理,該操作的主要目的是使得各通道之間的特征信息融合,從而得到表達(dá)能力較強(qiáng)的空間特征信息。
圖4 PW卷積操作
在同樣的條件下,深度可分離卷積的計(jì)算量為公式(2)所示。
其中,
化簡可得,最終的深度可分離卷積的計(jì)算量為:
通過公式(1)(5)可得同樣輸入輸出條件下傳統(tǒng)卷積操作與深度可分離卷積的比值為:
2.1.3 SandGlass模塊
MobileNetv2 借 鑒 了ResNet網(wǎng) 絡(luò) 中 的bottleneck,使用PW 卷積來實(shí)現(xiàn)靈活改變特征維度的目的。由圖5(a)可知,ResidualBlock 先通過一個(gè)PW 卷積減少特征通道數(shù);而后通過傳統(tǒng)卷積進(jìn)行特征提??;最后利用PW 卷積進(jìn)行通道間信息融合并恢復(fù)通道數(shù)。通過2.1.2 中的計(jì)算方式可知,這種做法顯著降低了網(wǎng)絡(luò)計(jì)算量。
如果一開始使用1×1 的逐點(diǎn)卷積進(jìn)行降維,在降維的過程中很可能造成高維信息丟失,因此MobileNetV2 首先使用PW 卷積擴(kuò)展維度,避免直接降維所造成的信息丟失;而后使用DW卷積提取各通道的特征;最后的PW 卷積采用Linear 激活函數(shù),能夠避免使用ReLU 激活函數(shù)所造成的信息丟失。Linear Inverted Residual 結(jié)構(gòu)如圖5(b)所示。
相關(guān)研究表明:殘差模塊中的短連接在特征信息較少的情況下可能會影響梯度回傳。考慮到Residual Block 和Inverted Residual Block的局限性,文獻(xiàn)[13]提出了SandGlass Block。SandGlass Block 主要基于兩點(diǎn)進(jìn)行bottleneck 模塊的重構(gòu):一是盡可能保證殘差結(jié)構(gòu)從bottom上傳到top 時(shí)具有更多的信息,從而有助于提高梯度回傳的效果;二是由于DW 卷積具有輕量化的特點(diǎn),采用兩次DW 卷積有助于保留更多的空域信息,從而提升分類性能。SandGlass 的網(wǎng)絡(luò)結(jié)構(gòu)如圖5(c)所示。
圖5 三種bottleneck結(jié)構(gòu)
使用SandGlass 模塊替換MobileNetv2 的bottleneck,修改主體網(wǎng)絡(luò)的輸入尺寸為416×416,并刪去MobileNetV2 網(wǎng)絡(luò)末端的Avgpool 層與逐點(diǎn)卷積。此時(shí),改進(jìn)MobileNetV2 網(wǎng)絡(luò)中有兩種bottleneck模塊,一種為SandGlass模塊,另一種是由PW 卷積與DW 卷積組合的Block,兩者細(xì)節(jié)如圖6所示。
圖6 改進(jìn)MobileNetV2網(wǎng)絡(luò)兩種模塊
當(dāng)特征提取網(wǎng)絡(luò)的輸入尺寸固定,由于輸入樣本圖片尺寸不一致,需要在訓(xùn)練或推理時(shí)使用裁剪、縮放等圖像處理方式改變輸入圖像的尺寸,但這可能會造成圖像畸變,造成特征信息失真。為了解決這個(gè)問題,在特征提取網(wǎng)絡(luò)之后引入空間金字塔池化結(jié)構(gòu),該結(jié)構(gòu)可以對不同尺度的特征圖進(jìn)行信息壓縮和融合,最終得到固定尺寸的輸出??紤]到人體目標(biāo)屬于中型或大型目標(biāo),本文引入的SPP 網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
圖7 SPP空間金字塔池化模塊
具體而言,SPP 模塊的工作步驟為:首先,輸入特征圖經(jīng)過三次最大值池化層(尺寸分別為3、5、7);而后通過一條short-cut 路徑將輸入特征圖與三個(gè)池化輸出進(jìn)行維度拼接(concat);最后,通過一個(gè)卷積層對四個(gè)不同尺度的特征信息進(jìn)行融合、學(xué)習(xí)。
由于人體目標(biāo)較大且較為簡單,為降低網(wǎng)絡(luò)計(jì)算量,提高前向推理速度,本文采用2層特征信息融合。為了提高細(xì)節(jié)信息的利用率,使用路徑聚合網(wǎng)絡(luò)PANet來進(jìn)行特征增強(qiáng)網(wǎng)絡(luò)。PANet包含了自下而上和自上而下兩條特征融合路徑,如圖8所示,其有兩個(gè)輸入層,分別來自特征提取網(wǎng)絡(luò)中的中端與末端,這種方式可以使得多尺度特征反復(fù)融合、相互增強(qiáng),能夠更充分地理解特征提取網(wǎng)絡(luò)的高層語義信息與低維度信息,提升網(wǎng)絡(luò)表達(dá)能力。
圖8 路徑聚合網(wǎng)絡(luò)PANet
綜合以上有關(guān)網(wǎng)絡(luò)的改進(jìn),本文所提出的改進(jìn)YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)如圖9 所示,為方便行文,將改進(jìn)的YOLOv4算法稱為YOLOv4-Fast。
圖9 YOLOv4-Fast網(wǎng)絡(luò)結(jié)構(gòu)
本文所提出的離崗檢測算法流程如圖10所示。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
圖10 睡崗檢測算法流程
離崗檢測算法的具體步驟為:
(1)選擇待崗區(qū)域。選擇工作人員的待崗區(qū)域,即需要進(jìn)行離崗檢測的區(qū)域。
(2)前處理。利用攝像機(jī)實(shí)景圖像,經(jīng)過邊緣設(shè)備解碼后,將解碼出的每一幀圖像傳入目標(biāo)檢測網(wǎng)絡(luò)中。
(3)目標(biāo)檢測網(wǎng)絡(luò)。本文所提出的改進(jìn)目標(biāo)檢測算法YOLOv4-Fast 將檢測到的人體位置傳遞給后續(xù)算法。
(4)離崗判定算法。當(dāng)未檢測到人體目標(biāo)或人體目標(biāo)位置不處于待崗區(qū)域時(shí),進(jìn)入離崗判定算法:間隔2 s(實(shí)驗(yàn)設(shè)定,可自定義)再次對圖像進(jìn)行人體目標(biāo)檢測,持續(xù)檢測10 次,如果超過半數(shù)檢測結(jié)果顯示人體位置異常,則判定人員離崗,否則不存在離崗行為。
(5)離崗?fù)ㄖH绻嬖陔x崗情況,則將現(xiàn)場圖像發(fā)送至相關(guān)負(fù)責(zé)人并警示工作人員,達(dá)到督促工作人員持續(xù)在崗的目的。
3.1.1 實(shí)驗(yàn)數(shù)據(jù)集
目前用于值班室等場景下的人體目標(biāo)檢測數(shù)據(jù)集較少。本文所用數(shù)據(jù)集來源包括實(shí)地場景采集與網(wǎng)絡(luò)圖片資源,數(shù)量為5462 張。為增強(qiáng)網(wǎng)絡(luò)的泛化能力,從COCO 數(shù)據(jù)集選取4000張人體目標(biāo)圖像。共有9462張圖片,以8∶2劃分訓(xùn)練集和測試集。
圖11 數(shù)據(jù)集示例
3.1.2 實(shí)驗(yàn)平臺
本文選用PC以及Kria KV 260開發(fā)板作為實(shí)驗(yàn)平臺,其中PC的硬件配置如表2所示。
表2 本地計(jì)算機(jī)相關(guān)參數(shù)
Kria KV 260 開發(fā)板為Xilinx 公司最新推出的智能邊緣設(shè)備,其參數(shù)如表3所示。
表3 Kria KV 260相關(guān)參數(shù)
其中推理引擎DPU 是由板載FPGA 資源所抽象而成的深度學(xué)習(xí)推理資源,具有實(shí)時(shí)、高效、低能耗的特點(diǎn)。
3.2.1 PC GPU驗(yàn)證結(jié)果
為了驗(yàn)證YOLOv4-Fast 算法的檢測效果,使用相同的硬件條件和數(shù)據(jù)集分別重新訓(xùn)練本文算法以及YOLOv4、YOLOv3 算法。對比多種算法的準(zhǔn)確率、推理耗時(shí)、計(jì)算量(BFLOPs)和模型大小,具體實(shí)驗(yàn)數(shù)據(jù)如表4所示。
表4 本文改進(jìn)YOLOv4目標(biāo)檢測算法效果對比
圖12分別為三種算法的檢測效果。
圖12 GPU測試結(jié)果
從目標(biāo)檢測結(jié)果上看,三種算法的檢測結(jié)果大致相同;從實(shí)際精度上看,相較于原YOLOv4 算法,YOLOv4-Fast 算法精度低3.5%,但檢測速度卻提升了100 FPS,并且模型大小降低210 MB,網(wǎng)絡(luò)計(jì)算量下降近90%。
3.2.2 Kria KV 260驗(yàn)證結(jié)果
本文所提出的目標(biāo)檢測算法YOLOv4-Fast旨在移植至移動、邊緣設(shè)備,充分發(fā)揮其高速數(shù)據(jù)處理、功耗低、性價(jià)比高等優(yōu)點(diǎn),因此第二個(gè)實(shí)驗(yàn)是在PC(GPU)和Kria KV 260 開發(fā)板上分別運(yùn)行YOLOv4-Fast 算法,對比兩者的檢測速度、功耗、和精度。如表5所示。
表5 GPU與Kria KV 260實(shí)驗(yàn)對比
圖13是Kria KV 260上的目標(biāo)檢測效果圖。
通過表5可知,將YOLOv4-Fast算法部署至Kria KV 260時(shí)由于模型轉(zhuǎn)換的損耗,造成0.52%的精度下降,但從圖13 可以看出,Kria KV 260的檢測結(jié)果與GPU 上的檢測結(jié)果基本一致,與此同時(shí),F(xiàn)PS 達(dá)56,足以勝任實(shí)時(shí)性的目標(biāo)檢測場景。在功耗方面,Kria KV 260 約為GPU 的八分之一。
圖13 Kria KV260測試結(jié)果
由上述分析可知,YOLOv4-Fast 算法既有較好的檢測性能與較快的推理速度,又能充分發(fā)揮FPGA智能邊緣設(shè)備高速處理、低能耗的優(yōu)點(diǎn),因此,本文所提出的YOLOv4-Fast 算法非常適合部署在邊緣設(shè)備上。
為了研究本文改進(jìn)模塊和相關(guān)策略對網(wǎng)絡(luò)性能帶來的影響,設(shè)計(jì)消融實(shí)驗(yàn)如表6所示。表中√表示本次實(shí)驗(yàn)包含該結(jié)構(gòu),×表示不包含該結(jié)構(gòu)。MobileNetV2 表示將YOLOv4 的主干網(wǎng)絡(luò)替換為MobileNetV2;SandGlass 表示將Mobile-NetV2 中的bottleneck 模塊替換為SandGlass 模塊;SPP 表示在主干網(wǎng)絡(luò)末端增加SPP 模塊以提高不同尺度的特征信息融合;PANet表示使用路徑聚合網(wǎng)絡(luò)。
由表6 的消融實(shí)驗(yàn)可以看到,原版YOLOv4具有最高準(zhǔn)確率、浮點(diǎn)運(yùn)算量與模型大?。坏诙M實(shí)驗(yàn)表明將主干網(wǎng)絡(luò)替換為MobileNetV2時(shí),精度有所下降,但浮點(diǎn)運(yùn)算量和模型大小大幅下降;第三組、第四組、第五組實(shí)驗(yàn)表明SPP 與PANet對模型的精度都有不同程度的提升效果;第六組實(shí)驗(yàn)使用SandGlass 模塊替換MobileNetV2 網(wǎng)絡(luò)的bottlneck,精度有些許下降,但浮點(diǎn)運(yùn)算量與模型大小下降明顯,可能是由于SandGlass 模塊采用兩次3×3 的卷積提高了網(wǎng)絡(luò)的特征信息獲取能力;第七組、第八組、第九組實(shí)驗(yàn)表明各種策略對于網(wǎng)絡(luò)的精度都有顯著提升。綜上所述,本文所提出的YOLOv4-Fast 算法針對YOLOv4 的輕量化改進(jìn)具備有效性和合理性,以較低性能損耗為代價(jià)大幅減小了網(wǎng)絡(luò)的浮點(diǎn)運(yùn)算量與模型大小。
表6 消融實(shí)驗(yàn)
在章節(jié)2.5 中提出了一種基于目標(biāo)檢測的離崗檢測算法,使用本文提出的YOLOv4-Fast 作為其目標(biāo)檢測算法。采集多個(gè)場景下的值班室視頻,將視頻分割為30 s一段,一共170段,其中95 段為員工在崗視頻,75 段為員工離崗視頻。將離崗檢測算法部署至Kria KV 260,并對上述視頻進(jìn)行一一檢測,檢測結(jié)果如表7所示。
表7 離崗算法檢測結(jié)果
由表7 可知,離崗檢測算法的準(zhǔn)確率為96.87%,能夠有效的識別員工是否離崗并及時(shí)進(jìn)行反饋。通過分析判定錯(cuò)誤的例子,當(dāng)員工身體被大面積遮擋,或是場景中存在衣物等物體時(shí)容易造成誤判,這是后續(xù)算法優(yōu)化需要解決的問題。
針對智能邊緣設(shè)備上的計(jì)算資源有限的問題,本文在YOLOv4 算法和MobileNetv2 網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行了模型的替換和改進(jìn),提出了YOLOv4-Fast 算法,并分別部署至GPU 和Kria KV 260開發(fā)板。GPU上的實(shí)驗(yàn)結(jié)果表明,YOLOv4-Fast在犧牲3.5%的精度下,提高了100 FPS的運(yùn)行速度,并將模型大小降低了210 MB。與此同時(shí),Kria KV260 開發(fā)板與GPU 的實(shí)驗(yàn)結(jié)果表明,YOLOv4-Fast 算法能夠充分利用KV260 的FPGA計(jì)算資源,并且相比于GPU 僅只有1 8 的功耗?;赮OLOv4-Fast 算法的離崗檢測算法達(dá)到96.87%的準(zhǔn)確度,說明本文所提出的算法具有很大的實(shí)用性。為了盡可能提高算法的檢測精度,以免產(chǎn)生誤判,在之后的工作中,需要結(jié)合Kria KV 260 開發(fā)板特性對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行分析,探究各種網(wǎng)絡(luò)結(jié)構(gòu)對推理速度以及模型參數(shù)的關(guān)系,從而在降低網(wǎng)絡(luò)計(jì)算量、模型參數(shù)的前提下,進(jìn)一步提高目標(biāo)檢測網(wǎng)絡(luò)的推理速度和精度。