李俊杰 彭書(shū)華 郭俊倫
(北京信息科技大學(xué)自動(dòng)化學(xué)院 北京 100101)
隨著卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)技術(shù)的不斷發(fā)展,在圖像處理方面,相較于傳統(tǒng)算法,卷積神經(jīng)網(wǎng)絡(luò)表現(xiàn)得更加能夠適應(yīng)任務(wù)的需求,且其優(yōu)異性是傳統(tǒng)算法所不能及的。卷積神經(jīng)網(wǎng)絡(luò)的能力之所以能夠如此優(yōu)越,很大一部分原因是其網(wǎng)絡(luò)深度的不斷增加,能夠從圖像數(shù)據(jù)中提取出更高層更抽象的特征。但是隨著網(wǎng)絡(luò)深度的增加,其結(jié)構(gòu)也越來(lái)越復(fù)雜,網(wǎng)絡(luò)模型所需要的存儲(chǔ)空間和浮點(diǎn)計(jì)算次數(shù)也成倍地增加,這些擁有百萬(wàn)級(jí)網(wǎng)絡(luò)參數(shù)和上億次浮點(diǎn)運(yùn)算的網(wǎng)絡(luò)模型非常消耗存儲(chǔ)空間和計(jì)算能力。
得益于圖形處理器(Graphics Processing Unit,GPU)強(qiáng)大的計(jì)算能力,縮短神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練周期,加速了神經(jīng)網(wǎng)絡(luò)的計(jì)算,卷積神經(jīng)網(wǎng)絡(luò)不斷地被應(yīng)用于計(jì)算機(jī)視覺(jué)領(lǐng)域,并且取得了突破性的成效,如圖像分類、語(yǔ)義分割和目標(biāo)檢測(cè)等都使用了卷積神經(jīng)網(wǎng)絡(luò)技術(shù)。但是在實(shí)際應(yīng)用中,往往使用的是一些內(nèi)存小、計(jì)算能力弱的嵌入式設(shè)備,而精度高但是結(jié)構(gòu)復(fù)雜的網(wǎng)絡(luò)模型很難在這些資源受限的設(shè)備上存儲(chǔ)和運(yùn)行,神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù)便應(yīng)運(yùn)而生,目的就是在盡量保證網(wǎng)絡(luò)模型性能的情況下,降低網(wǎng)絡(luò)模型的計(jì)算量和減少存儲(chǔ)空間。目前主流的網(wǎng)絡(luò)壓縮與加速方法[1]主要有以下六種:網(wǎng)絡(luò)剪枝、參數(shù)共享、權(quán)值量化、低秩分解、緊湊型網(wǎng)絡(luò)設(shè)計(jì)和網(wǎng)絡(luò)精餾。
網(wǎng)絡(luò)精餾相較于其他的方法有著優(yōu)秀的壓縮效果,它是利用學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)所學(xué)習(xí)到的知識(shí)來(lái)提升學(xué)生網(wǎng)絡(luò)的準(zhǔn)確度,從而達(dá)到網(wǎng)絡(luò)壓縮的目的,其中學(xué)生網(wǎng)絡(luò)擁有較少的網(wǎng)絡(luò)參數(shù)。Hinton等[2]提出了知識(shí)蒸餾的方法,使用雙網(wǎng)絡(luò)結(jié)構(gòu)將教師網(wǎng)絡(luò)學(xué)習(xí)到的知識(shí),即數(shù)據(jù)標(biāo)簽的軟分布傳遞給學(xué)生網(wǎng)絡(luò)。Romero等[3]突出了Fitnets模型,引導(dǎo)學(xué)生網(wǎng)絡(luò)學(xué)習(xí)教師網(wǎng)絡(luò)中間的輸出。Zagoruyko等[4]將注意力機(jī)制引入了網(wǎng)絡(luò)精餾的方法中,將教師網(wǎng)絡(luò)學(xué)習(xí)到的注意力作為“知識(shí)”傳遞給了學(xué)生網(wǎng)絡(luò)。Zhou等[5]提出了新的網(wǎng)絡(luò)精餾結(jié)構(gòu),使教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)共享基層網(wǎng)絡(luò),同時(shí)提升教師和學(xué)生網(wǎng)絡(luò)的精度,但是犧牲了學(xué)生網(wǎng)絡(luò)的靈活度。Mirzadeh等[6]提出了多級(jí)網(wǎng)絡(luò)精餾,使用一個(gè)中等規(guī)模的網(wǎng)絡(luò)作為“教師助理”,將大規(guī)模教師網(wǎng)絡(luò)和小規(guī)模學(xué)生網(wǎng)絡(luò)相聯(lián)系,能夠有效提升學(xué)生網(wǎng)絡(luò)的性能。此外,網(wǎng)絡(luò)精餾在其他的任務(wù)上也有很好的應(yīng)用效果。高欽泉等[7]將此方法改進(jìn)之后運(yùn)用在了高分辨率的圖片的處理中。Li等[8]和Chen等[9]將網(wǎng)絡(luò)精餾的方法引入到目標(biāo)檢測(cè)。
網(wǎng)絡(luò)精餾的主要問(wèn)題是教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間所要傳遞的“知識(shí)”,因此,本文提出一種新穎的方法,使用多級(jí)注意力機(jī)制融合的方法,將融合成的新的注意力圖作為“知識(shí)”由教師網(wǎng)絡(luò)傳遞給學(xué)生網(wǎng)絡(luò),提升學(xué)生網(wǎng)絡(luò)的準(zhǔn)確度,實(shí)現(xiàn)模型壓縮的目的。
注意力機(jī)制最早在自然語(yǔ)言處理等領(lǐng)域中提出并使用,取得了相當(dāng)不錯(cuò)的效果,后被引入了計(jì)算機(jī)視覺(jué)領(lǐng)域。其基本思想是:網(wǎng)絡(luò)中每層輸出特征的重要性是不同的,這種差異可以體現(xiàn)在通道(Channel Domain)上,也可以體現(xiàn)在空間域(Spatial Domain)上,之后的網(wǎng)絡(luò)層更應(yīng)該注重其中重要的信息,而抑制不重要的信息。在卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用中,Jaderberg等[10]提出的STNet網(wǎng)絡(luò)模型是空間域上的注意力機(jī)制的體現(xiàn),它所關(guān)注的是空間上的位置信息,而Hu等[11]提出的SENet網(wǎng)絡(luò)模型改變了不同通道的權(quán)重,是通道域上注意力機(jī)制的體現(xiàn),Woo等[12]將通道注意力和空間注意相融合,利用空間域和通道域的注意力機(jī)制并聯(lián)或者串聯(lián),提出了CBAM網(wǎng)絡(luò)模型。而SKNet的提出者Li等[13]著重于卷積核的重要性,利用不同尺度的卷積核來(lái)篩選網(wǎng)絡(luò)層輸出的特征圖,進(jìn)而形成帶有注意力機(jī)制特征圖。
Zagoruyko等[4]將注意力機(jī)制引入到網(wǎng)絡(luò)精餾中,利用教師網(wǎng)絡(luò)學(xué)習(xí)到的注意力機(jī)制來(lái)提升學(xué)生網(wǎng)絡(luò)的性能,提出了注意力遷移(Attention Transfer)的方法。該方法利用網(wǎng)絡(luò)中間卷積層輸出的特征圖(Feature Map)生成注意力圖(Attention Map)的方式,并且以相同的生成注意力圖的策略使用在教師和學(xué)生網(wǎng)絡(luò)中,在教師-學(xué)生網(wǎng)絡(luò)聯(lián)合訓(xùn)練中,保持教師網(wǎng)絡(luò)參數(shù)不變,不斷縮小二者生成的注意力圖的距離損失(Attention Transfer Loss),達(dá)到注意力遷移的目的,同時(shí)配合真實(shí)數(shù)據(jù)標(biāo)簽的損失,訓(xùn)練學(xué)生網(wǎng)絡(luò)的參數(shù),以提升學(xué)生網(wǎng)絡(luò)的準(zhǔn)確度。其結(jié)構(gòu)如圖1所示。

