王??担Z存瑩,田存?zhèn)?/p>
(聊城大學物理科學與信息工程學院,聊城 252059)
近年來,由于全球疫情的蔓延,全球社會都處于一種極度重視個人健康的狀態(tài)下,我國也積極地采用常態(tài)化防控舉措,使我國疫情的蔓延趨勢得到極大緩解。而佩戴口罩作為一種經(jīng)濟且安全的有效防護方式,也逐漸成為了人們外出、工作時的一種行為習慣,不僅保護了自己安全,同時也給別人帶來了方便。因此,一種更加智能化的口罩檢測方法,成為了一種新興的研究熱點,在當前世界處于疫情的大環(huán)境下,它的重要意義不言而喻。
口罩檢測作為目標檢測的一種,其發(fā)展趨勢也在不斷進行改善。傳統(tǒng)的目標檢測任務(wù),通常是通過區(qū)域選擇、人工提取特征,然后根據(jù)特定的檢測方法來進行識別[1]。通過滑動窗口等方式,根據(jù)目標顏色、紋理、色度等特征,通過一些典型提取算法,比如梯度直方圖(histogram of oriented gradients,HOG)等,然后采用分類器進行分類,比如支持向量機(SVM)進行分類[2]。這種情況下的設(shè)計過程較為復雜,且準確率不高,泛化性較差,實用性不高。隨著2006年以來神經(jīng)網(wǎng)絡(luò)算法思想的發(fā)展,因其本身具有較強的特征學習能力,極大地節(jié)省了人工提取特征這一步驟,使得目標檢測這一方向無論是在實時性還是在準確性上都有了很大提升。目標檢測大致上分為兩種,一種是兩階段目標檢測算法,另一種是單階段目標檢測算法[3]。兩階段目標檢測算法的第一階段是生成可能包含目標的候選區(qū)域,第二階段則是對候選區(qū)域的目標進行校準分類,然后得出結(jié)果,其經(jīng)典算法包括Girshick 等[4]提出的R-CNN(region-CNN)、Fast RCNN[5]、Faster RCNN[6];而單階段目標檢測算法是直接對輸入圖像進行處理,省去提取候選框這一步驟,得到最終檢測結(jié)果,常見的為YOLO系列算法。2015年YOLOv1[7]首先被提出,它與Faster RCNN 類似,將圖片輸入后,在輸出層上直接確定邊界框以及分類;Redmon 等[8]在2017年提出了YOLOv2 算法,它采用了批量歸一化、高分分類器和先驗框等策略,提升了識別事物的數(shù)量以及識別準確率。后面經(jīng)過改進的YOLOv3結(jié)構(gòu),更是引入了特征金字塔結(jié)構(gòu)網(wǎng)絡(luò)(feature pyramid network,F(xiàn)PN)[9],它可以融合三個不同尺寸大小的特征圖層,并且可以通過改變網(wǎng)絡(luò)結(jié)構(gòu),使計算速度和準確率大幅提高。YOLOv4[10]算法在通過輸入網(wǎng)絡(luò)分辨率以及卷積網(wǎng)絡(luò)層數(shù)和參數(shù)等方面,使用多種數(shù)據(jù)增強技術(shù)進行不斷調(diào)試,得出最佳平衡。YOLOv5 則是在YOLOv4 的基礎(chǔ)上進行改進,在輸入端通過數(shù)據(jù)加載器進行圖像傳遞,在靈活性與訓練速度上要優(yōu)于YOLOv4。
對于口罩檢測問題,已有多位學者進行過研究。文獻[11]在YOLOv3的基礎(chǔ)上,對空間金字塔結(jié)構(gòu)進行改進,替換損失函數(shù),相較于YOLOv3,其準確率提升14.9%;文獻[12]通過YOLOv3 和YcrCb 相結(jié)合的方式,把識別率提升到82.48%;文獻[13]通過在原YOLOv4 的基礎(chǔ)上,加入注意力機制,復用空間金字塔池化方法,提升感受野提取并融合空間特征能力,使其在口罩檢測的任務(wù)中平均準確率均值達到94.81%。
本文考慮為了使模型能夠適應(yīng)移動端設(shè)備,提出一種輕量化YOLOv5的檢測模型,通過改變網(wǎng)絡(luò)深度、替換特征提取結(jié)構(gòu)等方法,把浮點數(shù)壓縮為原來的四分之一,并且使模型大小壓縮至原來的37.5%,使其在不改變網(wǎng)絡(luò)檢測性能的前提下,大大提高算法模型的可移植性,來提升口罩識別的檢測效率。
YOLOv5 算法是YOLO 系列的第五代目標檢測網(wǎng)絡(luò)[14],它是在YOLOv3 以及YOLOv4 算法的基礎(chǔ)上加以改進而產(chǎn)生的最新YOLO 模型,并且它提出了四個版本,即YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,這四個版本的精度大小依次遞增。其詳細參數(shù)如表1所示。
表1 各版本參數(shù)
本文的主要創(chuàng)新點在于使YOLO 模型輕量化,主要采用精度較小的YOLOv5s版本,在其基礎(chǔ)上進一步改進結(jié)構(gòu),讓模型能夠在資源有限的移動終端上使用。YOLOv5s模型,也是經(jīng)歷了幾次版本更迭,現(xiàn)在的較新版本是YOLOv5s-5.0,這一版本主要是將原來的瓶頸層(BottleneckCSP)模塊轉(zhuǎn)變?yōu)镃3模塊。C3模塊相對于原BottleneckCSP 模塊主要改動了兩部分,把經(jīng)歷過殘差輸出后的Conv 模塊去掉,concat 后的標準卷積模塊中的激活函數(shù)也由LeakyRelu 變?yōu)镾iLU。YOLOv5s 模型結(jié)構(gòu)如圖1所示,其中的CBS 為卷積模塊,Res unit為殘差模塊,CSP1_X即由原BottleneckCSP 模塊修改而成的C3 模塊,CSP2_X 不包含殘差模塊,全部由卷積模塊構(gòu)成,SPP采用1x1,5x5,9x9,13x13的最大池化方式,是進行多尺度融合模塊,F(xiàn)OCUS 模塊是將輸入進行Slice 切片操作,然后送入CBS 模塊中。具體網(wǎng)絡(luò)結(jié)構(gòu)以及模塊視圖分別如圖1、圖2所示。
圖1 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
圖2 YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)各模塊視圖
GhostBottleneck 模塊是根據(jù)GhostNet 模型中的“幻影卷積”(GhostConv)所設(shè)計。Ghost-Net[15]是一種新型端側(cè)神經(jīng)網(wǎng)絡(luò)架構(gòu),它由華為諾亞方舟實驗室提出。在提出時,作者認為在提取的特征中會含有大量的冗余特征圖,為了保證對輸入數(shù)據(jù)有詳細的特征理解,于是在提取時,并不是所有特征圖都要通過卷積操作得到,對于冗余的特征圖可以通過更簡單的線性變換解決,因此提出了GhostConv,其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 GhostConv 結(jié)構(gòu)圖
其中Ghost 模塊采用了深度卷積(Depthwise Convolution)作為更價廉的線性變換。分組卷積使通道間的相關(guān)性得到消除,使得當前通道特征僅與自身相關(guān),顯著降低了參數(shù)以及計算量。
在GhsotConv 中,假設(shè)對于給定的數(shù)據(jù)X∈R(h×w×c),其中h和w表示輸入的高度和寬度,c表示輸入通道數(shù),分別用于生成n個特征圖的普通卷積運算如公式(1)所示:
其中Y∈R(h'×w'×n)是生成的n個通道,大小為h'×w'的特征圖,*為卷積運算,f∈R(c×k×k×n)是卷積核大小為k×k的卷積運算,b為偏置項。卷積過程中,由于存在的通道數(shù)和卷積核數(shù)量非常大,引起的FLOPs 數(shù)量也非常多,由卷積層生成的特征圖會存在很多冗余,并且一些特征圖十分相似,可以理解為部分特征圖是由一次卷積運算生成的,假設(shè)m個特征圖由一次運算生成,那么此時的卷積運算如公式(2)所示:
為了簡單起見,把偏置項b省略,這里f'∈R(c×k×k×m),且m?n,為了使輸出特征圖大小一致,進一步獲得所需要的n個特征圖,提出把Y'中的特征圖用一系列線性運算,生成s個幻影特征圖,線性運算如公式(3)所示:
其中y'i是Y'的第i個特征圖,Φi,j表示第j個線性運算,每個Y'中的特征圖都通過線性變換Φi,j得到GhostConv 輸出特征圖集合Y中的s個幻影特征圖。
使用GhostConv 構(gòu)建GhostBottleneck 模塊,其GhostBottleneck網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 GhostBottleneck 模塊網(wǎng)絡(luò)結(jié)構(gòu)
深度可分離卷積[16](Depthwise Separable Convolution,DSConv)由逐通道卷積(Depthwise Convolution,DWConv)和逐點卷積(Pointwise Convlution,PWConv)兩部分組成。與普通卷積操作不同,普通卷積的卷積核同時作用于每一個通道,而DWConv 的一個卷積核只負責一個通道,也就是一個通道只被一個卷積核卷積,因此卷積核數(shù)量也與上一個通道數(shù)相同;PW 的卷積核尺寸為1*1*M,M表示上一層的通道數(shù)量,上一層的MAP 也就在這里進行深度方向的加權(quán)組合,生成新的特征圖。圖5所示為深度可分離卷積的網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖5 深度可分離卷積網(wǎng)絡(luò)結(jié)構(gòu)
在口罩檢測模型的選擇上,將YOLOv5s 網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),根據(jù)1.1 節(jié)和1.2 節(jié)的內(nèi)容,采用GhostBottleneck 模塊替換YOLOv5s 原始特征提取網(wǎng)絡(luò)中的C3 模塊,并采用深度可分離卷積替換除輸入端卷積層外的其余卷積層,得到本文所采用的YOLOv5s-Ghost 網(wǎng)絡(luò),其主干網(wǎng)絡(luò)參數(shù)具體如表2所示。
表2 YOLOv5s-Ghost主干網(wǎng)絡(luò)參數(shù)
所采用的實驗平臺如表3所示。
表3 實驗平臺
實驗所采用的數(shù)據(jù)集來自于現(xiàn)場拍攝、人群圖像采集以及部分網(wǎng)絡(luò)收集,一共有2000 張包含佩戴口罩以及未佩戴口罩的圖像,并且部分圖像中包括多個檢測目標。將其中1200 張圖像作為訓練數(shù)據(jù)集,400張圖像作為測試數(shù)據(jù)集,400張圖像作為驗證數(shù)據(jù)集。全部數(shù)據(jù)格式均采用PASCAL VOC格式,部分數(shù)據(jù)集如圖6所示。
圖6 部分數(shù)據(jù)集樣本實例
在數(shù)據(jù)處理部分,本文使用Labellmg 軟件將戴口罩與未戴口罩的圖像分別進行標注,其中戴口罩的圖像標為mask,未戴口罩的圖像標為face。標簽收集到的數(shù)據(jù)用txt 文本格式表示,格式內(nèi)容為(class_id,x,y,w,h),其中class_id表示類別種類,本文共有兩類,因此class_id 取值0 或1。x,y,w,h都是歸一化后的位置參數(shù),以原圖像左上角為原點,x表示標簽錨框橫軸中心點與原圖像寬度的比值,y表示標簽錨框縱軸中心點與原圖像高度的比值,w表示標簽錨框?qū)挾扰c原圖像寬度的比值,h表示標簽錨框高度與原圖像高度的比值。
將數(shù)據(jù)集的圖像進行resize 操作,使得圖片輸入大小均設(shè)置為640×640,并且采用Mosaic方法進行數(shù)據(jù)增強。Mosaic 數(shù)據(jù)增強[17]的原理是將一張選定的圖片和隨機的三張圖片進行裁剪,然后將其拼接到一張圖上進行訓練。這樣做的好處是間接提高了圖片的batch_size,使得模型在訓練的時候不會過多依賴一次訓練所抓取的樣本數(shù)量,使得模型的魯棒性得到提高。
在模型的訓練過程中,使用損失函數(shù)Loss表示該模型性能的優(yōu)劣。Loss 越小,模型的檢測性能越好;Loss 越大,模型的檢測性能越差。本文實驗的epoch 為100,batch-size 設(shè)置為4,即將全部的數(shù)據(jù)樣本訓練100次,每一次訓練時再分為25 批次(batch)進行,每一批次數(shù)據(jù)量的大?。╞atch-size)為4。在模型中初始設(shè)置學習率為0.01。圖7展示了YOLOv5s-Ghost 模型在驗證集上定位損失、置信度損失和分類損失的損失函數(shù)變化情況。
圖7 YOLOv5s-Ghost模型的損失函數(shù)變化情況
圖7所示橫坐標為訓練的epoch 輪數(shù),單位為輪次;縱坐標依次為定位損失函數(shù)值、置信度損失函數(shù)值以及分類損失函數(shù)值,其函數(shù)值大小均在0~1 區(qū)間內(nèi)。可以看到,模型從開始到第10 epoch,損失函數(shù)曲線急劇下降,從第10 epoch 到第50 epoch 時緩慢下降,從第50 epoch 到第100 epoch 趨于穩(wěn)定。定位損失在0.045 時達到最優(yōu)值,置信度損失在0.033 時達到最優(yōu)值,分類損失在0.002時達到最優(yōu)值。
YOLOv5s-Ghost 模型的評價指標主要有三種,精度(Precision)、召回率(Recall)與均值平均精確度(mAP_0.5、和mAP_0.5:0.95)。
精度和召回率主要由TP、FP、TN、FN 計算得出。TP是指被模型預(yù)測為正類的正樣本(真正例),F(xiàn)P是指被模型預(yù)測為正類的負樣本(假正例),TN是指被模型預(yù)測為負類的負樣本(真反例),F(xiàn)N是指被模型預(yù)測為負類的正樣本(假反例)。根據(jù)本文的實驗指標,TP指預(yù)測為戴口罩實際上也是戴口罩的樣本,F(xiàn)P指預(yù)測為戴口罩實際上未戴口罩的樣本,TN指預(yù)測為未戴口罩實際上也是未帶口罩的樣本,F(xiàn)N指預(yù)測為未戴口罩實際上戴口罩的樣本。AP表示平均精度,它指某一類在所有召回率的可能取值下對全部精度取平均值,在圖像上表示的是PR曲線下的面積,衡量訓練好的模型在某一類別下的好壞;mAP即在所有類別下的AP取平均值,衡量模型在所有類別上的好壞。其中精度、召回率、平均精度和均值平均精度的計算方式依次如公式(5)、公式(6)、公式(7)、公式(8)所示。
而mAP_0.5 和mAP_0.5:0.95 指的是mAP 分別在置信度閾值為0.5 和從0.5 到0.95 的情況下的均值平均精度。置信度閾值即預(yù)測框與真實框之間的重疊程度,用IoU 表示。當IoU=1 時,表示預(yù)測框與真實框完全重合。
為了驗證本文所提出的YOLOv5s-Ghost 算法具有更好的識別效果,使用本數(shù)據(jù)集分別在YOLOv5s、YOLOv5l、YOLOv5s-MobileNetV3[18]、YOLOv5s-Ghost 四種不同的算法上進行對比實驗。其中MobileNetV3 是谷歌提出的一種輕量化網(wǎng)絡(luò)模型,此模型加入了注意力機制,并且將激活函數(shù)設(shè)為h-swish[x]。實驗結(jié)果分別用3.5節(jié)提到的指標來評價,其具體結(jié)果如表4所示。
表4 不同模型性能對比
由表4可以看出,當采用算法為YOLOv5l時,其精確度、召回率和mAP值會比YOLOv5s稍大,性能參數(shù)更高一些,但其浮點數(shù)是YOLOv5s模型的9.8倍,參數(shù)量為9.9倍,模型的體積大小也是9.6 倍,因此考慮到在資源有限的移動設(shè)備上實現(xiàn)模型的移植,YOLOv5s 無疑是更加優(yōu)秀、便捷的。
當確定采用YOLOv5s 模型后,對其主干網(wǎng)絡(luò)進行進一步優(yōu)化,通過實驗查看其優(yōu)化效果。本文通過把其主干網(wǎng)絡(luò)替換為GhostBottleneck 和MobileNetV3 進行測試。由表4所示:發(fā)現(xiàn)當主干網(wǎng)絡(luò)為GhostBottleneck時,其精確度相較于YOLOv5s 來說大致不變,召回率大約低0.5%,mAP值低0.1%;而主干網(wǎng)絡(luò)采用Mobile-NetV3 時,其精確度相較于YOLOv5s 大約低4.3%,召回率大約低4.2%,mAP值也是大約低2.9%。因此基于YOLOv5s 模型作比較,YOLOv5s-Ghost 比YOL0v5s-MobileNetV3 表現(xiàn)要更好一些。YOL0v5s-MobileNetV3 模型的計算量是YOLOv5s-Ghost 模型的1.43 倍,參數(shù)量是后者的2.19 倍,體積是后者的2.03 倍。因此在輕量化模型的部署上,YOLOv5s-Ghost 無疑是更好的選擇。
本文采用YOLOv5s 模型和YOLOv5s-Ghost模型的測試效果圖進行分析。通過圖8可以看出,在預(yù)測距采集設(shè)備較近位置的目標時,兩種模型的檢測準確率都在70%、80%左右;而在預(yù)測中等距離的目標時,YOLOv5s 模型的準確率在60%左右,而YOLOv5s-Ghost 模型的準確率卻在30%左右;在預(yù)測較遠距離的目標時,兩模型的準確率分別在30%以及40%左右。由此大致可以看出,YOLOv5s-Ghost 模型通過犧牲預(yù)測中遠位置時的準確度來換取了更加輕量化的體積大小。因此,提升中遠距離目標的預(yù)測準確度,是未來需要加以改進的方向。
圖8 YOLOv5s和YOLOv5s-Ghost測試效果圖
本文提出了一種輕量化YOLOv5算法的口罩檢測模型,通過降低算法深度,采用Ghost-Bottleneck模塊來替換原始的C3模塊,采用深度可分離卷積替換除輸入端卷積層外的其余卷積層,得到Y(jié)OLOv5s-Ghost 算法。實驗結(jié)果表明,本算法在大致保持評價指標不降低的情況下,大大減少了浮點數(shù)的計算以及模型的參數(shù)量,更是將模型大小縮小至原來的37.5%,使其可以更好地在資源有限的移動端設(shè)備上進行部署,基本滿足了現(xiàn)在用于口罩檢測的均值精度需求。而在檢測相對遠距離的目標時,未來還會繼續(xù)探索更加優(yōu)化的算法。