陳宇軒,張本亭,濮約剛,張明慶
(中國航天科工集團(tuán)第二研究院 七〇六所,北京 100854)
在本世紀(jì)初,隨著深度學(xué)習(xí)回歸大眾視野并成為研究人員關(guān)注的重點(diǎn),目標(biāo)檢測(cè)算法也得到進(jìn)一步發(fā)展。近些年來,隨著深度學(xué)習(xí)的進(jìn)一步發(fā)展,學(xué)術(shù)界中的神經(jīng)網(wǎng)絡(luò)層數(shù)越來越深,參數(shù)量越來越大,模型性能也在不斷提升,需要的算力和內(nèi)存資源也越來越大,對(duì)計(jì)算設(shè)備的需求也與日俱增。需求是巨大的生產(chǎn)力,目前的GPU和AI芯片也如雨后春筍一般飛速發(fā)展。目標(biāo)檢測(cè)網(wǎng)絡(luò)也享受到了計(jì)算設(shè)備發(fā)展的紅利,在模型訓(xùn)練逐漸使用更深層的特征提取網(wǎng)絡(luò)來提取特征圖片特征,檢測(cè)精度一次又一次取得突破。在工業(yè)界,大量目標(biāo)檢測(cè)算法被應(yīng)用于自動(dòng)駕駛、人臉識(shí)別等領(lǐng)域,將目標(biāo)檢測(cè)算法部署在移動(dòng)端往往受到算力和內(nèi)存空間的限制。在實(shí)際部署時(shí),使用精度高的大模型部署在移動(dòng)端平臺(tái)并不能達(dá)到實(shí)時(shí)檢測(cè)的要求,而使用檢測(cè)速度快的小模型往往檢測(cè)精度不夠。為了解決這一對(duì)巨大的矛盾,使得檢測(cè)算法可以平穩(wěn)落地部署,誕生了許多行之有效的方法,知識(shí)蒸餾便是其中之一。Hinton提出像教師和學(xué)生一樣使用大網(wǎng)絡(luò)輸出的概率分布作為教師網(wǎng)絡(luò)來指導(dǎo)小網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使得學(xué)生網(wǎng)絡(luò)的輸出分布最終接近于教師網(wǎng)絡(luò),這種方法被命名為知識(shí)蒸餾。隨后出現(xiàn)了大量關(guān)于知識(shí)蒸餾策略的研究,盡管知識(shí)蒸餾已經(jīng)在分類等領(lǐng)域取得巨大的成就,但對(duì)于目標(biāo)檢測(cè)任務(wù)的蒸餾始終是一個(gè)難點(diǎn)。其原因在于目標(biāo)檢測(cè)相比于分類任務(wù)更為復(fù)雜,需要傳遞更多的知識(shí),此外目標(biāo)檢測(cè)中的背景類會(huì)對(duì)檢測(cè)結(jié)果產(chǎn)生一定影響。目前針對(duì)目標(biāo)檢測(cè)的知識(shí)蒸餾方法,為了避免背景類對(duì)蒸餾造成影響,通常會(huì)采用過濾背景進(jìn)行蒸餾的方法[1],或者將背景和前景區(qū)域分開進(jìn)行蒸餾[2];然而,最近的研究表明,物體的背景類中也包含重要的信息,僅對(duì)前景進(jìn)行蒸餾可能會(huì)忽視掉這些信息,因此在蒸餾時(shí)不應(yīng)簡(jiǎn)單的將背景與前景分開[3]。為此,本文提出一種基于掩膜的目標(biāo)檢測(cè)模型蒸餾方法,該方法同時(shí)對(duì)背景類和前景類展開蒸餾,通過掩膜給不同的區(qū)域賦予相應(yīng)的權(quán)重,對(duì)于權(quán)重更大的位置在蒸餾時(shí)給予更大的關(guān)注。
在目標(biāo)檢測(cè)上的知識(shí)蒸餾需要克服更多的困難。首先,目標(biāo)檢測(cè)任務(wù)相比于其它任務(wù)本就更加困難,除了需要獲得目標(biāo)的類別,還需要了解目標(biāo)的定位,這就意味著教師網(wǎng)絡(luò)需要傳遞更多的知識(shí)給學(xué)生網(wǎng)絡(luò);此外,在目標(biāo)檢測(cè)中,除了物體類還包括背景類,教師網(wǎng)絡(luò)中所傳遞的背景知識(shí)和前景知識(shí)如果不加以區(qū)分,學(xué)生網(wǎng)絡(luò)會(huì)從中得出誤導(dǎo)性的結(jié)論。
Guobin Chen等在目標(biāo)檢測(cè)中應(yīng)用知識(shí)蒸餾壓縮模型,使用二階段目標(biāo)檢測(cè)器Faster R-CNN對(duì)學(xué)生網(wǎng)絡(luò)進(jìn)行蒸餾,提出了用新的Loss來處理上述的問題和挑戰(zhàn)[4]。在對(duì)主干網(wǎng)絡(luò)的蒸餾上,注意到使用教師網(wǎng)絡(luò)的中間表示作為提示(Hint)可以幫助訓(xùn)練過程并提高學(xué)生網(wǎng)絡(luò)的最終表現(xiàn)。
Wang等在隨后的研究中發(fā)現(xiàn),提示部分的損失僅僅只對(duì)全局信息進(jìn)行蒸餾,而全局信息中必定帶有大量的背景信息,針對(duì)這些魚龍混雜的信息進(jìn)行相同的蒸餾無法達(dá)到最好的效果。為此,Wang等提出了Fitnet對(duì)此進(jìn)行改進(jìn),通過在蒸餾過程中加入掩膜除去教師網(wǎng)絡(luò)中的背景,學(xué)生網(wǎng)絡(luò)進(jìn)行蒸餾時(shí)只關(guān)注于目標(biāo)周圍的特征情況[1]。圖1展示了掩膜區(qū)域的生成過程。
對(duì)于每一個(gè)目標(biāo)的真實(shí)標(biāo)簽都會(huì)計(jì)算其與教師網(wǎng)絡(luò)生成的所有檢測(cè)框的IoU值,對(duì)于其中大于閾值F的所有檢測(cè)框,將其進(jìn)行組合作為該目標(biāo)的掩膜區(qū)域。通過掩膜區(qū)域屏蔽背景信息的干擾,該部分的損失為在掩膜區(qū)域監(jiān)督下學(xué)生網(wǎng)絡(luò)向教師網(wǎng)絡(luò)學(xué)習(xí)產(chǎn)生的損失,具體計(jì)算方式如式(1)所示
(1)
式中:NP為檢測(cè)目標(biāo)中正例的數(shù)量,I為Fine-Grained Imi-tation Mask的掩碼Mask,fadap(·)為特征適應(yīng)層函數(shù)。整個(gè)蒸餾的最終損失如式(2)所示
L=Lgt+λLimitation
(2)
Limitation為學(xué)生網(wǎng)絡(luò)根據(jù)掩膜向教師網(wǎng)絡(luò)學(xué)習(xí)的損失。Limitation為學(xué)生網(wǎng)絡(luò)向真實(shí)標(biāo)簽學(xué)習(xí)產(chǎn)生的損失,具體計(jì)算方式沿用了Hinton的計(jì)算方法。
Linfeng Zhang等對(duì)Wang等的方法作出了改進(jìn),設(shè)計(jì)出了基于注意力引導(dǎo)機(jī)制的掩膜用于目標(biāo)檢測(cè)的蒸餾,通過加入注意力機(jī)制分別在通道和空間維度上產(chǎn)生通道和空間注意力,并鼓勵(lì)學(xué)生網(wǎng)絡(luò)模仿教師網(wǎng)絡(luò)的注意力,與Wang等的方法相比,這種方法生成的掩膜增加了通道掩膜,并且可以做到像素級(jí)別的掩膜[5]。其從目標(biāo)特征到注意力的映射方式如式(3)、式(4)所示
(3)
(4)
其中,A表示目標(biāo)檢測(cè)模型中主干的特征,C,H,W分別表示其通道數(shù),高度和寬度,GS為通道注意力,GC為空間注意力。
空間注意力掩膜和通道注意力掩膜的生成方式如式(5)、式(6)所示
MS=HW·softmax((GS(AS)+GS(AT))/T)
(5)
MC=C·softmax((GC(AS)+GC(AT))/T)
(6)
其中,H,W,C分別表示目標(biāo)的高度,寬度和通道數(shù),AS和AT分別為學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)的由主干網(wǎng)絡(luò)提取出的特征。
最終的注意力蒸餾損失由兩部分構(gòu)成,注意力轉(zhuǎn)移損失和注意力掩膜損失,計(jì)算方式如式(7)所示
LAGD=LAT+LAM
(7)
式中:LAT為注意力轉(zhuǎn)移損失,用于鼓勵(lì)學(xué)生網(wǎng)絡(luò)模仿教師網(wǎng)絡(luò)的空間注意力和通道注意力,計(jì)算方式如式(8)所示
LAT=L2(GS(AS),GS(AT))+L2(GC(AS),GC(AT))
(8)
LAM為注意力掩膜損失,用于鼓勵(lì)學(xué)生網(wǎng)絡(luò)通過空間注意力掩膜和通道注意力掩膜學(xué)習(xí)教師網(wǎng)絡(luò)的特征,計(jì)算方式如式(9)所示
(9)
Wang和Zhang的方法使用掩膜過濾了圖像中的背景信息過濾,學(xué)生網(wǎng)絡(luò)只需要向教師網(wǎng)絡(luò)的前景部分學(xué)習(xí),但是該類方法忽略了對(duì)背景中知識(shí)的蒸餾,Jianyuan Guo等指出,物體和背景之間有很強(qiáng)的關(guān)系,僅通過背景區(qū)域特征提取,學(xué)生網(wǎng)絡(luò)也可以顯著提高學(xué)習(xí)能力,甚至可以接近于前景區(qū)域提取的蒸餾結(jié)果[3]。
目前對(duì)于目標(biāo)檢測(cè)的蒸餾研究,通常選擇直接屏蔽背景以去除背景對(duì)于檢測(cè)的干擾,但是忽略了背景中包含的重要信息,此外,在對(duì)前景進(jìn)行學(xué)習(xí)時(shí)并沒有區(qū)分其重要程度。同時(shí),之前的方法大多數(shù)是針對(duì)二階段的目標(biāo)檢測(cè)方法,而實(shí)際工業(yè)應(yīng)用中大多采用一階段目標(biāo)檢測(cè)方法,因此此前所提出的方法并不能直接應(yīng)用于實(shí)際場(chǎng)景。為此,本文針對(duì)目前蒸餾的主要問題作出改進(jìn),基于以往的掩膜設(shè)計(jì)方法提出用于平衡教師網(wǎng)絡(luò)前景信息與背景信息的帶權(quán)值的掩膜。
Fitnet中指出,教師網(wǎng)絡(luò)可以提取出輸出豐富的全局信息和目標(biāo)的定位信息,可以良好地體現(xiàn)教師網(wǎng)絡(luò)的泛化能力[1],通過比較中間層學(xué)生網(wǎng)絡(luò)與教師網(wǎng)絡(luò)特征的方法,相當(dāng)于引入一個(gè)助教,引導(dǎo)學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)中間特征層的輸出,通過學(xué)習(xí)這部分的知識(shí),可以獲得接近于教師網(wǎng)絡(luò)的泛化能力。然而,在目標(biāo)檢測(cè)中,教師網(wǎng)絡(luò)中有許多冗余元素,學(xué)生網(wǎng)絡(luò)并不知道哪一部分的特征更值得學(xué)習(xí),如果只是平等地學(xué)習(xí)每一部分知識(shí),腦容量不夠的學(xué)生網(wǎng)絡(luò)并不會(huì)取得太好的學(xué)習(xí)效果。并且,教師網(wǎng)絡(luò)產(chǎn)生的特征往往比較復(fù)雜,對(duì)于這一類教師網(wǎng)絡(luò)產(chǎn)生的知識(shí),需要讓學(xué)生網(wǎng)絡(luò)知道學(xué)習(xí)的重點(diǎn),才能更好地學(xué)習(xí)教師網(wǎng)絡(luò)的知識(shí),做到有的放矢。此外,對(duì)于目標(biāo)檢測(cè),前景和背景之間傳遞的信息量并不一致,在圖像中占據(jù)大部分的背景包含的知識(shí)相比于前景顯得不值一提,如果一味將背景知識(shí)和前景知識(shí)平等地教授給學(xué)生網(wǎng)絡(luò),會(huì)影響最終學(xué)生網(wǎng)絡(luò)學(xué)習(xí)的結(jié)果。因此許多方法選擇了過濾背景后進(jìn)行蒸餾,但如果僅是針對(duì)前景進(jìn)行蒸餾,可能會(huì)忽略背景中潛在的信息區(qū)域,并且來自背景的一些信息也可以幫助學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)的泛化。為此,本文提出的基于帶權(quán)值的掩膜的蒸餾在教師網(wǎng)絡(luò)傳遞知識(shí)的過程中,會(huì)對(duì)前景與背景的重要程度進(jìn)行區(qū)分,在學(xué)習(xí)前景知識(shí)的同時(shí),保留了部分背景知識(shí)幫助學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)的泛化;同時(shí)對(duì)前景知識(shí)的重要程度進(jìn)行區(qū)分,讓學(xué)生網(wǎng)絡(luò)知道學(xué)習(xí)的重點(diǎn),從而更好地學(xué)習(xí)教師網(wǎng)絡(luò)的知識(shí)。
目標(biāo)檢測(cè)網(wǎng)絡(luò)主要由主干網(wǎng)絡(luò)Backbone、脖頸網(wǎng)絡(luò)Neck、檢測(cè)頭Head等幾部分組成,其中主干網(wǎng)絡(luò)負(fù)責(zé)圖片特征提取,提取不同尺度、不同感受野下、不同類別的目標(biāo)特征,用以目標(biāo)檢測(cè);脖頸網(wǎng)絡(luò)部分主要是將主干網(wǎng)絡(luò)上的多個(gè)層級(jí)的特征圖進(jìn)行融合拼接,獲得來自不同感受野的信息,增強(qiáng)網(wǎng)絡(luò)的表達(dá)能力。檢測(cè)頭Head主要用于預(yù)測(cè)目標(biāo)的種類和位置。本文提出的蒸餾方案使用帶有權(quán)重的掩膜對(duì)特征提取層進(jìn)行蒸餾,使學(xué)生網(wǎng)絡(luò)對(duì)于教師網(wǎng)絡(luò)傳遞的知識(shí)進(jìn)行有側(cè)重點(diǎn)的學(xué)習(xí);同時(shí)在脖頸網(wǎng)絡(luò)上采用Object Relation Module通過教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的全局特征關(guān)系展開蒸餾,在一次次訓(xùn)練中,使學(xué)生網(wǎng)絡(luò)更加關(guān)注教師網(wǎng)絡(luò)的全局上下文中的知識(shí)傳遞,彌補(bǔ)了掩膜方案中不能傳遞全局知識(shí)的缺陷。相比于目前常用的蒸餾架構(gòu),可以有效提升蒸餾效果。整體蒸餾架構(gòu)如圖2所示。

