梅菠萍,趙 皓,2,陽 珊,李林靜,張 靜,2,張 華
1.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621010
2.中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,合肥 230026
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺領(lǐng)域中重要的研究方向之一,廣泛應(yīng)用于行人檢測(cè)[1]、自動(dòng)駕駛[2]、工業(yè)自動(dòng)化檢測(cè)[3]等場(chǎng)景。傳統(tǒng)的目標(biāo)檢測(cè)方法主要基于手工特征與分類器[4-6],這類方法一般利用圖像邊緣、關(guān)鍵點(diǎn)等淺層特征進(jìn)行稠密滑動(dòng)窗口檢測(cè),由于手工特征的設(shè)計(jì)受限于設(shè)計(jì)者的經(jīng)驗(yàn)且計(jì)算復(fù)雜度高,開發(fā)周期長,可擴(kuò)展性低,不適宜用于多類別目標(biāo)檢測(cè)任務(wù)。近年來,得益于神經(jīng)網(wǎng)絡(luò)技術(shù)發(fā)展與計(jì)算能力提升,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法被廣泛應(yīng)用于工業(yè)自動(dòng)檢測(cè)場(chǎng)景。劉信君等[7]改進(jìn)RCF網(wǎng)絡(luò)進(jìn)行邊緣檢測(cè),并提出BP神經(jīng)網(wǎng)絡(luò)擬合復(fù)雜非線性映射實(shí)現(xiàn)坐標(biāo)映射。雷毅[8]基于深度學(xué)習(xí)算法進(jìn)行工件目標(biāo)的定位。洪奔奔[9]基于深度學(xué)習(xí)模型進(jìn)行扁平工件的識(shí)別、定位與缺陷檢測(cè)。基于深度學(xué)習(xí)的工件檢測(cè)相比于傳統(tǒng)方法更具任務(wù)擴(kuò)展能力和環(huán)境適應(yīng)能力,但深度學(xué)習(xí)模型通常參數(shù)量巨大,模型訓(xùn)練與推理時(shí)間較長,且對(duì)于硬件設(shè)備有較高的要求。
當(dāng)前主流的目標(biāo)檢測(cè)方法根據(jù)檢測(cè)流程主要分為以YOLO[10]、SSD[11]為代表的基于回歸分析的一階段檢測(cè)算法和以R-CNN[12]系列為代表的基于候選區(qū)域的兩階段檢測(cè)算法。兩階段檢測(cè)算法流程分為候選區(qū)域的選取和候選區(qū)域的分類、回歸兩部分。而一階段檢測(cè)算法直接對(duì)分類及回歸進(jìn)行預(yù)測(cè),降低了模型復(fù)雜度,提高了檢測(cè)效率。根據(jù)是否生成候選區(qū)域又可將目標(biāo)檢測(cè)算法分為Anchor-based方法[11-12]和Anchor-free方法[13-14],主要差別在于是否通過預(yù)定義錨框進(jìn)行目標(biāo)回歸與分類。通常前者相對(duì)后者檢測(cè)精度更高,但犧牲了檢測(cè)速度。Anchor-based檢測(cè)算法在特征圖像素點(diǎn)上預(yù)設(shè)不同尺度和比例的錨框以適應(yīng)不同形狀的目標(biāo),然而這種稠密采樣方式所獲取錨框集合中包含大量背景區(qū)域子集,因此造成了一階段檢測(cè)算法中的正負(fù)樣本不平衡問題。文獻(xiàn)[15]提出了FocalLoss算法,應(yīng)用于密集場(chǎng)景下的目標(biāo)檢測(cè),解決了正負(fù)樣本不平衡的問題。但在算法后續(xù)計(jì)算損失及推理過程中,對(duì)大量錨框的篩選,增加了算法的時(shí)間復(fù)雜度,降低了檢測(cè)速度。
為了保證檢測(cè)精度的同時(shí)降低檢測(cè)模型復(fù)雜度,本文基于一階段Anchor-based目標(biāo)檢測(cè)算法RetinaNet[15]進(jìn)行改進(jìn),提出一種輕量化的實(shí)時(shí)目標(biāo)檢測(cè)模型,以滿足工業(yè)環(huán)境下多類別工件的實(shí)時(shí)準(zhǔn)確檢測(cè)。主要改進(jìn)方面為:設(shè)計(jì)錨框引導(dǎo)采樣算法,基于特征金字塔輸出特征層類激活圖,生成模型感興趣區(qū)域掩碼,對(duì)錨框進(jìn)行預(yù)篩選,減少后處理階段的錨框總數(shù),降低算法時(shí)間復(fù)雜度;采用MobileNet-V2[16]替換RetinaNet檢測(cè)模型中ResNet50[17]特征提取網(wǎng)絡(luò),減少模型整體參數(shù)量;引入FocalLoss的改進(jìn)版損失函數(shù)GFocalLossV2[18]代替FocalLoss算法,實(shí)現(xiàn)分類及回歸的聯(lián)合表示,改善模型檢測(cè)性能。
RetinaNet作為典型Anchor-based的一階段目標(biāo)檢測(cè)算法,具有如下特點(diǎn):
(1)ResNet采用殘差結(jié)構(gòu),在輸入輸出之間建立了一條關(guān)聯(lián)通道,解決網(wǎng)絡(luò)層數(shù)過深導(dǎo)致的梯度消失問題,越深的神經(jīng)網(wǎng)絡(luò)具有更強(qiáng)的特征表達(dá)能力,但也增加了大量的參數(shù)。
(2)采用FPN(feature pyramid network)[19]模塊,輸出5層不同strides的特征圖,根據(jù)Anchor機(jī)制,在5層特征圖上生成大量的候選錨框,實(shí)現(xiàn)對(duì)各尺度目標(biāo)的檢測(cè)。
(3)提出FocalLoss損失函數(shù),改善了Anchor-based檢測(cè)算法普遍面臨的正負(fù)樣本不平衡問題,檢測(cè)精度得到了較大的提升。
隨著卷積網(wǎng)絡(luò)層數(shù)加深,模型參數(shù)呈指數(shù)級(jí)增加。Anchor-based的目標(biāo)檢測(cè)模型通過錨框稠密采樣進(jìn)一步加劇模型計(jì)算復(fù)雜度。為實(shí)現(xiàn)模型輕量化與實(shí)時(shí)檢測(cè),本文提出一種基于RetinaNet框架的輕量化實(shí)時(shí)目標(biāo)檢測(cè)模型GS-RetinaNet(guided-sampling RetinaNet)。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,輸入圖片I,通過MobileNet-V2骨干網(wǎng)絡(luò)提取I的卷積特征C,獲取其中的C3、C4、C5特征層構(gòu)建P3~P7的特征金字塔(Pj表示不同金字塔層級(jí),j表示特征圖相對(duì)于輸入圖像的步長)。特征金字塔輸出特征層P3~P7分別生成對(duì)應(yīng)感興趣區(qū)域掩碼,并送入檢測(cè)分支進(jìn)行分類及回歸預(yù)測(cè)。Anchor-based采樣機(jī)制基于特征層P3~P7,以每個(gè)特征點(diǎn)為中心生成多種比例及尺寸的錨框進(jìn)行采樣。在檢測(cè)分支中,利用引導(dǎo)采樣掩碼對(duì)錨框預(yù)篩選,并根據(jù)分類及回歸結(jié)果對(duì)篩選后的錨框進(jìn)行調(diào)整得到最終預(yù)測(cè)結(jié)果。
MobileNet[20]作為典型的輕量化神經(jīng)網(wǎng)絡(luò)模型,可部署到移動(dòng)設(shè)備和嵌入式設(shè)備。其基本單元是深度可分離卷積(depth wise separable convolution),通過PW(point wise convolution)和DW(depth wise convolution)順序組合為特征提取網(wǎng)絡(luò)。MobileNet-V2在此基礎(chǔ)上結(jié)合殘差結(jié)構(gòu)的思想,提出了倒殘差模塊,解決模型過深導(dǎo)致的梯度消失問題,將檢測(cè)模型設(shè)計(jì)得更深,提高了檢測(cè)精度。
2.1.1 深度可分離卷積
深度可分離卷積包括DW和PW兩部分,結(jié)構(gòu)如圖2(a)所示,DW采用3×3卷積核,卷積核個(gè)數(shù)與輸入特征圖通道數(shù)一致,即每個(gè)輸入通道單獨(dú)對(duì)應(yīng)一個(gè)卷積核,PW采用1×1卷積核,用于將DW卷積后的特征圖進(jìn)行融合與維度變換。而常規(guī)3×3卷積輸入通道共享一個(gè)卷積核,卷積核個(gè)數(shù)與輸出通道數(shù)一致,如圖2(b)所示。
深度可分離卷積將常規(guī)卷積操作拆解為兩部分,大幅度減少了卷積計(jì)算量。設(shè)輸入特征圖尺寸為W×H,卷積核尺寸為Wk×Hk,P、S分別表示padding和strides,那么輸出特征圖尺寸Wout×Hout計(jì)算方式如下:
因此,單通道輸入與單個(gè)卷積核的計(jì)算量為:
假設(shè)輸入通道為Nin,輸出通道為Nout,那么對(duì)于DW與PW,計(jì)算量表達(dá)式如下:
整理深度可分離卷積總計(jì)算量如下:
相對(duì)的,標(biāo)準(zhǔn)卷積計(jì)算量C表達(dá)式如下:
2.1.2 倒殘差模塊
在ResNet殘差結(jié)構(gòu)模塊中,第一個(gè)1×1卷積層對(duì)輸入特征進(jìn)行降維,然后在低維空間通過3×3卷積提取特征,最后再經(jīng)過1×1卷積層對(duì)輸出進(jìn)行維度擴(kuò)張,保證輸入輸出通道數(shù)一致,進(jìn)行shortcut。而倒殘差模塊是指在殘差模塊中對(duì)輸入維度先進(jìn)行擴(kuò)增,在高維空間進(jìn)行特征提取,輸出時(shí)再降低維度,同時(shí)最后一層1×1卷積層輸出不經(jīng)過ReLu激活函數(shù),以免破壞特征。如圖3所示,倒殘差模塊有兩種結(jié)構(gòu),DW卷積的步長為1,則在輸入輸出之間添加關(guān)聯(lián)通道。
RetinaNet采用稠密采樣方式,在每個(gè)特征點(diǎn)位置生成3種尺度、3種比例組合的9個(gè)錨框,這種稠密采樣的方式生成的錨框絕大部分為只包含背景區(qū)域的冗余樣本。針對(duì)冗余樣本的相關(guān)計(jì)算造成計(jì)算量損失。
為了減少冗余樣本數(shù)量,降低模型計(jì)算量,提高檢測(cè)效率,本文提出引導(dǎo)采樣機(jī)制,如圖4所示,對(duì)特征圖像素點(diǎn)進(jìn)行閾值分割,生成特征點(diǎn)位置對(duì)應(yīng)掩碼,過濾掉背景區(qū)域生成的錨框,使模型僅對(duì)重點(diǎn)區(qū)域進(jìn)行預(yù)測(cè)。模板生成算法如算法1所示,首先計(jì)算每個(gè)FPN輸出特征圖通道維度的均值,并歸一化,生成相應(yīng)的類激活圖,對(duì)比類激活圖特征點(diǎn)值與均值大小,生成值為[-1,1]的模板,利用該模板對(duì)錨框進(jìn)行篩選,保留模板值為1對(duì)應(yīng)特征點(diǎn)位置的錨框。
算法1使用金字塔特征層生成掩碼過濾錨框
輸入:P={P3,P4,…,P7},P是金字塔輸出特征層集合;A是生成的錨框。
輸出:M,生成的模板;A′,篩選過后剩余的錨框。
1.P←?
2.forpinPdo
3.p′←mean(p,dim=1)
4.p″←p′/max(p′)
5.m←where(p″>mean(p″))
6.M←m
7.end for
8.returnM
9.A′←A·M
FocalLoss旨在解決一階段檢測(cè)算法中訓(xùn)練時(shí)的前景和背景即正樣本、負(fù)樣本類別極度不平衡問題。FocalLoss(FL)算法如下所示:
其中,y∈{0,1}表示二分類任務(wù)類別標(biāo)簽,p∈[0,1]表示類別預(yù)測(cè)結(jié)果y=1的概率。-lgpt表示標(biāo)準(zhǔn)的交叉熵?fù)p失(cross entropy loss function)。FocalLoss在標(biāo)準(zhǔn)交叉熵?fù)p失函數(shù)基礎(chǔ)上乘以調(diào)節(jié)因子α與(1-pt)γ,參數(shù)α用于控制正負(fù)樣本對(duì)總損失的共享權(quán)重,當(dāng)減小α即降低負(fù)樣本權(quán)重;(1-pt)γ用于在訓(xùn)練過程中降低易分類樣本的權(quán)重,使模型更關(guān)注難分類樣本。
GFocalLoss將FocalLoss從離散標(biāo)簽擴(kuò)展到連續(xù)標(biāo)簽中得到相應(yīng)的QFL(quality FocalLoss)損失函數(shù),使用定位框質(zhì)量估計(jì)得分作為分類分支的類別置信度,實(shí)現(xiàn)分類得分和質(zhì)量估計(jì)的聯(lián)合表示,并設(shè)計(jì)DFL(distribution FocalLoss)損失函數(shù)回歸一個(gè)分布來對(duì)框進(jìn)行建模。GFocalLoss能夠?qū)崿F(xiàn)對(duì)邊界框的分布建模,對(duì)于清晰的邊界,分布比較尖銳,模糊不清的邊界分布平緩。基于這種特性,GFocalLossV2采用可學(xué)習(xí)到的檢測(cè)框分布特征指導(dǎo)定位質(zhì)量估計(jì)并對(duì)分類預(yù)測(cè)進(jìn)行加權(quán),如圖5所示。
3.1.1 工件數(shù)據(jù)集
本文自建多類別工件數(shù)據(jù)集,選擇25類具有不同尺寸、比例的工件,設(shè)置一張圖片中包含的工件種類及工件總數(shù),采集不同復(fù)雜度的300張圖片,利用LabelImg數(shù)據(jù)標(biāo)注軟件對(duì)圖片進(jìn)行Pascal VOC格式的標(biāo)注。
為了適應(yīng)生產(chǎn)環(huán)境中的光照、灰塵等圖像質(zhì)量影響因素,對(duì)數(shù)據(jù)集進(jìn)行特性增廣,包括照度變化、添加噪聲、顏色抖動(dòng)。最終數(shù)據(jù)集擴(kuò)展至2 100張圖像,增強(qiáng)后效果展示如圖6所示,第1列為原圖,第2至4列為增強(qiáng)算法隨機(jī)組合得到的增強(qiáng)圖片。
3.1.2 訓(xùn)練細(xì)節(jié)
全部實(shí)驗(yàn)均基于pytorch架構(gòu),在兩塊12 GB顯存的NVIDIA GeForce GTX TiTan X GPU工作站進(jìn)行訓(xùn)練。兩個(gè)數(shù)據(jù)集皆選擇隨機(jī)梯度下降(stochastic gradient descent,SGD)作為優(yōu)化器,訓(xùn)練batch_size=24,迭代次數(shù)epoch=30,初始學(xué)習(xí)率learn_rate=0.001,權(quán)重衰減為0.005,動(dòng)量momentum=0.9,每張圖像的尺寸大小resize為短邊大于480,長邊小于640的范圍。
3.1.3 評(píng)估標(biāo)準(zhǔn)
本文模型使用mAP(mean average precision)作為模型性能評(píng)價(jià)指標(biāo),計(jì)算公式如下:
其中,C表示數(shù)據(jù)集類別數(shù),c表示某一類別,P表示精度(precision),R表示召回率(recall),P與R計(jì)算公式如下:
其中,TP表示正樣本分類為正樣本,F(xiàn)P表示負(fù)樣本分類為正樣本,F(xiàn)N表示正樣本分類為負(fù)樣本,那么TP+FP即表示分類為正樣本總數(shù),TP+FN表示所有正樣本數(shù)。
通過計(jì)算IOU(intersection over union)并設(shè)定閾值來判斷分類結(jié)果是否正確,IOU計(jì)算公式如下:
其中,A、B分別表示標(biāo)注框和模型預(yù)測(cè)框。
3.2.1 對(duì)比實(shí)驗(yàn)
實(shí)驗(yàn)對(duì)比了6種典型的深度目標(biāo)檢測(cè)算法在Pascal VOC2007和自建工件數(shù)據(jù)集上的檢測(cè)效果,包括YOLOV3[21]、SSD等 表現(xiàn)較好的檢測(cè)模型及ATSS[22]、EfficientDet[23]等近年提出的檢測(cè)模型。由表1和表2可以看出,本文改進(jìn)RetinaNet模型,在VOC2007和WP數(shù)據(jù)集上分別可達(dá)到80.5%、99.5%的平均檢測(cè)精度,檢測(cè)速度分別提升到38.3 FPS,39.8 FPS,平均比RetinaNet快大約13 FPS,極大提升了檢測(cè)速度,這表明本文方法能有效地提升深度學(xué)習(xí)目標(biāo)檢測(cè)模型的檢測(cè)性能。
表1 Pascal數(shù)據(jù)集對(duì)比實(shí)驗(yàn)Table 1 Comparison experiment on Pascal dataset
表2 工件數(shù)據(jù)集對(duì)比實(shí)驗(yàn)Table 2 Comparison experiment on WP dataset
3.2.2 消融實(shí)驗(yàn)
本文對(duì)改進(jìn)模塊及算法在Pascal VOC2007測(cè)試集上分別進(jìn)行了消融實(shí)驗(yàn)驗(yàn)證。如表3所示,利用MobileNet-V2作為骨干網(wǎng)絡(luò)提取特征,有效減少了參數(shù)量和計(jì)算量,采用MobileNet-V2的模型參數(shù)量僅有1.1×107,相對(duì)于采用ResNet50減少了約2/3,且計(jì)算量僅4.72×109FLOPs(浮點(diǎn)運(yùn)算數(shù))。同時(shí)使用GFocalLossV2損失函數(shù)替換FocalLoss損失函數(shù)后,檢測(cè)精度如表3所示,達(dá)到了82.5%的平均檢測(cè)精度。
表3 模塊消融實(shí)驗(yàn)Table 3 Ablation experiment
圖7展示了模板的生成過程,前5行為Pascal數(shù)據(jù)集樣本,后5行為WP數(shù)據(jù)集樣本;第1列為原圖,第2、3、4、5列為特征金字塔輸出特征圖可視化,第6、7、8、9列分別為對(duì)應(yīng)金字塔特征層生成的引導(dǎo)采樣模板。
為驗(yàn)證引導(dǎo)采樣對(duì)減少冗余樣本的有效性,如圖8所示,選擇金字塔特征層P4對(duì)引導(dǎo)采樣后的錨框進(jìn)行可視化,第1行為WP數(shù)據(jù)集樣本,第2行為無引導(dǎo)采樣時(shí)的錨框,第3行為引導(dǎo)采樣后的錨框,可看出經(jīng)過引導(dǎo)采樣后,冗余錨框數(shù)量明顯減少。
如圖9所示,在兩個(gè)數(shù)據(jù)集上,對(duì)使用引導(dǎo)采樣前后的正負(fù)樣本數(shù)量進(jìn)行統(tǒng)計(jì)對(duì)比。由圖可知,經(jīng)過引導(dǎo)采樣后負(fù)樣本數(shù)量減少一半,正樣本數(shù)量基本不變。并且由表3可以看出,采用引導(dǎo)采樣算法后,相對(duì)于原始的RetinaNet算法,模型計(jì)算量降低了13.4%。
最終,使用本文模型對(duì)工件數(shù)據(jù)集部分測(cè)試圖片檢測(cè)結(jié)果如圖10所示,可以看到,本文模型能夠?qū)崿F(xiàn)對(duì)多類別工件的準(zhǔn)確檢測(cè)。
本文對(duì)流水線多類別工件檢測(cè)進(jìn)行了研究,在RetinaNet檢測(cè)模型的基礎(chǔ)上,采用MobileNet-V2作為骨干網(wǎng)絡(luò),并設(shè)計(jì)了引導(dǎo)采樣算法對(duì)錨框進(jìn)行預(yù)篩選。在Pascal VOC0712和自制工件數(shù)據(jù)集WP上驗(yàn)證了模型的有效性,改進(jìn)模塊實(shí)驗(yàn)說明了引導(dǎo)采樣算法的引入明顯提升了模型的檢測(cè)速度。同時(shí)根據(jù)表1、表2中所示兩個(gè)數(shù)據(jù)集的檢測(cè)精度變化,及圖9中所示的兩個(gè)數(shù)據(jù)集引導(dǎo)采樣前后負(fù)樣本量變化可以看出,引導(dǎo)采樣算法對(duì)于簡單背景情況下的檢測(cè)效果有更大的提升。在后續(xù)的研究中,將進(jìn)一步優(yōu)化模型結(jié)構(gòu),提升檢測(cè)精度,同時(shí)解決重疊情況下的目標(biāo)檢測(cè)問題。