劉紫燕,袁 磊,朱明成,馬珊珊
(貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025)
近年來深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺領(lǐng)域取得突破性進(jìn)展,基于卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)的目標(biāo)檢測(cè)方法被廣泛應(yīng)用于軍事、醫(yī)學(xué)、農(nóng)業(yè)和民用等領(lǐng)域,如艦船檢測(cè)[1]、醫(yī)學(xué)圖像檢測(cè)[2]、遙感圖像檢測(cè)[3]和水下目標(biāo)檢測(cè)[4]等。隨著神經(jīng)網(wǎng)絡(luò)的檢測(cè)精度(mAP)不斷提高和網(wǎng)絡(luò)結(jié)構(gòu)愈加復(fù)雜,搭建網(wǎng)絡(luò)模型所需要的計(jì)算量和存儲(chǔ)資源也愈發(fā)龐大。在實(shí)際場(chǎng)景中部署的設(shè)備無法滿足模型所需的大量算力、內(nèi)存和能耗。因此,本文通過研究相關(guān)的目標(biāo)檢測(cè)算法和模型剪枝算法,針對(duì)實(shí)際場(chǎng)景中的目標(biāo)檢測(cè)算法構(gòu)建,提出一種融合通道和層剪枝的模型剪枝方法,以YOLOv4目標(biāo)檢測(cè)算法作為初始模型在口罩人臉數(shù)據(jù)集上進(jìn)行剪枝,并將剪枝后的模型與原模型以及YOLOv4的輕量化模型YOLOv4-tiny進(jìn)行對(duì)比實(shí)驗(yàn)。本文主要貢獻(xiàn)如下:
(1)構(gòu)建用于人臉口罩檢測(cè)的數(shù)據(jù)集,能更好地檢測(cè)口罩佩戴不完全的情況。
(2)提出一種融合通道和層剪枝的模型剪枝方法,可以顯著減少模型的參數(shù)量,便于實(shí)時(shí)部署。
(3)使用本文所提方法在構(gòu)建的人臉口罩檢測(cè)數(shù)據(jù)集上對(duì)YOLOv4網(wǎng)絡(luò)進(jìn)行訓(xùn)練和剪枝。實(shí)驗(yàn)結(jié)果表明,使用本文剪枝方法得到的模型在精度下降較少的情況下,較大程度減少了模型參數(shù)。同時(shí),極限剪枝后的模型在參數(shù)量少于YOLOv4-tiny的情況下,其檢測(cè)精度遠(yuǎn)遠(yuǎn)超過YOLOv4-tiny的。
為了解決實(shí)際場(chǎng)景中口罩人臉檢測(cè)算法的部署問題,本文采用模型剪枝方法壓縮目標(biāo)檢測(cè)模型,本文涉及目標(biāo)檢測(cè)技術(shù)和模型剪枝技術(shù)。
目標(biāo)檢測(cè)是卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用的重點(diǎn)領(lǐng)域,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)按照是否需要生成候選區(qū)域可以分為兩階段目標(biāo)檢測(cè)和單階段目標(biāo)檢測(cè)。兩階段目標(biāo)檢測(cè),如Faster R-CNN[5]采用RPN(Region Proposal Network)結(jié)構(gòu),通過生成候選區(qū)域和預(yù)測(cè)2個(gè)階段獲得了較高的檢測(cè)精度;CBNet(novel Composite Backbone Network architecture for object detection)[6]通過合并功能強(qiáng)大的基礎(chǔ)網(wǎng)絡(luò)(backbone),提出復(fù)合骨干網(wǎng)絡(luò)(Composite Backbone Network),以提高目標(biāo)檢測(cè)器的性能,但其需要極為龐大的計(jì)算量。單階段目標(biāo)檢測(cè),如SSD(Single Shot multiBox Detector)[7]采用多尺度特征圖用于檢測(cè),提升了檢測(cè)效果和速度,但對(duì)小尺寸的目標(biāo)識(shí)別效果較差;YOLOv3(You Only Look Once v3)[8]相比YOLOv2[9]加入了殘差模塊,并且網(wǎng)絡(luò)中沒有池化層和全連接層,構(gòu)建了新的基礎(chǔ)網(wǎng)絡(luò)Darknet-53,達(dá)到了速度與精度的較好平衡。
2020年4月Bochkovskiy等[10]提出了新的單階段目標(biāo)檢測(cè)模型YOLOv4,采用基礎(chǔ)網(wǎng)絡(luò)CSPDarknet-53提取特征后,經(jīng)過SPP+PAN(Spatial Pyramid Pooling+Path Aggregation Network)模塊后,輸入檢測(cè)層,進(jìn)行3個(gè)尺度的預(yù)測(cè),其在YOLOv3模型的基礎(chǔ)上進(jìn)行了多個(gè)方面的改進(jìn)和增強(qiáng)。在數(shù)據(jù)增強(qiáng)方面,YOLOv4采用了馬賽克(Mosaic)數(shù)據(jù)增強(qiáng)方法,混合4幅訓(xùn)練圖像和4個(gè)不同的上下文信息;在基礎(chǔ)網(wǎng)絡(luò)方面,YOLOv4采用CSPDarknet-53作為基礎(chǔ)網(wǎng)絡(luò),其感受野更大,檢測(cè)效果更好;在損失函數(shù)方面,YOLOv4采用CIOU Loss損失函數(shù),使網(wǎng)絡(luò)損失得到了更好的下降;同時(shí),YOLOv4采用了Mish激活函數(shù)和DropBlock正則化來提高檢測(cè)效果,在檢測(cè)層之前加入SPP和PAN模塊,使網(wǎng)絡(luò)能更好地獲取圖像特征。這一系列方法使得YOLOv4成為了精度和速度完美平衡的目標(biāo)檢測(cè)算法。因此,本文選取YOLOv4作為口罩人臉檢測(cè)的基礎(chǔ)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
人工神經(jīng)網(wǎng)絡(luò)中的剪枝受啟發(fā)于人腦中的突觸修剪(Synaptic Pruning)。突觸修剪即軸突和樹突完全衰退或死亡,是許多哺乳動(dòng)物幼年期和青春期的必經(jīng)過程。突觸修剪從人出生開始持續(xù)到20多歲。
Figure 1 YOLOv4 network structure
Figure 2 Sparse neural network
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2左側(cè)部分所示,下層的每一個(gè)神經(jīng)元與上層都有連接,這意味著需要進(jìn)行大量浮點(diǎn)相乘操作。理想情況下,我們不需將每個(gè)神經(jīng)元與上一層中所有神經(jīng)元連接,僅需連接有用的幾個(gè)神經(jīng)元,從而減少許多浮點(diǎn)相乘操作,稱之為“稀疏”網(wǎng)絡(luò)。稀疏網(wǎng)絡(luò)更容易被壓縮,可以在推理期間跳過參數(shù)為0的神經(jīng)元,以改善延遲情況。若根據(jù)網(wǎng)絡(luò)中神經(jīng)元的貢獻(xiàn)對(duì)其進(jìn)行排序,則可以刪除排序較后的神經(jīng)元,得到規(guī)模更小、速度更快的網(wǎng)絡(luò),這樣的網(wǎng)絡(luò)更便于在移動(dòng)設(shè)備上運(yùn)行。
近年來深度學(xué)習(xí)模型剪枝技術(shù)不斷發(fā)展,Li等[11]提出了基于量級(jí)的裁剪方式,可以有效降低模型的復(fù)雜度并且不會(huì)給模型的性能帶來很大的損失;Yang等[12]提出了一種基于能量效率的裁剪方式,從能量利用率上最大限度地裁剪模型;Molchanov等[13]將裁剪問題視作組合優(yōu)化問題,優(yōu)化目標(biāo)是被裁剪模型的代價(jià)函數(shù)損失最?。槐R海偉等[14]通過動(dòng)態(tài)尋找冗余濾波器來獲取最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu);彭冬亮等[15]通過閾值剪枝算法,將GoogLeNet的模型參數(shù)量壓縮為原有參數(shù)量的1/16;孫彥麗等[16]提出通過同時(shí)優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和參數(shù)對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮,使網(wǎng)絡(luò)模型尺寸變??;陳程軍等[17]提出基于激活-熵的分層迭代剪枝AE-LIP(Activation Entropy based Layer-wise Iterative Pruning)策略,在保證模型精度在可控范圍內(nèi)的同時(shí)減少模型的參數(shù)量;在SlimYOLOv3[18]中,將YOLOv3-SPP作為基礎(chǔ)網(wǎng)絡(luò)進(jìn)行稀疏訓(xùn)練和通道剪枝,YOLOv3中每個(gè)卷積層后的批量標(biāo)準(zhǔn)化層起到加速模型收斂、提高泛化能力的作用,批量標(biāo)準(zhǔn)化公式如式(1)所示:
(1)
稀疏訓(xùn)練的損失函數(shù)如式(2)所示:
(2)
其中,lossyolo為YOLOv4網(wǎng)絡(luò)反饋損失,α為權(quán)重系數(shù),Γ代表本次訓(xùn)練的所有通道,f(γ)=|γ|是懲罰因子,用來平衡2個(gè)損失,本文設(shè)置為0.000 1。
π=μλ+ν
(3)
其中,μ是自適應(yīng)率,用于調(diào)整λ在局部安全閾值中所占的比率;ν是最低局部安全閾值,用于防止過度剪枝。通過這種方法,網(wǎng)絡(luò)能夠自適應(yīng)調(diào)整各層的局部安全閾值π,在剪去網(wǎng)絡(luò)中更多無用通道的同時(shí)保留一定的安全通道,防止過度剪枝。
為了進(jìn)一步壓縮模型,本文還采用了層剪枝策略。YOLOv4由多個(gè)殘差模塊組成,而每個(gè)殘差模塊由2個(gè)CBM(Convolution,Batch normalization and Mish)模塊和1個(gè)殘差連接組成,如圖3所示。
Figure 3 Residual module and CBM module
每個(gè)CBM模塊由卷積層CONV、正則化BN和激活函數(shù)Mish組成,如果殘差模塊內(nèi)僅有1個(gè)卷積層被剪去,則會(huì)破壞網(wǎng)絡(luò)中殘差結(jié)構(gòu)的完整性。在前述通道剪枝的基礎(chǔ)上,本文結(jié)合γ值進(jìn)行層剪枝,對(duì)每個(gè)殘差模塊中的CBM模塊進(jìn)行評(píng)價(jià)得到各層的γ均值,然后根據(jù)各層的γ均值計(jì)算每個(gè)殘差模塊的γ均值并對(duì)其進(jìn)行排序,然后取γ均值最小的殘差模塊進(jìn)行剪枝,這里只考慮剪掉主干中的殘差模塊。
在實(shí)際的應(yīng)用場(chǎng)景中,僅從通道剪枝或?qū)蛹糁σ粋€(gè)方面對(duì)模型進(jìn)行壓縮,往往無法最大程度地壓縮模型中的無用信息,確保模型以最小的參數(shù)量和計(jì)算量獲得最高的檢測(cè)性價(jià)比,因此本文將融合改進(jìn)的通道和層剪枝,以盡可能地壓縮模型,使模型更便于在實(shí)際場(chǎng)景中部署。
融合通道和層模型剪枝的剪枝流程如圖4所示,首先對(duì)網(wǎng)絡(luò)進(jìn)行稀疏化訓(xùn)練,以獲得對(duì)應(yīng)的尺度因子,然后利用改進(jìn)的Slim通道剪枝得到剪枝后的模型,再判定該模型中的每一層是否需要層剪枝,得到最終剪枝后的模型。同時(shí),由于剪枝后的模型檢測(cè)精度下降較多,本文采用知識(shí)蒸餾的方法,利用訓(xùn)練好的精度較高、參數(shù)較多的大模型指導(dǎo)剪枝后的小模型進(jìn)行再訓(xùn)練微調(diào),提高剪枝后的模型的檢測(cè)精度,最終得到參數(shù)和計(jì)算量更小、更利于實(shí)際部署的模型。
Figure 4 Pruning process
本文從 WIDER FACE人臉數(shù)據(jù)集[19]中隨機(jī)抽取 3 800 幅人臉圖像,從MAFA數(shù)據(jù)集[20]中抽取4 000幅人臉戴口罩的圖像,對(duì)這些圖像進(jìn)行重新標(biāo)注和預(yù)處理,組成共7 800幅圖像的口罩人臉數(shù)據(jù)集。
本文在數(shù)據(jù)集構(gòu)建過程中發(fā)現(xiàn),部分人臉口罩佩戴不完全,或者遮擋的人臉會(huì)被誤檢為帶口罩的人臉,如圖5a和圖5b中的口罩佩戴不完全;圖5c和圖5d中未佩戴口罩,但是因?yàn)槿四槺徽趽醣徽`識(shí)別為佩戴口罩。
Figure 5 Erroneous detection of images
因此,本文隨機(jī)從已抽取的人臉數(shù)據(jù)集中抽取1 000幅圖像,通過讀取標(biāo)注的人臉坐標(biāo),在其人臉框內(nèi)添加不同顏色的遮擋,如圖6所示,并將這1 000幅處理過的圖像加入數(shù)據(jù)集中,重新劃分這個(gè)數(shù)據(jù)集,隨機(jī)抽取6 000幅圖像組成訓(xùn)練集,2 800幅圖像組成測(cè)試集。
Figure 6 Augmented images
為了使檢測(cè)的預(yù)設(shè)框?qū)θ四樋谡謾z測(cè)數(shù)據(jù)集的檢測(cè)精度更高,本文首先采用K-means聚類算法對(duì)訓(xùn)練集中的標(biāo)簽進(jìn)行聚類,得出最適合本文數(shù)據(jù)集的9個(gè)預(yù)設(shè)框尺寸,分別為(7,9),(13,17),(21,27),(32,43),(50,65),(70,98),(105,139),(142,185)和(185,256)。然后進(jìn)行常規(guī)訓(xùn)練,設(shè)置總訓(xùn)練批次epoch為300,采用余弦退火的學(xué)習(xí)率下降方式,使模型更好地學(xué)習(xí)數(shù)據(jù)集,達(dá)到更高的檢測(cè)精度。
在常規(guī)訓(xùn)練得到模型的最終權(quán)重模型后,將權(quán)重輸入模型中進(jìn)行稀疏化訓(xùn)練,設(shè)置尺度稀疏率為0.002,同樣進(jìn)行300批次稀疏化訓(xùn)練,聚合模型中的參數(shù),使模型便于剪枝。
對(duì)訓(xùn)練完成后的模型進(jìn)行通道剪枝,設(shè)置全局通道修剪百分比分別為0.5,0.6,0.7,0.8,每個(gè)卷積層通道保持百分比為10%,保證模型在剪枝的同時(shí)不會(huì)過度修剪。然后進(jìn)行層剪枝,對(duì)每一個(gè)殘差模塊進(jìn)行綜合評(píng)價(jià),設(shè)置剪掉的殘差結(jié)構(gòu)為4,8,12,16,20個(gè)。
最后微調(diào)剪枝后的模型,采用知識(shí)蒸餾的方法重新訓(xùn)練剪枝后的模型,設(shè)置訓(xùn)練總批次為100,提升模型的檢測(cè)精度。
通道剪枝時(shí)分別設(shè)置全局通道修剪百分比為0.5,0.6,0.7,0.8,輸入圖像尺寸為416×416,分別測(cè)試4種通道剪枝后的模型以找到最好的通道剪枝。由于經(jīng)稀疏化訓(xùn)練后的模型的檢測(cè)精度會(huì)下降,而模型剪枝是在稀疏化模型的基礎(chǔ)上進(jìn)行的,因此本文以稀疏化模型YOLOv4作為對(duì)比模型。測(cè)試結(jié)果如表1所示,模型1(Prune-0.5)剪枝率最低,參數(shù)量仍舊較大;模型2(Prune-0.6)的檢測(cè)精度下降較少;模型3(Prune-0.7)和模型4(Prune-0.8)的檢測(cè)精度下降太多,表明剪枝率過高,丟失了模型中的部分重要信息。模型2的檢測(cè)精度下降較少,同時(shí)其模型的GFLOPS、參數(shù)量和模型大小都較小。根據(jù)4個(gè)模型的檢測(cè)結(jié)果可知,在通道剪枝率設(shè)置為0.6~0.7時(shí),模型檢測(cè)精度下滑很大。這說明針對(duì)本文所用口罩?jǐn)?shù)據(jù)集和模型,在通道剪枝率為0.7時(shí)剪去了部分對(duì)口罩檢測(cè)十分重要的通道,造成模型檢測(cè)精度的嚴(yán)重下降。而在通道剪枝率為0.6時(shí),模型檢測(cè)精度下降不多,經(jīng)過再訓(xùn)練可以恢復(fù)精度,故本文選擇模型2(Prune-0.6)作為通道剪枝后的模型。
Table 1 Performance comparison of channel pruning models
同理,在層剪枝時(shí)分別設(shè)置剪去Shortcut結(jié)構(gòu)為4,8,12,16,20個(gè),以稀疏化訓(xùn)練后的YOLOv4模型作為剪枝基礎(chǔ)模型和對(duì)比模型。測(cè)試結(jié)果如表2所示,模型5(Shortcut-20)相比較模型4(Shortcut-16)的檢測(cè)精度下降太多,表明在層剪枝設(shè)置為剪枝20個(gè)時(shí),剪掉了模型中對(duì)口罩檢測(cè)十分重要的層,造成了檢測(cè)精度的嚴(yán)重下降;而模型4(Shortcut-16)仍舊具有一定的檢測(cè)精度,同時(shí)其GFLOPS和參數(shù)量較小,因此本文選擇模型4(Shortcut-16)作為層剪枝后的模型。
為了進(jìn)一步驗(yàn)證剪枝的有效性,本文通過微調(diào)使模型精度得到恢復(fù)后,將剪枝后的模型與YOLOv4和YOLOv4-tiny進(jìn)行對(duì)比測(cè)試實(shí)驗(yàn)。設(shè)置4個(gè)模型,模型1(Prune-best)為本文得到的最適合模型,即通道修剪百分比為0.6和層剪枝16個(gè)殘差模塊后的模型;考慮2種極端情況:一種是剪枝率最小,通道剪枝率設(shè)置為0.5和層剪枝8個(gè)殘差模塊的模型2(Prune-least);另一種是剪枝率很高,即剪去0.8通道和16個(gè)殘差模塊的模型3(Prune-most);以及極限剪枝狀態(tài)下的模型4(Prune-limit),即通道剪枝率設(shè)置為0.9和層剪枝20個(gè)殘差模塊。
測(cè)試結(jié)果如表3所示,由于模型1(Prune-best)是針對(duì)本文所用人臉口罩檢測(cè)數(shù)據(jù)集的,通過剪枝剪去了模型中對(duì)模型檢測(cè)精度影響不大的通道和卷積層,而盡可能保留了對(duì)檢測(cè)精度影響較大的通道和卷積層,因此進(jìn)行剪枝后的模型其GFLOPS遠(yuǎn)遠(yuǎn)小于YOLOv4的,僅有42.9,參數(shù)量僅有9.86 MB,模型大小也同樣僅有37.92 MB,而檢測(cè)精度達(dá)到了0.759,只下降了2.7%,同時(shí)其推理時(shí)間也減少了3.7 ms。對(duì)于模型2(Prune-least),由于其剪枝率最小,有較多的對(duì)模型檢測(cè)精度影響不大的層和通道仍然被保留,因此模型的參數(shù)量、大小等均沒有太大提升,但其檢測(cè)精度基本無損失;對(duì)于模型3(Prune-most),由于其剪枝率最大,因此其模型的參數(shù)量比YOLOv4的簡化模型YOLOv4-tiny少1.834 MB,其模型大小更是達(dá)到了11.69 MB,比YOLOv4-tiny的還小,但同樣因?yàn)榧糁β蔬^大,剪去了模型中較為重要的通道和卷積層,其檢測(cè)精度(mAP)比YOLOv4-tiny的高11.3%,屬于小而快、更容易部署的模型;最后的剪枝模型4(Prune-limit)更是以5.56 MB的模型大小和1.428 MB的參數(shù)量獲得了0.662的mAP。綜上所述,通過融合改進(jìn)通道和層剪枝方法,在2個(gè)方面對(duì)模型進(jìn)行剪枝,能在較大壓縮模型的參數(shù)量和大小的情況下使模型仍舊具有較高的檢測(cè)精度和更快的速度,使模型能更利于部署,檢測(cè)性價(jià)比更高,效果更好。
Table 2 Performance comparison of layer pruning models
Table 3 Performance comparison between the pruned model and the original model
圖7所示為模型Prune-best的檢測(cè)結(jié)果,可以看出檢測(cè)效果較好,能滿足人臉口罩檢測(cè)的要求,其中圖7a~圖7d為易誤檢圖像,Prune-best可以將其準(zhǔn)確檢測(cè)出;圖7e和圖7f為實(shí)際場(chǎng)景中的檢測(cè)效果;圖7g和圖7h為實(shí)際場(chǎng)景中醫(yī)護(hù)人員口罩檢測(cè)效果。
Figure 7 Testing results
本文采用一種基于人臉的數(shù)據(jù)擴(kuò)增方法構(gòu)建了用于人臉口罩檢測(cè)的數(shù)據(jù)集,采用改進(jìn)的通道和層剪枝的模型剪枝方法對(duì)YOLOv4進(jìn)行剪枝,實(shí)驗(yàn)結(jié)果表明,本文采用的剪枝方法能在保證精度的情況下,較大程度地壓縮模型,極限剪枝的模型達(dá)到了比YOLOv4-tiny更好的檢測(cè)效果,更少的參數(shù)量和更高的性價(jià)比,更便于部署。將模型實(shí)際部署于攝像頭、智能小車或無人機(jī)等硬件上,將是未來的研究方向。