圖2 基于帶權(quán)值的掩膜蒸餾架構(gòu)
圖片分別輸入教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò),首先在骨干網(wǎng)絡(luò)層對(duì)教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)提取的特征展開蒸餾,根據(jù)教師網(wǎng)絡(luò)與真實(shí)標(biāo)簽計(jì)算出學(xué)生網(wǎng)絡(luò)的帶權(quán)掩膜,使用得出的掩膜指導(dǎo)學(xué)生網(wǎng)絡(luò)向教師網(wǎng)絡(luò)學(xué)習(xí),權(quán)重高的位置的損失值更大,將得到更多的關(guān)注,并計(jì)算該部分Weighted Background &Foreground 損失;接著對(duì)全局關(guān)系展開蒸餾,并分別計(jì)算出教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)經(jīng)過Object Relation Module得出的新特征,以此來計(jì)算出教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間的全局特征關(guān)系間的差距,并使學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)中的全局關(guān)系;最后通過凍結(jié)教師網(wǎng)絡(luò)權(quán)重,使用反向傳播算法更新學(xué)生網(wǎng)絡(luò)的權(quán)重,在多次訓(xùn)練中,使學(xué)生網(wǎng)絡(luò)逐漸掌握教師網(wǎng)絡(luò)的特征知識(shí)。
帶權(quán)重的掩膜計(jì)算過程如圖3所示,首先,將圖像輸入教師網(wǎng)絡(luò)生成多個(gè)目標(biāo)檢測(cè)預(yù)測(cè)框,同時(shí)得到教師網(wǎng)絡(luò)的置信圖Confidence-map。之后,由教師網(wǎng)絡(luò)輸出的物體的預(yù)測(cè)框與真實(shí)標(biāo)簽,篩選出包含目標(biāo)檢測(cè)物體的前景掩膜圖,同時(shí)得到不包含目標(biāo)的背景掩膜圖。