圖1 注意力機(jī)制遷移網(wǎng)絡(luò)結(jié)構(gòu)
Zagoruyko等[4]所提出的注意力機(jī)制遷移的方法中,相鄰的卷積塊所生成的注意力圖是相互獨(dú)立的,沒(méi)有充分利用相鄰卷積塊所生成的注意力圖之間的聯(lián)系,為此,本文提出一種基于教師-學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)的融合多級(jí)注意力的遷移方法,融合多級(jí)注意力遷移方法將教師網(wǎng)絡(luò)相鄰的卷積塊所生成的注意力圖相融合,打破了各級(jí)注意力圖之間互相獨(dú)立的關(guān)系。新的注意力圖不僅僅擁有教師網(wǎng)絡(luò)該位置卷積塊所學(xué)習(xí)到的注意力機(jī)制,同樣也會(huì)繼承其相鄰上一級(jí)卷積塊所學(xué)習(xí)到的注意力信息,有助于學(xué)生網(wǎng)絡(luò)不僅僅學(xué)習(xí)教師網(wǎng)絡(luò)中相對(duì)應(yīng)位置的注意力信息,還會(huì)學(xué)習(xí)上一級(jí)的注意力圖中的注意力信息。同時(shí),融合多級(jí)注意力遷移的方法有助于緩解學(xué)生網(wǎng)絡(luò)中由于網(wǎng)絡(luò)本身結(jié)構(gòu)中如卷積層和池化層所導(dǎo)致的信息丟失,從而增強(qiáng)學(xué)生網(wǎng)絡(luò)的特征提取能力,提升網(wǎng)絡(luò)模型的性能,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 融合多級(jí)注意力網(wǎng)絡(luò)結(jié)構(gòu)
設(shè)S、T、WS、WT分別表示學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)以及它們所對(duì)應(yīng)的權(quán)重,L(W,x)表示標(biāo)準(zhǔn)交叉熵,I表示所有要遷移的注意力圖的索引。可以定義以下?lián)p失函數(shù):
(1)

