劉佳琦,楊 璐,王龍志
(1天津理工大學(xué) 天津市先進機電系統(tǒng)設(shè)計與智能控制重點實驗室,天津300384;2天津理工大學(xué)機電工程國家級實驗教學(xué)示范中心,天津300384;3奧特貝睿(天津)科技有限公司,天津300300)
知識蒸餾是深度學(xué)習(xí)領(lǐng)域一項重要的模型壓縮技術(shù)。傳統(tǒng)的蒸餾學(xué)習(xí)思想是通過提前訓(xùn)練好的大網(wǎng)絡(luò)對輕量網(wǎng)絡(luò)進行知識傳遞,從而使輕量網(wǎng)絡(luò)能達(dá)到大網(wǎng)絡(luò)的表達(dá)能力,實現(xiàn)知識遷移?;趥鹘y(tǒng)蒸餾學(xué)習(xí)的模型訓(xùn)練主要分為兩個步驟:首先充分訓(xùn)練一個結(jié)構(gòu)復(fù)雜、學(xué)習(xí)能力強的教師網(wǎng)絡(luò),使其具有優(yōu)秀的表達(dá)能力;其次在教師網(wǎng)絡(luò)的基礎(chǔ)上設(shè)計一個結(jié)構(gòu)簡單、參數(shù)量小的學(xué)生網(wǎng)絡(luò),使用教師網(wǎng)絡(luò)的特征約束作為軟標(biāo)簽進行監(jiān)督,使學(xué)生網(wǎng)絡(luò)通過軟標(biāo)簽對真實標(biāo)簽輔助訓(xùn)練,逐漸逼近教師網(wǎng)絡(luò)的表達(dá)水平。從模型推理方面分析,教師網(wǎng)絡(luò)只在訓(xùn)練階段對學(xué)生網(wǎng)絡(luò)起到約束作用,不參與學(xué)生網(wǎng)絡(luò)的獨立推理過程的計算與部署,因此知識蒸餾在神經(jīng)網(wǎng)絡(luò)模型輕量化領(lǐng)域有著重要的意義。
由于傳統(tǒng)蒸餾學(xué)習(xí)中的教師網(wǎng)絡(luò)對學(xué)生網(wǎng)絡(luò)的知識傳遞是單向的,難以從學(xué)生網(wǎng)絡(luò)的學(xué)習(xí)狀態(tài)中得到反饋信息,來對訓(xùn)練過程進行優(yōu)化調(diào)整,從而對學(xué)生網(wǎng)絡(luò)的訓(xùn)練產(chǎn)生負(fù)影響;其次,采取教師網(wǎng)絡(luò)產(chǎn)生軟標(biāo)簽結(jié)合真實標(biāo)簽進行監(jiān)督的形式,當(dāng)軟標(biāo)簽權(quán)重過高時,學(xué)生網(wǎng)絡(luò)會過于模仿教師網(wǎng)絡(luò),從而限制學(xué)生網(wǎng)絡(luò)的特征表達(dá)能力;由于針對不同困難程度的數(shù)據(jù)集任務(wù),所需要的教師網(wǎng)絡(luò)的軟標(biāo)簽監(jiān)督權(quán)重也有所不同,因此增加了訓(xùn)練過程的難度。
近年來,人們嘗試將網(wǎng)絡(luò)自身的特征作為軟標(biāo)簽,不需要訓(xùn)練教師網(wǎng)絡(luò),實現(xiàn)了輕量網(wǎng)絡(luò)模型自身的監(jiān)督優(yōu)化。SAD嘗試使用兩個相鄰層級間的上下文信息,使得淺層特征學(xué)習(xí)高層特征,從而實現(xiàn)網(wǎng)絡(luò)性能的整體提升。但是,以相鄰層級信息進行約束不能對上下文信息進行充分的利用。本文借鑒了Densenet對Resnet的優(yōu)化改進思想,使得上下文特征信息可以在整個網(wǎng)絡(luò)中被充分利用,進而保證每一層級學(xué)習(xí)的特征約束,都能作用到網(wǎng)絡(luò)之后的所有層級。
綜上所述,針對已有研究工作的不足本文提出了一種自適應(yīng)多級注意力蒸餾學(xué)習(xí)方法(MAD)。該方法使用網(wǎng)絡(luò)自身的高層特征對淺層逐級進行約束,以自身的深層單元來約束淺層單元,以此實現(xiàn)模型知識由深層向淺層的傳遞。在充分利用上下文信息的基礎(chǔ)上,對各層級間的表達(dá)能力進行提升。
知識蒸餾的提出,是為了實現(xiàn)知識遷移。Hinton[1]系統(tǒng)的詮釋了知識蒸餾的概念,并以教師網(wǎng)絡(luò)的輸出作為軟標(biāo)簽來監(jiān)督學(xué)生網(wǎng)絡(luò)訓(xùn)練,從而驗證了知識遷移的可行性。在后續(xù)的大量研究中,探究了提高知識遷移效率的方法。FITNETS[2]提出添加教師網(wǎng)絡(luò)中間層的特征,作為學(xué)生網(wǎng)絡(luò)學(xué)習(xí)的軟標(biāo)簽,使得學(xué)生網(wǎng)絡(luò)在關(guān)注教師模型輸出的同時,實現(xiàn)了中間層的特征約束。文獻(xiàn)[3]認(rèn)為硬標(biāo)簽會導(dǎo)致模型在訓(xùn)練過程中發(fā)生過擬合,而使用軟標(biāo)簽更能提高模型的泛化能力,在訓(xùn)練任務(wù)中選擇幾個具有最高置信度分?jǐn)?shù)的類,可以作為軟標(biāo)簽來計算損失。為了更好的表征神經(jīng)網(wǎng)絡(luò)中間層的特征,文獻(xiàn)[4-5]認(rèn)為,可以優(yōu)化中間層特征的表征編碼方式;文獻(xiàn)[6]認(rèn)為,神經(jīng)網(wǎng)絡(luò)層與層之間的特征關(guān)系更能作為特征提取能力的指標(biāo),因此讓學(xué)生網(wǎng)絡(luò)學(xué)習(xí)到教師網(wǎng)絡(luò)的層級之間的特征關(guān)系更為重要;文獻(xiàn)[7]認(rèn)為,以特征圖作為軟標(biāo)簽進行傳遞效果不佳,提出使用注意力圖代替特征圖,最小化教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)之間注意力圖的歐氏距離,可以獲得更好的效果;文獻(xiàn)[8]中認(rèn)為,基于激活的注意力蒸餾會產(chǎn)生明顯的性能提高,而基于梯度的注意力蒸餾提升相對較小。
語義分割屬于像素級別的分類任務(wù),通過對每個像素進行密集的預(yù)測來實現(xiàn)細(xì)粒度的推理。語義分割體系結(jié)構(gòu)被廣泛認(rèn)為是編解碼結(jié)構(gòu)(Encoder-Decoder)。其中編碼器通常為特征提取網(wǎng)絡(luò),典型的編 碼 特 征 提 取 網(wǎng) 絡(luò) 有:Resnet[9]、GoogleNet[10]、VGGNet[11]。解碼器將編碼器學(xué)習(xí)提取到的語義特征投影到像素空間上得到密集的分類。
FCN[12]作為經(jīng)典的編解碼語義分割結(jié)構(gòu),取得了矚目的成就,使用反卷積對卷積特征進行上采樣,對每個像素類別進行預(yù)測,實現(xiàn)圖像語義分割。U-Net[13]在FCN的基礎(chǔ)上,通過加入更多的底層特征,實現(xiàn)了對小物體細(xì)節(jié)分割質(zhì)量的提升,PSPNet[14]通過利用空間金字塔池化模塊進行編碼,實現(xiàn)了對多尺度信息進行特征融合。同時,DeepLab_V3[15]在DeepLab_V2[16]的基礎(chǔ)上,對空間金字塔模塊進行改進,取得了分割精確性的提升。ENet[17]使用下卷積層并行池化層來進行下采樣,解碼階段使用空洞卷積,在獲得大感受野的同時獲得豐富的上下文信息。ERFNet[18]在ENet的基礎(chǔ)上進行改進,使用非對稱卷積,實現(xiàn)了網(wǎng)絡(luò)準(zhǔn)確性與實時性的提升。
將卷積神經(jīng)網(wǎng)絡(luò)劃分為幾個單元,使得前一單元可以從后續(xù)的各個單元中提取有用的上下文信息。本文以ERFNet網(wǎng)絡(luò)結(jié)構(gòu)為例,將網(wǎng)絡(luò)的Encoder部分拆分成6個單元,如圖1所示,以自身的深層單元來約束淺層單元,以實現(xiàn)模型知識由深層向淺層的傳遞,提高淺層的表達(dá)能力,從而提升模型整體的表達(dá)能力。
圖1 MAD算法結(jié)構(gòu)圖Fig.1 Structure of MAD algorithm
對于一個共有L個單元的網(wǎng)絡(luò),如圖2所示,共包含N級蒸餾。將各級蒸餾中每個分支進行加和,各級蒸餾損失函數(shù)如下:
圖2 多級注意力蒸餾示意圖Fig.2 Multi-Res Distillation
式中,n為蒸餾級別,i代表了當(dāng)前級別下的序數(shù)。
將總蒸餾損失函數(shù)設(shè)為各級蒸餾加權(quán)損失之和,計算公式如下:
式中,an為一個自適應(yīng)的權(quán)重系數(shù),與初設(shè)的單元數(shù)量有關(guān)。設(shè)定相鄰層級蒸餾可獲得高權(quán)重,蒸餾層級跨度越大獲得權(quán)重越低,因此自適應(yīng)權(quán)重系數(shù)αn為:
如公式(5)所示,通過計算加權(quán)的分割損失與蒸餾損失,可得到總的損失函數(shù)。本文使用一個權(quán)重系數(shù)β來平衡分割損失與蒸餾損失對最終任務(wù)的影響。(權(quán)重系數(shù)β將在3.3節(jié)進行討論)
所有蒸餾部分只在訓(xùn)練期間進行計算,因此在測試推理過程中不增加計算量。
注意力圖主要可以分為兩類:基于激活的注意力圖與基于梯度的注意力圖。文獻(xiàn)[7]的研究發(fā)現(xiàn),基于激活的注意力蒸餾可顯著提高性能;基于梯度的注意力蒸餾,提升效果不明顯。因此,本文使用基于激活的注意力蒸餾方法。
為了定義一個空間注意力映射,可以將隱藏神經(jīng)元激活的絕對值,作為該神經(jīng)元相對于輸入的注意力。因此,通過計算這些值在通道維度上的統(tǒng)計,來構(gòu)建空間注意力圖。生成注意力圖時,在特征經(jīng)過softmax操作之前,使用雙線性上采樣,使不同層輸出的特征圖尺寸保持統(tǒng)一。注意力圖生成過程如圖3所示。
圖3 注意力圖生成過程Fig.3 The generating process of attention maps
針對不同的任務(wù),注意力圖的計算方式會有所不同,這主要與任務(wù)中特征的種類、數(shù)量、復(fù)雜程度有關(guān)。對于車道線檢測任務(wù),計算注意力圖使用A∈RC×RH×RW表示網(wǎng)絡(luò)卷積層的激活輸出,其中C、H和W分別表示通道、高度和寬度。通過計算通道維度上的統(tǒng)計來表征注意力圖,有以下2種有效操作[7]可以作為映射函數(shù):
針對車道線檢測任務(wù),希望網(wǎng)絡(luò)注意力集中在車道線附近的區(qū)域,本文可視化了2種映射函數(shù)提取得到的注意力圖,如圖4所示。通過對比兩種映射函數(shù)發(fā)現(xiàn):作為映射函數(shù),可以使注意力圖更加集中在特征區(qū)域。其中p越大,特征區(qū)域的激活程度越高。根據(jù)對比分析,當(dāng)p取2時,會使注意力圖的偏差更小。
圖4 不同映射方法結(jié)果Fig.4 Results of different mapping methods
因此,本文注意力圖計算公式為:
式中,C為卷積層的通道數(shù),即特征圖的數(shù)量。注意力圖即為當(dāng)前單元各通道特征圖的平方和,從而可以計算出每個層級單元間注意力蒸餾損失函數(shù):
使用輕量級網(wǎng)絡(luò)ERFNet、DeepLab_V3在2個不同難度任務(wù)的分割數(shù)據(jù)集CULane、VOC2012上進行驗證。
3.1.1 CULane
CULane數(shù)據(jù)集[19]是一個大規(guī)模車道檢測數(shù)據(jù)集,包含了許多具有挑戰(zhàn)性的駕駛場景。如,擁擠的道路條件或照明不足的道路。其是由安裝在北京不同司機駕駛的6輛不同車輛上的攝像頭采集而得。收集了超過55 h的視頻,提取了133 235幀。將數(shù)據(jù)集分成88 880個訓(xùn)練集、9 675個驗證集、34 680個測試集。測試集分為正常和8個挑戰(zhàn)性類別,對應(yīng)于表1中的9個示例。
3.1.2 PASCAL VOC
PASCAL VOC 2O12數(shù)據(jù)集[20]是常用語義分割的數(shù)據(jù)集。該數(shù)據(jù)集擁有1 464張訓(xùn)練圖片、1 449張驗證圖片和1 456張測試圖片。其中包括20個前景類別和一個背景類別共21個語義分類,該數(shù)據(jù)集中的大部分圖像的分辨率接近500×500。
實驗中采用3個評價指標(biāo)來衡量車道線檢測算法的 性 能,分 別 是 精 確 度(precision)、召 回 率(recall)、F1度量(F1-measure)。其中,精確度表示正確預(yù)測為真的正樣本占全部預(yù)測為真的樣本的比例,即正確檢測為道路的像素占全部檢測為道路像素的百分比;召回率表示正確預(yù)測為真的正樣本占全部正樣本的比例,即正確檢測為道路的像素占全部道路像素的百分比;F1-measure作為綜合指標(biāo),是精確率和召回率的加權(quán)調(diào)和平均,受平衡準(zhǔn)確率和召回率的影響。其計算公式如下:
同時,針對VOC數(shù)據(jù)集的語義分割性能評估,以mIoU的值作為評價指標(biāo),來說明MAD方法對語義分割任務(wù)性能的提升。分別計算每個類別的IoU(Intersection over Union)值再求平均來計算。評估過程還包括整體準(zhǔn)確度(Acc)、分類準(zhǔn)確度(Acc_class)和帶權(quán)重交并比(fwavacc)。
為驗證MAD方法的有效性,進行了對比試驗。以ERFNet網(wǎng)絡(luò)為baseline,使用MAD多級注意力蒸餾進行優(yōu)化,設(shè)置僅使用第一級蒸餾損失優(yōu)化作為單級注意力蒸餾(SAD)方法作為對比試驗。使用SGD優(yōu)化器,學(xué)習(xí)率為5e-2;在訓(xùn)練階段使用了預(yù)訓(xùn)練權(quán)重,對模型訓(xùn)練了12個epoch;設(shè)置batch_size為12,共優(yōu)化88K次迭代數(shù)。通過在數(shù)據(jù)集CULane上進行訓(xùn)練,并使用CULane的驗證集對9個場景任務(wù)進行測試,分別計算出3個指標(biāo)值,并結(jié)合訓(xùn)練過程的驗證信息進行綜合評價。
針對不同類別的測試結(jié)果,進行了詳細(xì)的實驗結(jié)果分析。在表1、表2中,對比了在不使用優(yōu)化方法下模型訓(xùn)練后的測試結(jié)果(baselines),與使用單級(SAD)、多級(MAD)注意力不同蒸餾權(quán)重β={100,200}的結(jié)果。
見表1,針對9種類別場景中的車道線分割任務(wù),無論是基于單級(SAD)還是多級(MAD)注意力蒸餾的結(jié)果,均較原始網(wǎng)絡(luò)有了明顯的提升。根據(jù)表2所展示綜合評價結(jié)果,在不同的權(quán)重因子下,通過比較兩種方法可以發(fā)現(xiàn),多級(MAD)蒸餾優(yōu)化都要高于單級(SAD)蒸餾優(yōu)化。同時,本實驗可視化了單級(SAD)、多級(MAD)注意力蒸餾優(yōu)化方法的驗證結(jié)果與不同蒸餾權(quán)重的對比結(jié)果(β={10,50,100,200,500}),如圖5所示。
圖5 對比結(jié)果Fig.5 Comparison results
表1 基于單級(SAD)、多級(MAD)注意力蒸餾的9種場景結(jié)果Tab.1 Results of 9 scenarios based on single level(SAD)and multi-level(MAD)attention distillation
表2 基于單級(SAD)、多級(MAD)注意力蒸餾的綜合評價結(jié)果Tab.2 Comprehensive evaluation results based on single level(SAD)and multi-level(MAD)attention distillation
圖5(a)為β=200的訓(xùn)練過程評估。在隨機初始化后,以同樣的參數(shù)訓(xùn)練5個epoch,在第6個epoch時引入優(yōu)化方法。圖中可以證明,在第6個循環(huán)周期(epoch)后,多級(藍(lán)線)方法始終優(yōu)于單級(紅線)。圖5(b)所示為本文探索不同權(quán)重因子的兩種蒸餾優(yōu)化結(jié)果對比。從圖中可以看出,不同權(quán)重因子下多級(藍(lán)色)方法較單級(紅色)方法仍有明顯的優(yōu)勢。
圖6所示為β=200的訓(xùn)練過程損失曲線。在實驗中,設(shè)置第6個循環(huán)周期(epoch)后加入優(yōu)化。MAD優(yōu)化方法在不同級別的蒸餾分支中,加入之前模型收斂速度慢,加入之后實現(xiàn)快速的收斂。相對整體的模型收斂狀態(tài),并不會產(chǎn)生震蕩的后果。具體測試結(jié)果如圖7所示。
圖6 各級蒸餾損失函數(shù)Fig.6 Distillation loss function of each stage
圖7 ERFNet的檢測結(jié)果Fig.7 ERFNet predict results
為探索多級自適應(yīng)蒸餾學(xué)習(xí)(MAD)的普適性,即是否可以應(yīng)用于多種類別的分割任務(wù),本文將實驗擴展為基于DeepLab_V3網(wǎng)絡(luò)在VOC2012數(shù)據(jù)集上訓(xùn)練20類別的語義分割實驗。使用DeepLab_V3為基礎(chǔ)網(wǎng)絡(luò),將網(wǎng)絡(luò)特征提取部分分為4個單元,在PASCL VOC上訓(xùn)練了200個循環(huán),在訓(xùn)練80次循環(huán)后加入MAD模塊。batch_size=16,學(xué)習(xí)率為0.01。實驗訓(xùn)練結(jié)果見表3,驗證結(jié)果見表4。
表3 DeepLab_V3在VOC2012數(shù)據(jù)集上的訓(xùn)練結(jié)果Tab.3 Training results of Deeplab_V3 on VOC2012 datasets
表4 DeepLab_V3在VOC2012數(shù)據(jù)集上的測試結(jié)果Tab.4 Testing results of Deeplab_V3 on VOC2012 datasets
根據(jù)表3、表4中結(jié)果可以看出,MAD方法針對20類別的語義分割具有明顯的提升效果。其中Acc為整體準(zhǔn)確度,Acc_class為分類準(zhǔn)確度,fwavacc為帶權(quán)重交并比。在訓(xùn)練集mIoU指標(biāo)中MAD方法在原網(wǎng)絡(luò)的基礎(chǔ)上提升0.4,在驗證集mIoU指標(biāo)中本文方法提升1.5。
本文提出了一種多級注意力蒸餾學(xué)習(xí)方法(MAD),以自身網(wǎng)絡(luò)的淺層特征學(xué)習(xí)高層特征的表達(dá)。實驗證明,該方法可普遍提高網(wǎng)絡(luò)中不同層次的視覺注意力,使ERFNet在CULane任務(wù)的F1-measure指標(biāo)提升2.13,DeepLab_V3在VOC2012任務(wù)的mIoU指標(biāo)提升1.5,在提升網(wǎng)絡(luò)特征提取能力方面具有重要意義。
選擇合適的不同層級之間的權(quán)重,對訓(xùn)練時間與收斂具有一定影響,在后續(xù)的工作中,可以考慮探究每個蒸餾級別中不同層之間的權(quán)重,從而實現(xiàn)模型收斂性能的提高。