圖3 帶權(quán)值的掩膜生成步驟
為了計(jì)算出目標(biāo)檢測(cè)背景的重要程度,在檢測(cè)中使用置信度對(duì)其加以衡量,置信度即是用來表示輸出的框中是否有物體的自信程度,置信度的值越大,即表明該處有物體的可能性越大。置信度用來判斷邊界框內(nèi)的物體是正樣本還是負(fù)樣本,大于置信度閾值的判定為正樣本,小于置信度閾值的判定為負(fù)樣本即背景。具體而言,距離物體越遠(yuǎn)處的背景置信度越小,而更靠近前景的部分置信度則更大。本文根據(jù)教師網(wǎng)絡(luò)輸出的置信度,用以計(jì)算當(dāng)前目標(biāo)檢測(cè)中背景的重要程度,具體做法見式(10)

(10)
式中:N為樣本中負(fù)例的個(gè)數(shù)。
計(jì)算出背景的重要程度之后,為了讓學(xué)生網(wǎng)絡(luò)知道前景部分中學(xué)習(xí)的重點(diǎn),需要區(qū)分教師網(wǎng)絡(luò)前景不同區(qū)域的重要程度,一個(gè)直觀的想法是越靠近檢測(cè)中心部分的知識(shí)越重要,因此,本文根據(jù)之前計(jì)算出的Background-threshold,以及由預(yù)測(cè)框與真實(shí)標(biāo)簽生成的前景掩膜圖,計(jì)算出帶權(quán)重的掩膜,具體做法見式(11)