注意力圖是由教師網(wǎng)絡(luò)中間層輸出特征圖映射而成的。定義一個(gè)卷積層的輸出的特征圖是A∈R(C×H×W),其中:C表示輸出特成圖的通道數(shù);H和W表示輸出特征圖的空間維度。函數(shù)F表示將3D特征圖映射成為2D空間注意力圖,如圖3所示。

圖3 生成注意力
函數(shù)F可表示為:
F:RC×H×W→RH×W
(2)
Zagoruyko等[4]提出了基于通道維度信息上的三種方法,分別為通道絕對(duì)值求和、絕對(duì)值指數(shù)求和、指數(shù)最大值。其定義公式如下:
(3)
(4)
(5)
式中:Ai,H,W表示通道域上的元素級(jí)別的運(yùn)算。
本文提出將空間域上的信息與通道域上的信息相融合的方式,定義一個(gè)卷積層的輸出的特征圖是A∈RC×H×W,其中:C表示輸出特成圖的通道數(shù);H和W表示輸出特征圖的空間維度。首先通過(guò)函數(shù)H將3D特征圖A∈RC×H×W映射成為1D張量B∈RC×1×1,再將A∈RC×H×W與B∈RC×1×1進(jìn)行通道域上的運(yùn)算,得到3D張量C∈RC×H×W,最后函數(shù)F映射成為2D注意力圖。其中函數(shù)H的定義公式如下:
(6)
其結(jié)構(gòu)示意圖如圖4所示。

圖4 生成融合注意力
本文使用公開(kāi)的基準(zhǔn)數(shù)據(jù)集CIFAR進(jìn)行訓(xùn)練和測(cè)試,CIFAR- 10數(shù)據(jù)集由10類32×32的彩色圖片組成,總共包含60 000幅圖片,其中訓(xùn)練集為50 000幅圖片,而測(cè)試集有10 000幅圖片。而在CIFAR- 100數(shù)據(jù)集中,將類別擴(kuò)展到了100類。
本文方法在CIFAR數(shù)據(jù)集上,使用標(biāo)準(zhǔn)的隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)訓(xùn)練模型,設(shè)置批次大小(Batch Size)為128,基礎(chǔ)學(xué)習(xí)率(Learning Rate)為0.1,衰減率為0.2,權(quán)重衰減(Weight Decay)為0.000 5,每次訓(xùn)練300輪,其中學(xué)習(xí)率分別在第60、120、160、200、250、270輪時(shí)進(jìn)行衰減。
實(shí)驗(yàn)中用到的主干網(wǎng)絡(luò)是殘差網(wǎng)絡(luò)(ResNet),由于CIFAR數(shù)據(jù)集中的圖像數(shù)據(jù)擁有較小的分辨率,且在神經(jīng)網(wǎng)絡(luò)中會(huì)對(duì)圖片進(jìn)行向下采樣,從而頂層得到的特征圖的分辨率會(huì)更低,所以在每層卷積的輸出都會(huì)使用零填充(Zero Padding)進(jìn)行處理。此外,對(duì)數(shù)據(jù)集使用水平翻轉(zhuǎn)(Horizontal flips)和隨機(jī)裁剪(Random crops)進(jìn)行數(shù)據(jù)增強(qiáng),并且所有網(wǎng)絡(luò)都具有批量歸一化功能。本文所有實(shí)驗(yàn)均在PyTorch框架下進(jìn)行,使用NVIDIA GPU。
在本實(shí)驗(yàn)中,分別測(cè)試了具有相同網(wǎng)絡(luò)深度但輸出特征圖數(shù)量不同的教師-學(xué)生網(wǎng)絡(luò)(NET- 162/NET- 161)和不同網(wǎng)絡(luò)深度但輸出特征圖數(shù)量相同的教師-學(xué)生網(wǎng)絡(luò)(NET-401/NET- 161、NET- 402/NET- 162)以及不同網(wǎng)絡(luò)深度且輸出特征圖數(shù)量不同的教師-學(xué)生網(wǎng)絡(luò)(NET- 402/NET- 161)。在教師-學(xué)生網(wǎng)絡(luò)的聯(lián)合訓(xùn)練中,保持教師網(wǎng)絡(luò)參數(shù)不變,對(duì)學(xué)生網(wǎng)絡(luò)的參數(shù)進(jìn)行計(jì)算。實(shí)驗(yàn)結(jié)果如表1所示,實(shí)驗(yàn)數(shù)據(jù)集使用CIFAR- 10數(shù)據(jù)集,實(shí)驗(yàn)所采用的注意力圖映射函數(shù)為Fsum(A)。

