葉子勛,張紅英
1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621010
2.西南科技大學(xué) 特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室,四川 綿陽621010
自2019年12月新型冠狀病毒肺炎(COVID-19)爆發(fā)以來,疫情迅速蔓延到世界各國,逐漸成為全球性瘟疫。不同程度地影響著人們的生活方式和社會經(jīng)濟(jì)的發(fā)展,人類的生命健康受到了嚴(yán)重的威脅。在外部環(huán)境不斷變化的情況下,我國的疫情控制和預(yù)防工作仍然面臨嚴(yán)峻挑戰(zhàn)。目前學(xué)術(shù)界認(rèn)為新型冠狀病主要通過呼吸道傳播和飛沫傳播,但是不能排除其通過氣溶膠傳播的可能。理論上,使用醫(yī)用外科口罩可以有效降低呼吸道暴露在病毒中的概率,它能阻止病原體通過飛沫傳播,具有雙向的隔離和保護(hù)作用。開發(fā)一套人臉口罩佩戴檢測系統(tǒng)對于公眾防范新型冠狀病毒感染,降低感染風(fēng)險(xiǎn)和維持人體基本健康具有重要意義[1]。
至今為止,目標(biāo)檢測領(lǐng)域有著很多優(yōu)秀的算法。它們在方法步驟上可以分為兩類,一類是以YOLO[2-5]系列和SSD[6]系列為代表的基于回歸的One-Stage算法,另一類是以Fast-CNN[7]和Faster-CNN[8]為代表的基于候選區(qū)域的Two-Stage算法。One-Stage算法檢測速度快,但檢測精度低。相反,Two-Stage具有更好的檢測精度,然而,由于其復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),其檢測速度較差。從YOLOv1到Y(jié)OLOv4[9],YOLO算法在經(jīng)過了數(shù)次的迭代之后,它逐漸彌補(bǔ)了許多缺陷,同時(shí)兼顧了準(zhǔn)確度和實(shí)時(shí)性能。在保持速度優(yōu)勢的前提下,還在檢測精度上有了明顯進(jìn)步。尤其是在微型目標(biāo)的檢測中表現(xiàn)得更加敏感。鄧黃瀟[10]提出了運(yùn)用遷移學(xué)習(xí)和Retina Net網(wǎng)絡(luò)對口罩佩戴檢測,驗(yàn)證集下mAP到達(dá)86.5%。肖俊杰[11]運(yùn)用了YOLOv3和YCrCb方法,口罩佩戴檢測AP達(dá)89%,同時(shí)正確佩戴識別AP達(dá)82.5%。王兵等[12]增加Max Moudle結(jié)構(gòu)和自下而上的多尺度融合提出了一種改進(jìn)的YOLOv4-tiny輕量化網(wǎng)絡(luò),驗(yàn)證集下mAP達(dá)96.2%。雖然他們在網(wǎng)絡(luò)模型上做出了一定的優(yōu)化,但是沒有考慮到更加復(fù)雜的應(yīng)用場景,如光照條件的不充足。張修寶等[13]提出了一種使用了特征融合和分割監(jiān)督的全天候自然場景下口罩識別算法,在自建數(shù)據(jù)集上取得了99.50%的識別準(zhǔn)確率。但其測試集數(shù)據(jù)基本為手機(jī)拍攝的網(wǎng)約車內(nèi)部環(huán)境,背景單調(diào)、乘客數(shù)量較少,沒有考慮到人流量較大的公共場合多人檢測應(yīng)用場景。
本文針對上述問題,提出了一種適應(yīng)暗光環(huán)境下多人檢測的改進(jìn)型輕量化YOLOv4-Lite人臉口罩識別算法。主要改進(jìn)如下:
(1)針對YOLOv4主干特征提取網(wǎng)絡(luò)參數(shù)量大和特征提取不充分的問題,使用了MobileNetv3輕量化網(wǎng)絡(luò)進(jìn)行替換,降低了模型運(yùn)算量。引入了自注意力機(jī)制,提升了檢測精度。
(2)針對YOLOv4的加強(qiáng)特征提取網(wǎng)絡(luò)模型卷積塊運(yùn)算量龐大的問題,提出了使用深度可分離卷積塊進(jìn)行替換,極大地提升了檢測速度。
(3)使用了SiLU激活函數(shù)代替MobileNetv3淺層網(wǎng)絡(luò)中的ReLU激活函數(shù),進(jìn)一步提升了算法的檢測精度,優(yōu)化了模型訓(xùn)練的收斂效果。
(4)數(shù)據(jù)增強(qiáng)方面,在馬賽克數(shù)據(jù)算法的基礎(chǔ)上,引入了圖片伽馬變換將圖片高亮度部分進(jìn)行非線性灰度值壓縮,減少圖片亮部細(xì)節(jié),以達(dá)到模擬暗光環(huán)境的目的,使得算法適應(yīng)更加復(fù)雜的現(xiàn)實(shí)場景。
改進(jìn)后的輕量化YOLOv4-Lite人臉口罩識別網(wǎng)絡(luò)主要包含了以下三部分:
(1)第一部分是由優(yōu)化后MobileNetv3構(gòu)成的主干特征提取模塊,這一部分的功能是對輸入圖片數(shù)據(jù)集進(jìn)行初步特征提取。經(jīng)初步特征提取后可以得到三個(gè)有效特征層。分別為52×52的大目標(biāo)特征層、26×26的中目標(biāo)特征層和13×13的小目標(biāo)特征層。
(2)第二部分是由SPPNet和PANet構(gòu)成的特征加強(qiáng)提取模塊,這一部分的功能是對經(jīng)過主干特征提取網(wǎng)絡(luò)提取到的三個(gè)初步特征層進(jìn)行特征融合,從而得到更有泛化性的三個(gè)優(yōu)化特征層。
(3)第三部分是由根據(jù)輸入特征進(jìn)行分類和回歸預(yù)測的YOLO-Head預(yù)測模塊。這一部分的功能是對經(jīng)特征加強(qiáng)提取后得到的優(yōu)化特征層使用3×3和1×1的卷積塊組合來獲得最終的預(yù)測結(jié)果。
整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,下面將對網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)和參數(shù)設(shè)置分模塊闡述。
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Overall network structure diagram
Howard等[14]在2017年提出了一種適應(yīng)移動和嵌入式視覺應(yīng)用的輕量級模型MobileNetv1。MobileNetv1采用了流線型的架構(gòu),使用深度可分離的卷積并引入了兩個(gè)簡單的全局超參數(shù),使得其可以有效地平衡實(shí)時(shí)性和準(zhǔn)確性。這些超參數(shù)允許模型構(gòu)建者根據(jù)問題的約束條件或是應(yīng)用場景量身打造適合自己的深度學(xué)習(xí)模型。MobileNet在短時(shí)間內(nèi)迅速衍生了MobileNetv1、MobileNetv2[15]、MobileNetv3[16]三個(gè)版本。作為MobileNet系列的新成員。MobileNetv3有兩個(gè)版本,v3-Large和v3-Small,適合不同的資源需求。在Imagenet分類任務(wù)中,v3-Small比MobileNetv2提高了約3.2%的準(zhǔn)確率和15%的檢測速度。v3-Large比MobileNetv2提高了約4.6%的準(zhǔn)確率,和5%的檢測速度。與使用MobileNetv2相比,它在COCO數(shù)據(jù)集上能達(dá)到同樣的精度,且速度提升了25%。
表1給出了MobileNetv3的整體結(jié)構(gòu)。此表共有5列:
(1)第一列Input Shape代表輸入特征層的尺度。如表1所示,經(jīng)過8個(gè)卷積層后,特征層的尺度變成了282×40,其中28代表了輸入特征層的長度和寬度,40代表通道數(shù)(Channel),將這一層標(biāo)記為out1傳入YOLO的加強(qiáng)特征提取網(wǎng)絡(luò)中,并分別將12層和14層的輸出標(biāo)記為out2、out3重復(fù)上述操作。
表1 MobileNetv3結(jié)構(gòu)Table 1 Structure of MobileNetv3
(2)第二列Operator代表卷積核的類型與大小,conv2d,n×n表示大小為n×n的一般卷積,n×n則表示使用了深度可分離卷積代替一般卷積。
(3)第三列SE(Squeeze and Excitation)用來表明此層網(wǎng)絡(luò)是否引入了輕量注意力機(jī)制。
(4)第四列AF(Activation Function)表示使用激活函數(shù)的類型,HS代表hard-swish激活函數(shù),RE代表ReLU6激活函數(shù)。
(5)第五列Stride代表每次卷積的步長,如果步長為2,下一個(gè)特征層的寬高尺寸將是上一個(gè)特征層的一半。
1.1.1 深度可分離卷積
MobileNetv3使用深度可分離卷積(DepthWise Separable Conv)來代替一般卷積塊,深度可分離卷積由一個(gè)空間濾波能力較強(qiáng)的深度卷積(DepthWise Conv)和一個(gè)起到線性組合作用的點(diǎn)卷積(PointWise Conv)組合而成。這樣做可以極大地減少模型的理論參數(shù)量(Params)和運(yùn)算量(Floating Point Operations,F(xiàn)LOPs)。
標(biāo)準(zhǔn)卷積層將win×hin×cin特征層in作為輸入,并生成wout×hout×cout輸出特征層out,其中hin、win分別對應(yīng)輸入特征層的高度和寬度,cin是輸入特征層的通道數(shù),hout、wout分別對應(yīng)輸出特征層的高度和寬度,cout為輸出特征層的通道數(shù)。
標(biāo)準(zhǔn)卷積塊使用的是大小為k×k×cin×cout的卷積核K,其中k是卷積核的寬、高,cin是輸入通道數(shù),cout是輸出通道數(shù)。標(biāo)準(zhǔn)卷積塊設(shè)置步長和填充均為1進(jìn)行一般卷積的計(jì)算方式如下:
參數(shù)量Params直接決定了深度學(xué)習(xí)模型的大小,可以等效為算法的空間復(fù)雜度。當(dāng)前先進(jìn)目標(biāo)檢測算法的Params量級分布在幾百萬到幾千萬之間。分別使用一般卷積和深度可分離卷積的參數(shù)量計(jì)算公式為:
FLOPs指的是深度學(xué)習(xí)模型在計(jì)算過程中的浮點(diǎn)數(shù)運(yùn)算量,可以等效為算法的時(shí)間復(fù)雜度,運(yùn)算量直接關(guān)系到目標(biāo)檢測算法的實(shí)時(shí)檢測性能。輕量化目標(biāo)檢測算法的運(yùn)算量約為幾十MB,一些復(fù)雜的深度學(xué)習(xí)模型運(yùn)算量單位甚至能達(dá)到GB。分別使用一般卷積和深度可分離卷積的運(yùn)算量計(jì)算公式為:
與標(biāo)準(zhǔn)卷積相對比,使用深度可分離卷積的運(yùn)算量減少比例可達(dá):
若采用3×3的卷積核進(jìn)行卷積運(yùn)算,則替換為深度可分離卷積后的運(yùn)算量將減少到原來的1/8至1/9。
標(biāo)準(zhǔn)卷積和深度可分離卷積的圖解如圖2所示。
圖2 深度可分離卷積圖示Fig.2 Graph of DepthWise Conv
1.1.2 殘差倒置結(jié)構(gòu)
殘差倒置結(jié)構(gòu)可以將輸入特征拓展到更高的維度,以增加在每個(gè)通道上的非線性變化。MobileNetv3有一個(gè)非常重要的特點(diǎn)就是使用了殘差倒置結(jié)構(gòu)(Inverted resblock),整個(gè)MobileNetv3都由殘差倒置結(jié)構(gòu)所組成。傳統(tǒng)的殘差網(wǎng)絡(luò)(Residual block)是block的中間通道數(shù)少,而兩端的通道數(shù)多。與之不同的是,殘差倒置結(jié)構(gòu)則是block的中間通道數(shù)多,而兩端的通道數(shù)少。MobileNetv3中的殘差倒置結(jié)構(gòu)如圖3所示。
見圖3的左半部分可知,MobileNetv3中的殘差倒置結(jié)構(gòu)可以分為三部分:
圖3 Inverted resblock圖示Fig.3 Graph of Inverted resblock
(1)第一部分首先對輸入特征層進(jìn)行1×1的一般卷積實(shí)現(xiàn)升維。然后使用批次標(biāo)準(zhǔn)化處理層(Batch Normalization Layer)對特征進(jìn)行歸一化處理。經(jīng)過大量實(shí)驗(yàn)數(shù)據(jù)的證明,在激活函數(shù)之前添加批次標(biāo)準(zhǔn)化處理可以有效地使損失函數(shù)更加平滑且有利于梯度下降。
(2)第二部分使用3×3的深度可分離卷積,然后接上批次標(biāo)準(zhǔn)化處理層和ReLU6激活函數(shù)。而傳統(tǒng)的殘差結(jié)構(gòu)在這一部分使用的是3×3的一般卷積。Mobile-Netv3設(shè)置升維超參數(shù)Channel=6,也就是在此處將通道數(shù)變成上一層的6倍。使得倒置殘差網(wǎng)絡(luò)看起來中間粗,兩頭細(xì)。
(3)第三部分使用1×1的一般卷積實(shí)現(xiàn)降維,然后接上批次標(biāo)準(zhǔn)化處理層。與傳統(tǒng)殘差網(wǎng)絡(luò)不同的是,倒置殘差結(jié)構(gòu)在這一部分去除了最后的ReLU6激活函數(shù)。
見圖3的右半部分可知,殘差倒置網(wǎng)絡(luò)使輸入部分與左半部分直接融合而作為殘差邊。
1.1.3 注意力機(jī)制
MobileNetv3將擠壓和激勵輕量級注意機(jī)制引入到了自己的線性瓶頸結(jié)構(gòu)中。與傳統(tǒng)殘差網(wǎng)絡(luò)(ResNet)不同的是,輕量級注意機(jī)制放置被放置在深度卷積(DepthWise Conv)之后,只有這樣才能最大限度地發(fā)揮其的作用。
擠壓和激勵輕量級注意機(jī)制如圖4所示,此輕量注意力機(jī)制通過兩個(gè)關(guān)鍵操作,擠壓(Squeeze)和激勵(Excitation)來獲取每個(gè)輸入特征通道的重要程度,然后使用重要程度去給每一個(gè)特征通道賦予一個(gè)權(quán)值,從而讓卷積網(wǎng)絡(luò)重點(diǎn)關(guān)注某些特征通道,即激勵對識別任務(wù)有用的特征通道,并抑制對識別任務(wù)無用的特征通道。
圖4 輕量注意力機(jī)制Fig.4 Squeeze and excitation attention
如圖4所示,輸入一個(gè)特征層X,其特征通道數(shù)為C1,經(jīng)過卷積等一般變換后得到一個(gè)通道數(shù)為C的特征層U。與傳統(tǒng)卷積網(wǎng)絡(luò)不同的是,接下來將通過三步引入輕量注意力機(jī)制。
(1)第一步為擠壓(Fsq),通過全局池化(Global Pooling),將每個(gè)通道的二維特征H×W壓縮為一個(gè)值,由于這個(gè)值是根據(jù)二維特征所有數(shù)值計(jì)算出來的,所以具有全局的感受野,擠壓操作之后的特征層通道數(shù)保持不變,其大小為1×1×C。
(2)第二步為激勵(Fex),給每個(gè)通道分別生成不同的權(quán)值,在圖4中使用不同的顏色代表這些權(quán)值,以使得這個(gè)過程更加直觀。在MobileNetv3中這一步還需要插入一個(gè)全連接層接上ReLU激活函數(shù)以及一個(gè)全連接層接上sigmoid激活函數(shù)。
(3)第三步為縮放(Fscale),將第二步得到的權(quán)值逐通道與特征層U相乘,最終得到帶注意力機(jī)制的特征層X2。
Hu等[17]經(jīng)過大量實(shí)驗(yàn)證明,在分類任務(wù)中使用此輕量化注意力機(jī)制都會帶來一定的性能提升。此外,MobileNetv3提出一種新的激活函數(shù)swish。該函數(shù)具有無上界、有下界、平滑、非單調(diào)的特點(diǎn),在網(wǎng)絡(luò)模型深層部分的表現(xiàn)上優(yōu)于ReLU激活函數(shù)。swish激活函數(shù)的計(jì)算公式為:
但是swish計(jì)算消耗巨大,于是使用其近似函數(shù)hard-swish代替。swish和hard-swish激活函數(shù)如圖5所示,hard-swish的計(jì)算公式為:
圖5 swish和hard-swish激活函數(shù)圖示Fig.5 Graph of swish and hard-swish
在此近似函數(shù)中使用ReLU6,有兩個(gè)原因:
(1)大量實(shí)驗(yàn)數(shù)據(jù)證明使用ReLU6或ReLU激活函數(shù)在分類實(shí)驗(yàn)中在準(zhǔn)確性沒有明顯差異,但是從軟件部署角度來看,近乎所有的硬件和軟件框架都提供了ReLU6的優(yōu)化實(shí)現(xiàn)。
(2)其次使用ReLU6激活函數(shù)可以消除使用sigmoid的不同近似激活函數(shù)而引起的潛在精確度損失風(fēng)險(xiǎn)。實(shí)驗(yàn)也表明,用基于ReLU6實(shí)現(xiàn)的hard-swish激活函數(shù)可以使模型的推理速度增加近15%。
1.1.4優(yōu)化后的MobileNetv3
MobileNetv3淺層部分網(wǎng)絡(luò)使用ReLU作為激活函數(shù)。其計(jì)算公式如下:
與sigmoid和tanh系列的激活函數(shù)相比,ReLU具有以下特點(diǎn):
(1)使用梯度下降法時(shí),模型的收斂速度更快。
(2)不同于sigmoid和tanh系列激活函數(shù)需要進(jìn)行指數(shù)運(yùn)算,ReLU只需提供一個(gè)閾值就能繪制出,因此模型的運(yùn)算量(FLOPs)得以降低。
(3)當(dāng)輸入值為負(fù)時(shí),ReLU輸出始終為0,其一階導(dǎo)數(shù)也始終為0,這樣會導(dǎo)致神經(jīng)元不能更新參數(shù),這種現(xiàn)象叫做“Dead Neuron”。
本文優(yōu)化后的MobileNetv3特征提取網(wǎng)絡(luò)采用SiLU(Sigmoid Weighted Liner Unit)代替ReLU成為淺層部分網(wǎng)絡(luò)的激活函數(shù)。SiLU和其一階導(dǎo)數(shù)的計(jì)算公式如下:
在輸入值大于0時(shí),SiLU與ReLU激活函數(shù)大致相等(詳見圖6)。在輸入值小于0時(shí),激活函數(shù)趨近于0。與ReLU(以及其他常用的激活函數(shù),如sigmoid和tanh)不同,SiLU激活函數(shù)并不是單調(diào)增加的(詳見圖7),它有一個(gè)全局最小值約為?0.28。SiLU的另一個(gè)特點(diǎn)是它具有更好的穩(wěn)定性,Elfwing等[18]在實(shí)驗(yàn)中證明了這一點(diǎn):深層的卷積神經(jīng)網(wǎng)絡(luò)往往會遇到梯度爆炸(Gradient exploding problem)的問題,當(dāng)權(quán)值過大時(shí),在激活函數(shù)的作用下,大于1的值將不斷相乘,梯度在迭代中呈指數(shù)級增長,最終導(dǎo)致梯度爆炸。在導(dǎo)數(shù)為零的情況下,全局最小值可起到“軟底”的作用,它可以抑制大權(quán)值的更新,從而避免梯度爆炸。
圖6 ReLU和SiLU激活函數(shù)圖示Fig.6 Graph of ReLU and SiLU
圖7 ReLU和SiLU激活函數(shù)一階導(dǎo)數(shù)圖示Fig.7 Graph of ReLU-grad and SiLU-grad
表2給出了改進(jìn)后的MobileNetv3結(jié)構(gòu),在第四列AF中,用SI代替RE,其中SI表示使用SiLU激活函數(shù)。
表2 改進(jìn)MobileNetv3結(jié)構(gòu)Table 2 Structure of improved MobileNetv3
1.2.1 SPPNet
由于后續(xù)的YOLO-Head預(yù)測網(wǎng)絡(luò)模塊需要輸入固定大小的矩陣。當(dāng)神經(jīng)卷積網(wǎng)絡(luò)需要預(yù)測形態(tài)大小各異的圖片數(shù)據(jù)集時(shí),直接經(jīng)過裁剪或縮放等一系列操作會導(dǎo)致圖片幾何變形,從而丟失一些原有信息,預(yù)測網(wǎng)絡(luò)的置信度也會因此受到影響。SPPNet(Spatial Pyramid Pooling Network)可以使輸入圖片不經(jīng)過直接裁剪或縮放也可以得到固定大小的輸出,其結(jié)構(gòu)如圖8所示,實(shí)現(xiàn)流程如下:
圖8 SPPNet結(jié)構(gòu)圖Fig.8 SPPNet structure diagram
(1)首先對MobileNetv3特征提取網(wǎng)絡(luò)中的out3特征層連續(xù)進(jìn)行三次Conv2D_BN_Leaky卷積。
(2)將經(jīng)過三次卷積之后的特征分別進(jìn)行四個(gè)不同尺度的最大池化(Max pooling)處理,四種池化核的大小分別是5×5、9×9、13×13和1×1。其中1×1池化就是對輸入特征不進(jìn)行任何處理。
(3)將經(jīng)過四種不同尺度最大池化后的特征層進(jìn)行特征融合。然后再次進(jìn)行三次Conv2D_BN_Leaky卷積,并將最終特征層輸入到后續(xù)的PANet特征提取金字塔中。
1.2.2 PANet
PANet是實(shí)例分割算法(Instance segmentation algorithm)中的一種,圖9為本文優(yōu)化后的PANet網(wǎng)絡(luò)結(jié)構(gòu),與YOLOv4原版PANet不同的是,其輸入特征層的尺寸有所變化。圖9中(a)部分是一般的特征金字塔結(jié)構(gòu),在完成特征金字塔從下到上的特征提取后,還需要實(shí)現(xiàn)(b)部分從上到下的特征提取,這就使得PANet在結(jié)構(gòu)上類似于一個(gè)金字塔和倒置金字塔的并列組合。
圖9 優(yōu)化后PANet結(jié)構(gòu)圖Fig.9 Improved PANet structure diagram
本文將經(jīng)過主干特征提取網(wǎng)絡(luò)得到的out1、out2和經(jīng)過SPPNet加強(qiáng)特征提取得到的特征層接入PANet結(jié)構(gòu)中,這樣可以更有效地增加感受野。
YOLO-Head利用從PANet結(jié)構(gòu)獲取到多尺度的特征進(jìn)行回歸與分類預(yù)測。在這部分中,PANet分別提供了三個(gè)特征層,尺寸分別為76×76×256、38×38×512、19×19×1 024對應(yīng)中、中下和下層預(yù)測框。YOLO-Head輸出矩陣尺度分別是76×76×255、38×38×255、19×19×255。第三個(gè)維度是255,是因?yàn)樗梢圆鸱譃?×(80+5)。80是COCO數(shù)據(jù)集中的樣本分類數(shù),5又可以拆分為1+1+1+1+1,分別表示預(yù)測框的x軸偏移量、y軸偏移量、高度H和寬度W、置信度、分類結(jié)果。當(dāng)有了預(yù)測結(jié)果之后,就能直接在原圖片上繪制預(yù)測框。
預(yù)測出的三種輸出尺度矩陣還需要結(jié)果解碼,原圖片會被分解為76×76、38×38、19×19大小的矩陣。每個(gè)矩陣點(diǎn)加上它對應(yīng)的x軸偏移量和y軸偏移量就可以得到預(yù)測框的中心,然后再利用先驗(yàn)框和預(yù)測高度H、寬度W計(jì)算出預(yù)測框的長寬并最終在原圖像上繪制出預(yù)測框。
為進(jìn)一步減少網(wǎng)絡(luò)參數(shù)量,本文使用深度可分離卷積代替YOLOv4加強(qiáng)特征提取網(wǎng)絡(luò)中用到的所有一般卷積。表3為各種網(wǎng)絡(luò)模型參數(shù)量的對比。第一列代表修改后的網(wǎng)絡(luò)模型名稱,其中YOLOv4代表沒有做任何修改的原版網(wǎng)絡(luò);YOLOv4-MobileNetv3表示只使用MobileNetv3代替YOLOv4主干特征提取網(wǎng)絡(luò)但沒有使用深度可分離卷積的模型。YOLOv4-Lite為本文優(yōu)化的模型。具體改動如下:
表3 網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)量對比Table 3 Comparison of network structure parameter
(1)將3×3一般卷積替換為深度可分離卷積。此3×3一般卷積位于PANet網(wǎng)絡(luò)中的三次卷積塊和五次卷積塊中。此部分替換前的參數(shù)量為4 718 592,替換后變?yōu)閰?shù)量為4 608的深度卷積加上參數(shù)量為524 288的點(diǎn)卷積,運(yùn)算量縮減為之前的1/8到1/9之間(具體計(jì)算過程見1.1.1小節(jié))。
(2)將預(yù)測網(wǎng)絡(luò)YOLO-Head中的3×3一般卷積替換為深度可分離卷積。
(3)將兩次下采樣中的3×3一般卷積替換為深度可分離卷積。
替換后的YOLOv4-Lite網(wǎng)絡(luò)模型參數(shù)量由39 989 933減少到11 729 069,可見網(wǎng)絡(luò)優(yōu)化效果明顯。
第二列Params直接決定了網(wǎng)絡(luò)模型的大小。也影響推斷時(shí)對內(nèi)存的占用量。第三列理論模型大小是指網(wǎng)絡(luò)模型的占用內(nèi)存的大小。從表3可以看出,YOLOv4占用內(nèi)存244 MB,而本文優(yōu)化后的輕量化網(wǎng)絡(luò)YOLOv4-Lite只需44 MB,大大節(jié)約了內(nèi)存空間。
YOLOv4提出了參考CutMix數(shù)據(jù)增強(qiáng)方式而誕生的Mosaic數(shù)據(jù)增強(qiáng)方式,它們在理論上有一定的相似。CutMix數(shù)據(jù)增強(qiáng)每次只讀取兩張圖片。而Mosaic數(shù)據(jù)增強(qiáng)方式利用了四張圖片。其步驟如下:
(1)依次讀取四張圖片。
(2)通過翻轉(zhuǎn)、縮放和改變色域的方式更改四張圖片,并將它們分別放置在四個(gè)方位。
(3)進(jìn)行圖片和標(biāo)注框的結(jié)合。
在實(shí)驗(yàn)中發(fā)現(xiàn),僅使用馬賽克數(shù)據(jù)增強(qiáng)雖然提升了檢測精度,但模型在檢測暗光環(huán)境圖片時(shí)的表現(xiàn)差強(qiáng)人意。于是本文在馬賽克數(shù)據(jù)增強(qiáng)方式的基礎(chǔ)上提出了增加圖片伽馬變換的新數(shù)據(jù)增強(qiáng)方式。圖片伽馬變換是圖片灰度變化領(lǐng)域中的一種非線性變化方式,其為:
其中,c為灰度縮放系數(shù),通常情況下取1,r作為輸入圖像的灰度值,其取值范圍為[]0,1。γ則是灰度縮放因子,其控制了灰度變換的縮放程度。當(dāng)γ<1時(shí),圖像灰度級較高的部分會被壓縮,灰度級較低的部分會被拉伸,從而加強(qiáng)圖像的低灰度區(qū)的對比度;當(dāng)γ>1時(shí),圖像灰度級較高的部分會被拉伸,灰度級較低的部分會被壓縮,從而加強(qiáng)圖像的高灰度區(qū)的對比度;當(dāng)γ=1時(shí),圖像灰度區(qū)不會發(fā)生改變。本文γ從1、2.2、4.0中隨機(jī)取值用于模擬暗光環(huán)境下的人臉口罩佩戴圖片,以達(dá)到數(shù)據(jù)增強(qiáng)的目的。圖10為使用了伽馬變換的前后效果對比,圖11為本文提出的數(shù)據(jù)增強(qiáng)流程演示。
圖10 伽馬變換效果Fig.10 Demonstration of Gamma transformation
圖11 數(shù)據(jù)增強(qiáng)流程Fig.11 Data enhancement process
過擬合和概率校正(Probability Calibration)是深度學(xué)習(xí)模型訓(xùn)練中的兩個(gè)常見問題。過擬合指的是深度學(xué)習(xí)模型在訓(xùn)練集上表現(xiàn)優(yōu)異,但是在沒有參與訓(xùn)練的測試集上卻表現(xiàn)不理想,魯棒性太差,拿到新樣本后沒有辦法去準(zhǔn)確地預(yù)測。模型訓(xùn)練過程中,神經(jīng)網(wǎng)絡(luò)將促進(jìn)自身向正確標(biāo)注和錯(cuò)誤標(biāo)注之間差異最大的方向?qū)W習(xí)。在數(shù)據(jù)集樣本太少或者樣本特征提取不足的情況下,網(wǎng)絡(luò)會很容易過擬合。
標(biāo)簽平滑(Label Smoothing)采用如下思路解決這個(gè)問題:在訓(xùn)練時(shí)即假設(shè)標(biāo)簽可能存在錯(cuò)誤,避免過度相信訓(xùn)練樣本的標(biāo)簽。以二分類樣本為例,訓(xùn)練樣本為
(xi,yi),其中yi為樣本標(biāo)簽。當(dāng)采用交叉熵來描述損失函數(shù)時(shí),對于每一個(gè)樣本i,損失函數(shù)為:
經(jīng)過標(biāo)簽隨機(jī)化之后,新標(biāo)簽有λ的概率與原標(biāo)簽不同,有1-λ的概率與原標(biāo)簽相同。采用隨機(jī)化新標(biāo)簽的損失函數(shù)有1-λ的概率與損失函數(shù)Li相同,有λ的概率為:
將公式(14)、(15)進(jìn)行加權(quán)平均后可以得到新公式:
當(dāng)輸入標(biāo)簽為0時(shí),用一個(gè)比較小的近似數(shù)λ進(jìn)行替換;當(dāng)輸入標(biāo)簽為1時(shí),用近似數(shù)1-λ進(jìn)行替換。
由公式可知,在交叉熵模型中,因?yàn)槟P蜁粩嘣黾訖?quán)值w,使得預(yù)測輸出盡可能逼近0或1而不能達(dá)到。如果將標(biāo)簽0和1分別替換為λ和1-λ,當(dāng)模型的輸出達(dá)到這個(gè)值之后就不會繼續(xù)優(yōu)化,從而達(dá)到標(biāo)簽平滑的效果。
目前的深度學(xué)習(xí)模型都采用梯度下降算法來優(yōu)化模型的收斂效果,隨著epoch的不斷增加,可以調(diào)整學(xué)習(xí)率來優(yōu)化損失函數(shù)Loss的下降效果。Hutter等[19]提出了帶熱重啟的隨機(jī)梯度下降算法(Stochastic Gradient Descent with warm Restarts,SGDR)。梯度下降過程中有許多局部最優(yōu)解,但是如何才能在其中找到全局最優(yōu)解?SGDR算法可以在學(xué)習(xí)率不斷下降的過程中周期性重啟,以達(dá)到學(xué)習(xí)率突然跳躍性的增加從而實(shí)現(xiàn)躍出局部最優(yōu)解,更加逼近全局最優(yōu)解的目的。本文使用了PyTorch框架提供的余弦退火衰減算法,可以使學(xué)習(xí)率以余弦函數(shù)進(jìn)行周期性變化。設(shè)置學(xué)習(xí)率的最小值為10-5,且每10個(gè)epoch變化一次。當(dāng)總epoch為50時(shí),學(xué)習(xí)率的變化曲線如圖12所示。
圖12 學(xué)習(xí)率變化曲線Fig.12 Learning rate curve
實(shí)驗(yàn)基于第2章的數(shù)據(jù)預(yù)處理,以PyTorch深度學(xué)習(xí)框架為平臺,設(shè)置初始學(xué)習(xí)率為10-3,最小批次為16,總epoch為75。計(jì)算機(jī)操作系統(tǒng)為Win10,CPU為AMD Ryzen 5 3600 4.2 GHz;內(nèi)存為12 GB;GPU為NVIDIA GeForce GTX1060 6G;PyTorch版本為1.7.0;Cuda版本為10.1;Python版本為3.8.5。
實(shí)驗(yàn)數(shù)據(jù)集來源于網(wǎng)絡(luò)公開的MAFA Dataset和Wider Face Dataset。Wider Face Dataset是目前 人 臉識別模型使用最多的檢測數(shù)據(jù)集,圖片數(shù)約為30 000張,其中大約有400 000個(gè)人臉。Ge等[20]制作了MAFA Dataset遮擋人臉數(shù)據(jù)集,包含約30 000張圖片,其中約有35 000個(gè)被遮擋人臉,一部分遮擋物是口罩、圍巾、手等。本實(shí)驗(yàn)從這兩個(gè)公開數(shù)據(jù)集取出共7 957張圖片,其中人臉圖片有3 894張,人臉遮擋圖片有4 063張。分別使用face(人臉)、face_mask(佩戴口罩人臉)進(jìn)行樣本標(biāo)注,部分圖像如圖13所示。按比例將數(shù)據(jù)隨機(jī)劃分為驗(yàn)證集和測試集,測試集共737張圖片,其中共有標(biāo)注人臉框691個(gè),口罩遮擋人臉框389個(gè),其分布如圖14所示。
圖13 部分?jǐn)?shù)據(jù)集展示Fig.13 Partial data set display
圖14 測試集標(biāo)注分布Fig.14 Test set distribution
在口罩佩戴檢測數(shù)據(jù)集中,如圖15所示。分別在關(guān)閉和開啟學(xué)習(xí)率余弦退火衰減時(shí),觀察訓(xùn)練過程中損失函數(shù)下降曲線。在前50個(gè)epoch,未使用學(xué)習(xí)率余弦退火衰減算法的Loss曲線收斂更快。在50至75個(gè)epoch范圍內(nèi),使用了學(xué)習(xí)率余弦退火衰減算法的Loss曲線以余弦函數(shù)下降并能達(dá)到更低值,說明可以有效地跳出局部最優(yōu)解。雖然曲線在不斷波動,但整體上已經(jīng)沒有下降趨勢,此時(shí)可認(rèn)為Loss已經(jīng)收斂。
圖15 學(xué)習(xí)率余弦退火衰減效果Fig.15 Effect of cosine annealing LR
消融實(shí)驗(yàn)分別對YOLOv4復(fù)現(xiàn)網(wǎng)絡(luò)和本文所提出的三種修改的輕量化網(wǎng)絡(luò)做出對比驗(yàn)證,以此證明本文網(wǎng)絡(luò)設(shè)計(jì)所帶來的性能提升。消融實(shí)驗(yàn)的設(shè)計(jì)如表4所示,所有實(shí)驗(yàn)中均使用了馬賽克數(shù)據(jù)增強(qiáng)、標(biāo)簽平滑和學(xué)習(xí)率余弦退火衰減算法。模型訓(xùn)練過程中的Loss損失函數(shù)下降曲線如圖16所示。
圖16 消融實(shí)驗(yàn)的Loss訓(xùn)練曲線Fig.16 Loss training curve of ablation experiment
如表4所示,第一列的曲線代表各種模型的編號,①代表了YOLOv4復(fù)現(xiàn)網(wǎng)絡(luò);②代表使用了MobileNetv3作為主干特征提取網(wǎng)絡(luò)的初步優(yōu)化模型;③代表使用了MobileNetv3作為主干特征提取和使用深度可分離卷積替換加強(qiáng)特征提取網(wǎng)絡(luò)中一般卷積的YOLOv4-Lite輕量化網(wǎng)絡(luò)模型;④代表在③網(wǎng)絡(luò)模型的基礎(chǔ)上使用SiLU激活函數(shù)替換MobileNetv3淺層網(wǎng)絡(luò)中的ReLU激活函數(shù)得到的進(jìn)一步優(yōu)化網(wǎng)絡(luò)模型。
表4 消融實(shí)驗(yàn)設(shè)計(jì)Table 4 Design of ablation experiment
如圖16所示,由于使用了余弦退火衰減算法,Loss曲線以余弦函數(shù)下降,在50個(gè)eopch之后整體呈波浪形,但最低值不再下降,此時(shí)可認(rèn)為已經(jīng)收斂。
如表5所示,分別以平均精度均值(mAP)、召回率(Recall)、精確率(Precision)、召回率和精確率的加權(quán)值(F1)和模型每秒可識別的圖像數(shù)量(FPS)指標(biāo)對四種模型進(jìn)行性能評測。
表5 消融實(shí)驗(yàn)結(jié)果Table 5 Result of ablation experiment
召回率和精確率的加權(quán)值(F1)綜合考量了Recall和Precision指標(biāo),其計(jì)算公式為:
為了評測模型的實(shí)時(shí)性,本實(shí)驗(yàn)使四種模型對同一張高清圖(分辨率為1 280×720)進(jìn)行預(yù)測,并計(jì)算預(yù)測所消耗的時(shí)間,最終通過此時(shí)間計(jì)算出每秒可識別出的圖像數(shù)量(FPS),當(dāng)FPS大于24時(shí),人眼認(rèn)為是實(shí)時(shí)的,F(xiàn)PS參數(shù)可以準(zhǔn)確地衡量算法的檢測速度,且FPS值越大,檢測速度越快。
對比①與②兩種模型在FPS上的表現(xiàn)可知,模型②的FPS從12.65增加到20.37,提升了61%,說明檢測速度的進(jìn)步十分明顯,但FPS仍然沒有達(dá)到24,還不能滿足實(shí)時(shí)性的要求;觀察mAP可知,模型②的mAP從95.08%下降到94.04%,降低了1.04個(gè)百分點(diǎn),說明精度有所降低;犧牲了很小的精確度,卻帶來了檢測速度的極大提升,在人臉口罩佩戴檢測的應(yīng)用場景中是可以接受的。從理論上分析:YOLOv4中的主干特征提取網(wǎng)絡(luò)CSPDarkNet53包含了53層卷積網(wǎng)絡(luò),模型內(nèi)存占用高達(dá)244 MB,計(jì)算量龐大。替換為MobileNetv3之后模型占用152 MB,因此檢測速率有所提升。由于MobileNetv3中引入了擠壓和激勵注意力機(jī)制,替換之后的模型精確度沒有受到太大影響。
對比②與③兩種模型在FPS上的表現(xiàn)可知,模型③的FPS從20.37增加到35.47,提升了74%,F(xiàn)PS達(dá)到了35,滿足了實(shí)時(shí)性的要求;觀察mAP可知,模型②的mAP從94.04%降低到93.35%,下降了0.69個(gè)百分點(diǎn),說明精度有略微的下降;分析Recall和Precision可以看出,模型②精度下降主要是因?yàn)轭A(yù)測框漏檢或誤檢的概率有所提升。從理論上分析:使用深度可分離卷積代替一般卷積使得模型內(nèi)存占用從152 MB下降到44 MB,因此檢測效率得到進(jìn)一步提升。
對比③與④兩種模型可知,后者的mAP從93.35%增加到93.40%,提升了0.05個(gè)百分點(diǎn),說明精度有所提高。加權(quán)衡量指標(biāo)F1也有一定的提升,F(xiàn)PS值幾乎一致,說明檢測速度沒有受到影響。從理論上分析,這是因?yàn)椋篠iLU具有如ReLU的正值特性,一樣可以緩解梯度消失問題,而且SiLU還有負(fù)值,可以讓激活單元輸出的均值更接近0,其方差也更接近單位方差1,進(jìn)一步達(dá)到正則化效果,從而提升模型收斂速度,且SiLU的負(fù)值計(jì)算使用的是線性函數(shù),對輸入變換或噪聲的魯棒性更好。
根據(jù)網(wǎng)絡(luò)模型大小和檢測精度兩方面綜合考慮,模型④滿足了口罩佩戴任務(wù)實(shí)時(shí)檢測的性能要求,同時(shí)兼顧了檢測精度,在所有優(yōu)化模型中的綜合表現(xiàn)最好。
在后續(xù)的檢測算法實(shí)際應(yīng)用中發(fā)現(xiàn),本文模型和YOLOv4復(fù)現(xiàn)模型在暗光環(huán)境下的檢測精度降低明顯,通常表現(xiàn)為預(yù)測框漏檢或誤檢。為解決此問題,本文提出了在模型④基礎(chǔ)上使用了基于馬賽克數(shù)據(jù)增強(qiáng)算法和伽馬變換算法(詳見2.2節(jié)伽馬變換)后得到的模型⑤。為了驗(yàn)證模型⑤在全天候環(huán)境下的性能表現(xiàn),本文采集了963張全天候自然環(huán)境圖片(包括一部分暗光環(huán)境圖片)作為測試集,其中共有標(biāo)注人臉框757個(gè),口罩遮擋人臉框512個(gè)。全天候環(huán)境測試集部分圖像如圖17所示,包含了夜間、室內(nèi)燈光、室外陰影、室外強(qiáng)光環(huán)境等,背景更加復(fù)雜。在對比實(shí)驗(yàn)中,分別測試了YOLOv4復(fù)現(xiàn)網(wǎng)絡(luò)模型①和本文提出的模型⑤在全天候環(huán)境下的各方面性能。兩種模型的Loss訓(xùn)練曲線如圖18所示。
圖17 全天候環(huán)境數(shù)據(jù)集展示Fig.17 All weather environmental data set display
圖18 全天候環(huán)境下Loss訓(xùn)練曲線Fig.18 Loss training curve under all weather conditions
觀察表6可知,模型⑤在全天候環(huán)境下的mAP從88.60%增加到90.18%,提升了1.58個(gè)百分點(diǎn),加權(quán)衡量指標(biāo)F1分別從0.84、0.95提升至0.85、0.97。檢測精度得到了明顯的提升;FPS從12.65增加到35.45,提升了約180%,檢測速度得到了極大的提升。綜上所述,模型⑤在光照、背景復(fù)雜的環(huán)境(如夜間、室內(nèi)燈光、室外陰影、室外強(qiáng)光)下仍能取得一個(gè)較好的檢測精度和速度,說明本模型對環(huán)境變化不敏感,具有一定的穩(wěn)定性。本文模型還可以檢測出一些手部遮擋人臉,并將其標(biāo)注為face類別如圖19所示。為了更加直觀地體現(xiàn)本文模型在各種光照環(huán)境下檢測效果的表現(xiàn),分別取用模型①、⑤對暗光環(huán)境圖片進(jìn)行檢測對比。結(jié)果如圖20所示,可見模型⑤在暗光環(huán)境下有效降低了漏檢率、誤檢率,仍有很好的檢測效果。除此以外,為了體現(xiàn)本文模型在全天候場景下的檢測效果,取多張不同光照環(huán)境且背景復(fù)雜的圖片進(jìn)行測試,結(jié)果如圖21所示。
圖20 真實(shí)圖片檢測效果對比Fig.20 Real picture detection effect comparison
圖21 全天候場景檢測效果Fig.21 All weather scene detection effect
表6 全天候環(huán)境實(shí)驗(yàn)結(jié)果Table 6 All weather environment results
圖19 其他遮擋物檢測效果Fig.19 Detection effect of other obstructions
本次實(shí)驗(yàn)的結(jié)果可知,本文提出的輕量化口罩檢測網(wǎng)絡(luò)在檢測速度方面提升很大,滿足了實(shí)時(shí)檢測的性能要求,同時(shí)兼顧了檢測精度,考慮到了現(xiàn)實(shí)應(yīng)用場景下更加復(fù)雜的光照環(huán)境,可以避免其他遮擋物對結(jié)果的影響,能良好地完成口罩佩戴實(shí)時(shí)檢測任務(wù)。
本文針對YOLOv4目標(biāo)檢測網(wǎng)絡(luò)提出了一種輕量化改進(jìn)方式。使用適用于嵌入式和移動平臺的Mobile-Netv3網(wǎng)絡(luò)代替CSPDarkNet53作為主干特征提取網(wǎng)絡(luò),降低了參數(shù)量,在此基礎(chǔ)上使用深度可分離卷積代替加強(qiáng)特征提取網(wǎng)絡(luò)中的一般卷積,進(jìn)一步降低參數(shù)量,使用SiLU激活函數(shù)代替MobileNetv3淺層網(wǎng)絡(luò)部分的ReLU激活函數(shù),提升了檢測精度,優(yōu)化了Mosaic數(shù)據(jù)增強(qiáng)方法,提升模型在現(xiàn)實(shí)復(fù)雜環(huán)境下的泛化能力,引入了標(biāo)簽平滑和學(xué)習(xí)率余弦退火算法,增強(qiáng)了模型的收斂效果。實(shí)驗(yàn)結(jié)果表明,在口罩檢測任務(wù)中,本文模型在犧牲了1.68%mAP的情況下,將檢測速度(FPS)提升了約180%,檢測速度的提升使得本文模型更好地勝任人臉口罩佩戴檢測任務(wù)。但本文模型仍有改進(jìn)的空間,如何使輕量化網(wǎng)絡(luò)在保證精度不降低的情況下達(dá)到如此的檢測速度,并適用于更豐富的檢測場景是接下來待解決的問題。