(11)
式中:BT為Background-threshold,XC與YC為檢測(cè)中心點(diǎn)位置,S為前景圖中距檢測(cè)中心點(diǎn)的最遠(yuǎn)距離。根據(jù)式(11)獲得帶權(quán)重的掩膜圖,在計(jì)算損失時(shí),權(quán)重更大的位置會(huì)受到更多關(guān)注,在保留背景區(qū)域的前提下使學(xué)生網(wǎng)絡(luò)更加關(guān)注前景區(qū)域中重要位置的學(xué)習(xí),從而更好地?cái)M合教師網(wǎng)絡(luò)產(chǎn)生的特征。
在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層在局部鄰域內(nèi)構(gòu)建像素關(guān)系,可以提取出局部特征,但是在遠(yuǎn)距離位置之間傳遞信息存在困難。現(xiàn)有的目標(biāo)檢測(cè)算法都把圖像中的物體看成一個(gè)個(gè)獨(dú)立的個(gè)體去檢測(cè),并沒有利用不同物體間的相關(guān)性。Cao等指出,提取對(duì)視覺場(chǎng)景的全局理解,有利于廣泛的識(shí)別任務(wù)[6]。針對(duì)以上問題,本文采用了Object Relation Module來利用圖像中物體之間的相互關(guān)系或者圖像內(nèi)容[7],在獲取了教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的特征關(guān)系后,通過設(shè)計(jì)對(duì)特征關(guān)系的蒸餾使學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)中這一類全局關(guān)系,以補(bǔ)充對(duì)于全局關(guān)系的蒸餾。
在Object Relation Module中,每一個(gè)目標(biāo)的最終特征由本身提取出的特征與他收集到的與其它特征的關(guān)系fR組成,其計(jì)算方式如式(12)所示
(12)