表1 各個(gè)算法的錯(cuò)誤率(%)
由表1可知,使用了融合多級(jí)注意力遷移方法的學(xué)生網(wǎng)絡(luò)(MAT),相較于不使用任何方法的學(xué)生網(wǎng)絡(luò)(Stu)準(zhǔn)確率提升了1.0百分點(diǎn)到1.5百分點(diǎn),相較于傳統(tǒng)的知識(shí)蒸餾[2](KD)準(zhǔn)確率提升了0.2百分點(diǎn)至0.5百分點(diǎn),相較于注意力遷移[4](AT)在網(wǎng)絡(luò)結(jié)構(gòu)(NET- 401/NET- 161、NET- 402/NET- 161)中準(zhǔn)確率提升了0.30百分點(diǎn)至0.45百分點(diǎn)。
其中,NET- 402、NET- 401、NET- 162和NET- 161的參數(shù)量分別為2.2 MB、0.6 MB、0.7 MB和0.2 MB。由此可見(jiàn),將學(xué)生網(wǎng)絡(luò)參數(shù)量縮小為教師網(wǎng)絡(luò)三分之一,甚至更低的情況下,本文方法進(jìn)一步提升了學(xué)生網(wǎng)絡(luò)的準(zhǔn)確度。


表2 不同映射函數(shù)的錯(cuò)誤率(%)

為了進(jìn)一步驗(yàn)證融合多級(jí)注意力遷移方法,選擇了類別更多的CIFAR- 100進(jìn)行實(shí)驗(yàn),使用注意力圖映射函數(shù)Fsum(A)。其結(jié)果如表3所示。

表3 在CIFAR- 100數(shù)據(jù)集上的錯(cuò)誤率(%)
從表3中數(shù)據(jù)可知,在類別更多的數(shù)據(jù)集中,使用了融合多級(jí)注意力遷移的學(xué)生網(wǎng)絡(luò)(MAT)相比較于原始學(xué)生網(wǎng)絡(luò)(Stu),準(zhǔn)確率提升了1.5百分點(diǎn)到3.0百分點(diǎn),而相比于注意力遷移(AT),準(zhǔn)確率也有所提升,其中NET- 401/NET- 161提升比較大,有2.0百分點(diǎn)的提升。這進(jìn)一步驗(yàn)證了融合多級(jí)注意力遷移方法在網(wǎng)絡(luò)精餾的框架中能夠有效提升學(xué)生網(wǎng)絡(luò)準(zhǔn)確率的作用。
本文所提出的基于教師-學(xué)生網(wǎng)絡(luò)的融合多級(jí)注意力遷移的方法,進(jìn)一步驗(yàn)證了注意力機(jī)制在網(wǎng)絡(luò)精餾方法中所具有的獨(dú)特作用。融合多級(jí)注意力方法打破了教師網(wǎng)絡(luò)模型中各個(gè)卷積塊生成注意力圖的獨(dú)立關(guān)系,使相鄰的注意力圖相融合,形成了更加緊密的聯(lián)系,同時(shí)也緩解了數(shù)據(jù)信息的丟失。相比于教師網(wǎng)絡(luò),在學(xué)生網(wǎng)絡(luò)的參數(shù)量減少為教師網(wǎng)絡(luò)的參數(shù)量的三分之一甚至更多的情況下,準(zhǔn)確率的損失僅有1.5百分點(diǎn)至2.5百分點(diǎn),而相比于其他方法,融合多級(jí)注意力遷移的方法進(jìn)一步提升了學(xué)生網(wǎng)絡(luò)的準(zhǔn)確率。
基于教師-學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)的網(wǎng)絡(luò)精餾,由于其學(xué)生網(wǎng)絡(luò)要學(xué)習(xí)教師網(wǎng)絡(luò)的“知識(shí)”,所以在結(jié)構(gòu)方面很大程度受限于教師網(wǎng)絡(luò)本身的結(jié)構(gòu),沒(méi)有足夠的靈活性,在之后的工作中,將進(jìn)一步研究更加有效的注意力遷移策略。