(13)

(14)
式中:分子為第m個(gè)物體和第n個(gè)物體的外觀特征投影到低維空間的點(diǎn)積,用投影的重合程度來表示其影響程度,分母為降維后的維度
(15)
式中:ε表示將特征映射到高維空間,之后通過WG進(jìn)行變換。
通過以上方式收集到物體n的一類關(guān)系特征fR(n), 通常會(huì)收集16組并將其Concat到一起,最后與原來的外觀特征相加得到最終的特征。計(jì)算方式如式(16)所示
(16)
在得到教師網(wǎng)絡(luò)的最終特征fA(T) 與學(xué)生網(wǎng)絡(luò)最終特征fA(S) 后,本文通過計(jì)算fA(T) 與fA(S) 之間L2距離的平方來衡量教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間的差距,計(jì)算方式如式(17)所示
(17)

整體蒸餾損失主要分成3個(gè)部分,具體見式(18)
Ltotal=(1-α-β)Lhard(S,LABEL)+αLweighted B&F(S,T)+βLObject Relation(S,T)
(18)
如式(18)所示,Ltotal為蒸餾總損失,Lweighted B&F為學(xué)生網(wǎng)絡(luò)與教師網(wǎng)絡(luò)間的帶權(quán)特征蒸餾損失,計(jì)算方式見式(19),LObject Relation為學(xué)生網(wǎng)絡(luò)與教師網(wǎng)絡(luò)之間全局特征關(guān)系蒸餾損失,計(jì)算方式見式(17),α和β為超參數(shù),用以平衡三者之間的權(quán)重,為鼓勵(lì)學(xué)生網(wǎng)絡(luò)更多向教師網(wǎng)絡(luò)學(xué)習(xí)而不是通過True Label進(jìn)行自學(xué),在本文中均設(shè)置為0.45。Lhard為目標(biāo)檢測(cè)訓(xùn)練時(shí)向Hard Target即真實(shí)標(biāo)簽學(xué)習(xí)的損失,計(jì)算方式沿用了Hinton方法中Hard損失的設(shè)計(jì)。
Hinton在計(jì)算蒸餾損失時(shí)將損失分為了衡量由學(xué)生網(wǎng)絡(luò)輸出與真實(shí)標(biāo)簽之間差距的Hard Loss,以及衡量由學(xué)生網(wǎng)絡(luò)輸出與教師網(wǎng)絡(luò)輸出差距的Soft Loss部分,在本部分中,衡量學(xué)生網(wǎng)絡(luò)輸出與教師網(wǎng)絡(luò)輸出差距的公式如式(19)所示

(19)
式中:N為檢測(cè)中總像素點(diǎn)的個(gè)數(shù),s為學(xué)生網(wǎng)絡(luò)的引導(dǎo)特征圖,t為教師網(wǎng)絡(luò)的引導(dǎo)特征圖,fadap(·)為自適應(yīng)層函數(shù),W,H,C表示輸出特征的寬,高和通道數(shù),Weightedmaskij為前文求出的帶權(quán)重的掩膜圖。
采用本文所提出的蒸餾方法的實(shí)驗(yàn)部分在同一臺(tái)服務(wù)器上完成。實(shí)驗(yàn)環(huán)境見表1。

表1 蒸餾訓(xùn)練實(shí)驗(yàn)環(huán)境
服務(wù)器的硬件條件如下:CPU為8核Intel Xeon處理器、內(nèi)存為32 G、使用的GPU為英偉達(dá)的Tesla T4,內(nèi)存16 G。
軟件環(huán)境如下:實(shí)驗(yàn)過程中實(shí)驗(yàn)ubuntu18.04操作系統(tǒng)進(jìn)行實(shí)驗(yàn),使用python3.9版本作為編程語言,使用的計(jì)算加速庫為CUDA11.6與cuDNN8.6,蒸餾訓(xùn)練框架為pytorch,版本為1.12,采用了opencv-python庫對(duì)圖像進(jìn)行處理。
本文的知識(shí)蒸餾實(shí)驗(yàn)主要基于COCO數(shù)據(jù)集,COCO數(shù)據(jù)集中提供的圖像包括有91類目標(biāo),其中有80類物體和1類背景類,擁有超過30萬張圖像,其中20萬張圖像有標(biāo)注,共擁有超越200萬張圖片標(biāo)注,整個(gè)數(shù)據(jù)集中的物體超過150萬個(gè)。
mAP(mean average precision),意為平均類別準(zhǔn)確率,通過計(jì)算每一個(gè)類別的準(zhǔn)確率后,對(duì)其相加取平均值得出。
算法的蒸餾效果如圖4所示,與蒸餾前的Yolov3-Tiny模型輸出結(jié)果作為對(duì)比,可以看出,蒸餾后的模型效果明顯好于蒸餾訓(xùn)練前的Yolov3-Tiny模型,針對(duì)之前學(xué)生網(wǎng)絡(luò)中漏掉的檢測(cè)框,在進(jìn)行蒸餾訓(xùn)練后,提高了檢測(cè)能力的學(xué)生網(wǎng)絡(luò)可以檢測(cè)出來,包括一些有遮擋物的回歸框或者尺寸較小的物體,例如圖4(b)中,蒸餾后的網(wǎng)絡(luò)檢測(cè)出了小物體交通信號(hào)燈Traffic Light,以及圖片邊緣的人物,而圖4(f)并沒有檢測(cè)出,同時(shí)檢測(cè)產(chǎn)生的錯(cuò)誤也更少,圖4(h)中,Yolov3-Tiny將Car檢測(cè)成了Bus,并且圖片中存在大量的小目標(biāo)無法分出類別,圖4(d)蒸餾后的網(wǎng)絡(luò)可以檢測(cè)出之前無法檢測(cè)出的小物體的類別,雖然在部分目標(biāo)的判斷中出現(xiàn)錯(cuò)誤,但是檢測(cè)框的準(zhǔn)確程度與檢測(cè)精度相較之前有所提升。在蒸餾后尺寸沒有太大變化的前提下,提升了原有模型的檢測(cè)能力。

圖4 蒸餾效果展示
為了更直觀地感受本文蒸餾算法帶來的提升。本文繪制了基于Yolov3-Tiny目標(biāo)檢測(cè)算法在蒸餾訓(xùn)練時(shí)的Object Relation Loss和Weighted Mask Loss的變化曲線,如圖5所示,可以看出,訓(xùn)練初期教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)有著較大差距,隨著訓(xùn)練代數(shù)的增加,教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間差距逐漸縮小,損失最終趨于平穩(wěn)。基于Yolov3-Tiny目標(biāo)檢測(cè)算法在蒸餾訓(xùn)練時(shí)的平均類別準(zhǔn)確率、召回率的變化曲線如圖6所示,可以看出,蒸餾后的模型mAP相比于未蒸餾模型明顯提升,蒸餾之后模型的性能明顯要優(yōu)于未蒸餾模型。

圖5 蒸餾訓(xùn)練損失變化曲線

圖6 訓(xùn)練精度及召回率變化曲線
為了對(duì)比本文提出的蒸餾方案的效果,采用了Fine-Grained知識(shí)蒸餾方案作為對(duì)比,采取mAP作為檢測(cè)指標(biāo),mAP50、mAP75表示在采用IoU=0.5標(biāo)準(zhǔn)以及IoU=0.75標(biāo)準(zhǔn)下的mAP值,mAPs、mAPm、mAPl用來統(tǒng)計(jì)模型對(duì)于小目標(biāo)、中等目標(biāo)、大目標(biāo)的檢測(cè)能力。如表2所示,可以看出,Yolov3模型在COCO數(shù)據(jù)集上的mAP@IoU=0.5達(dá)到了56.1%,可以用來當(dāng)作教師網(wǎng)絡(luò)訓(xùn)練Yolov3-Tiny模型,以Fine-Grained方法訓(xùn)練后得到的模型在COCO2017數(shù)據(jù)集上的mAP@IoU=0.5達(dá)到了40.2%;以本文Weighted Mask方法訓(xùn)練后得到的模型在COCO數(shù)據(jù)集上的mAP@IoU=0.5達(dá)到了42.5%;以本文Weighted Mask方法加上Object Relation Module對(duì)全局關(guān)系進(jìn)行蒸餾的mAP@IoU=0.5達(dá)到了43.6%,相比Yolov3-Tiny模型提升了76.5%,并且無論是大目標(biāo)的檢測(cè)(mAPl)、中等目標(biāo)的檢測(cè)(mAPm)還是小目標(biāo)的檢測(cè)(mAPs),該方法都擁有更好的效果。此外,本文統(tǒng)計(jì)了Yolov3-tiny、Yolov3及蒸餾訓(xùn)練后模型的FPS及模型參數(shù)量,詳情見表3。

表2 YOLO模型不同蒸餾方法下精度

表3 YOLO模型不同蒸餾方法FPS及模型參數(shù)量
經(jīng)過蒸餾后的學(xué)生網(wǎng)絡(luò)精確度與教師網(wǎng)絡(luò)相當(dāng),推理效率FPS得到顯著提升,但是參數(shù)量指標(biāo)卻大幅下降,蒸餾后得到的模型擁有接近于教師網(wǎng)絡(luò)的檢測(cè)精度與學(xué)生網(wǎng)絡(luò)的推理速度,達(dá)到了實(shí)際部署的要求。
本文針對(duì)目前目標(biāo)檢測(cè)算法背景類和前景類出現(xiàn)的頻率和重要程度不一致,難以蒸餾的特點(diǎn)提出用于平衡教師網(wǎng)絡(luò)前景信息與背景信息的帶權(quán)掩膜,通過對(duì)前景與背景的重要程度進(jìn)行區(qū)分,在學(xué)習(xí)前景知識(shí)的同時(shí),保留了部分背景知識(shí)幫助學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)的泛化;同時(shí)對(duì)前景知識(shí)的重要程度進(jìn)行區(qū)分,讓學(xué)生網(wǎng)絡(luò)知道學(xué)習(xí)的重點(diǎn),從而更好地學(xué)習(xí)教師網(wǎng)絡(luò)的知識(shí)。
在COCO2017數(shù)據(jù)集上進(jìn)行蒸餾訓(xùn)練,以Yolov3作為教師網(wǎng)絡(luò)對(duì)Yolov3-Tiny模型進(jìn)行蒸餾,結(jié)果顯示,在模型參數(shù)量沒有提升的前提下檢測(cè)精度從24.7%提升到43.6%,提升了76.5%。