周蘇 易然 鄭淼
(同濟(jì)大學(xué),上海 201804)
主題詞:知識(shí)蒸餾 可行駛區(qū)域 圖像分割 卷積神經(jīng)網(wǎng)絡(luò)
車輛可行駛區(qū)域分割問題是無人駕駛汽車發(fā)展的大環(huán)境下延伸出的子課題,對(duì)可行駛區(qū)域進(jìn)行檢測(cè)可以為無人駕駛的決策提供重要依據(jù)。
基于計(jì)算機(jī)視覺的語義分割主要分為以特征檢測(cè)為主的傳統(tǒng)方法和以卷積神經(jīng)網(wǎng)絡(luò)為主的深度學(xué)習(xí)方法。傳統(tǒng)分割方法中,一種是基于圖像閾值的方法,根據(jù)人工設(shè)計(jì)的特征(如灰度值等)得到特定的閾值,然后將圖像中的像素點(diǎn)分類到指定的類別中完成分割,但此類方法只能對(duì)一些簡(jiǎn)單的圖像進(jìn)行分割,圖像復(fù)雜時(shí),很難找到合適的閾值。另一種傳統(tǒng)分割方法是基于圖像的邊緣信息進(jìn)行分割,但這類方法很容易受到噪聲的影響,噪聲較大或者邊緣模糊時(shí),分割效果較差。
2014年,Long J[1]等人提出使用全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Networks,F(xiàn)CN)對(duì)圖像進(jìn)行語義分割,這是卷積神經(jīng)網(wǎng)絡(luò)在圖像分割領(lǐng)域的首次成功應(yīng)用。Olaf Ronneberger[2]等人提出一種用于醫(yī)療圖像分割的U形網(wǎng)絡(luò)U-net,該方法最大的貢獻(xiàn)在于提出了將圖像編碼與解碼進(jìn)行融合的思想。2018年,何愷明[3]從另一個(gè)角度對(duì)圖片進(jìn)行語義分割,提出掩膜區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Mask Region-based Convolutional Neural Network,Mask R-CNN)模型。2015年到2018年8月,谷歌先后發(fā)表4篇DeepLab系列的語義分割論文[4-7],創(chuàng)新性地提出了空洞卷積(Astrous Convolution)和空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)[8]結(jié)構(gòu),將深度學(xué)習(xí)方法在語義分割中的應(yīng)用提升到了新的高度?;谏疃葘W(xué)習(xí)的方法雖然能夠取得較好的精度,但是由于神經(jīng)網(wǎng)絡(luò)巨大且參數(shù)較多,導(dǎo)致分割時(shí)間消耗較大,這也成為了該方法的一個(gè)短板。
2006年,Caruana[9]等人首次提出利用知識(shí)轉(zhuǎn)移(Knowledge Transfer,KT)來壓縮模型,對(duì)強(qiáng)分類器的壓縮模型進(jìn)行訓(xùn)練,標(biāo)記了偽數(shù)據(jù),并再現(xiàn)了較大的原始網(wǎng)絡(luò)輸出。2014年,Jimmy[10]等首次提出知識(shí)蒸餾(Knowledge Distillation,KD)的概念,用于將大而深的網(wǎng)絡(luò)壓縮為較小的網(wǎng)絡(luò),其中壓縮模型模仿復(fù)雜模型所學(xué)習(xí)的函數(shù)?;贙D的主要思想是通過改進(jìn)的Softmax函數(shù)來軟化大型教師模型的輸出,將大型教師模型的“知識(shí)”轉(zhuǎn)移到小型的學(xué)生模型中。而2015年Hinton[11]提出以教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)共同的輸出作為目標(biāo)函數(shù),將教師網(wǎng)絡(luò)中有用的信息遷移至學(xué)生網(wǎng)絡(luò)上進(jìn)行訓(xùn)練。2017年,Zagoruyko[12]等人將注意力機(jī)制引入知識(shí)蒸餾,使用教師網(wǎng)絡(luò)訓(xùn)練的注意力特征圖引導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練。
因此,本文以道路可行駛區(qū)域作為研究對(duì)象,將知識(shí)蒸餾這一模型壓縮方法應(yīng)用于道路可行駛區(qū)域分割,以期使用較小的神經(jīng)網(wǎng)絡(luò)模型得到較高的分割精度。
知識(shí)蒸餾是一種利用神經(jīng)網(wǎng)絡(luò)中的遷移訓(xùn)練方式將大型網(wǎng)絡(luò)的“知識(shí)”轉(zhuǎn)移到小型網(wǎng)絡(luò)中的模型壓縮方法。知識(shí)蒸餾算法中引入教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)兩種神經(jīng)網(wǎng)絡(luò),其中教師網(wǎng)絡(luò)的參數(shù)量巨大、精確度高、特征提取能力強(qiáng),但參數(shù)量巨大導(dǎo)致難以在單片機(jī)等移動(dòng)終端上進(jìn)行部署,學(xué)生網(wǎng)絡(luò)參數(shù)量較小,但單獨(dú)訓(xùn)練時(shí)精確度不高,很難滿足實(shí)際道路環(huán)境要求。知識(shí)蒸餾訓(xùn)練方式則是使用教師網(wǎng)絡(luò)指導(dǎo)學(xué)生網(wǎng)絡(luò)的訓(xùn)練,將教師網(wǎng)絡(luò)的“知識(shí)”通過蒸餾算法傳遞至學(xué)生網(wǎng)絡(luò)中。知識(shí)蒸餾算法引入了一種軟標(biāo)簽的形式實(shí)現(xiàn)教師與學(xué)生網(wǎng)絡(luò)的知識(shí)遷移,與傳統(tǒng)的硬標(biāo)簽在標(biāo)注數(shù)據(jù)時(shí)只有“0”和“1”相比,軟標(biāo)簽用0和1之間的數(shù)據(jù)來標(biāo)注圖片,這樣在標(biāo)注出圖片所屬類別的同時(shí),將類與類之間的距離很好地表示出來。
知識(shí)蒸餾模型壓縮算法的原理如圖1所示。學(xué)生網(wǎng)絡(luò)知識(shí)蒸餾訓(xùn)練過程中,首先訓(xùn)練一個(gè)參數(shù)量較多且精度較高的神經(jīng)網(wǎng)絡(luò),使用該網(wǎng)絡(luò)得到訓(xùn)練集的軟標(biāo)簽,然后將軟標(biāo)簽和真實(shí)硬標(biāo)簽一起作為蒸餾訓(xùn)練的擬合對(duì)象,使用參數(shù)α來調(diào)節(jié)損失函數(shù)的比重。訓(xùn)練之后,使用小模型進(jìn)行部署預(yù)測(cè)。
知識(shí)蒸餾訓(xùn)練的損失函數(shù)LKD(Ws)為:
式中,α為兩部分損失函數(shù)的權(quán)重參數(shù),用于調(diào)節(jié)兩部分損失值對(duì)反向傳播梯度的權(quán)重;T為溫度系數(shù);DKL為KL散度損失函數(shù);分別為學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)經(jīng)過改進(jìn)Softmax函數(shù)輸出后的軟化結(jié)果;Lce為交叉熵?fù)p失函數(shù);Qs為學(xué)生網(wǎng)絡(luò)經(jīng)過Softmax之后的輸出結(jié)果;ytrue為真實(shí)標(biāo)簽值。
圖1 知識(shí)蒸餾訓(xùn)練模型壓縮算法原理
式(1)由2個(gè)部分組成,一是教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的KL散度損失函數(shù),用于計(jì)算學(xué)生網(wǎng)絡(luò)輸出與教師網(wǎng)絡(luò)輸出之間的距離,二是學(xué)生網(wǎng)絡(luò)與真實(shí)標(biāo)簽之間的交叉熵?fù)p失值,將這兩部分的加權(quán)之和作為蒸餾訓(xùn)練的損失函數(shù)。
正常訓(xùn)練的Softmax函數(shù)為:
式中,zi為第i個(gè)神經(jīng)元的輸出值;Si為zi的Softmax輸出值。
式(2)可以將神經(jīng)網(wǎng)絡(luò)的輸出映射到0~1范圍內(nèi),并得到對(duì)應(yīng)的概率值。
在知識(shí)蒸餾訓(xùn)練中,為了得到更加“軟”的標(biāo)簽,可以在原Softmax函數(shù)中引入溫度系數(shù)T,得到改進(jìn)后的Softmax函數(shù):
式(3)中,T的大小可以改變神經(jīng)網(wǎng)絡(luò)輸出結(jié)果的分布情況,T越大,概率分布越平坦,軟標(biāo)簽越“軟”。在知識(shí)蒸餾訓(xùn)練時(shí),及時(shí)調(diào)整T的取值可以控制損失函數(shù)中第1部分的教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)輸出結(jié)果的軟化程度。
圖2所示為DeepLabV3+網(wǎng)絡(luò)的原理結(jié)構(gòu)[7]。圖2a為DeepLabV3的空間金字塔池化網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)使用串行結(jié)構(gòu)進(jìn)行編碼,將原圖壓縮為1/8的特征圖后再使用空間金字塔池化結(jié)構(gòu)豐富特征,然后將8倍的上采樣映射回原圖。這種結(jié)構(gòu)忽略了淺層的特征信息,分割的損失比較大。圖2b為典型的編碼解碼結(jié)構(gòu),可以將淺層信息與深層信息充分融合,但是這種方法使得網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,難以實(shí)現(xiàn)。因此,DeepLabV3+將兩者的優(yōu)點(diǎn)進(jìn)行結(jié)合,提出基于空間金字塔池化的編碼解碼語義分割網(wǎng)絡(luò)結(jié)構(gòu),如圖2c所示。
圖2 DeepLabV3+網(wǎng)絡(luò)的原理結(jié)構(gòu)
本文使用Resnet18網(wǎng)絡(luò)[13]作為DeepLabV3+的主干網(wǎng)絡(luò)。Resnet18網(wǎng)絡(luò)首先使用1個(gè)卷積層和1個(gè)池化層將圖片縮小,得到原圖的1/4特征圖,然后經(jīng)過多個(gè)殘差塊不斷對(duì)圖片的特征進(jìn)行處理,最后得到原圖1/32大小的特征圖,再使用全連接層以及Softmax等處理工具進(jìn)行分類。本文使用該網(wǎng)絡(luò)作為DeepLabV3+的主干網(wǎng)絡(luò),同時(shí)去除主干網(wǎng)絡(luò)中最后一個(gè)縮小特征圖的層,輸出為原圖1/16的特征圖。所構(gòu)建的網(wǎng)絡(luò)具體結(jié)構(gòu)如圖3所示,一條特征輸出支路取Resnet18的Block3輸出的特征圖作為編碼的特征圖,之后使用1個(gè)1×1的普通卷積和3個(gè)3×3的帶孔卷積進(jìn)行特征提取。其中,3個(gè)帶孔卷積的擴(kuò)張率不同,這樣提取出特征的感受野不同,使得輸出特征的豐富性大幅增加。再將這些特征直接拼接,并使用1×1卷積將特征進(jìn)行融合,融合后使用4倍的反卷積將特征圖映射至原圖的1/4大小。另一條支路上,直接提取Resnet18中Block1輸出的1/4特征圖,這一特征圖尺寸與第1條支路的特征圖尺寸相同,將2條支路輸出的特征圖進(jìn)行拼接,組成一個(gè)特征圖。這一特征圖結(jié)合了主干特征提取網(wǎng)絡(luò)的深層網(wǎng)絡(luò)和淺層網(wǎng)絡(luò),使網(wǎng)絡(luò)得到的圖片特征更加豐富。然后使用3×3的網(wǎng)絡(luò)將2個(gè)特征融合,最后使用4倍的反卷積,將該特征圖映射回原圖大小,進(jìn)行像素級(jí)語義分割。
將知識(shí)蒸餾模型壓縮算法用于像素級(jí)語義分割,對(duì)車輛的可行駛區(qū)域語義分割算法進(jìn)行研究。本文使用的學(xué)生網(wǎng)絡(luò)是上節(jié)中以Resnet18作為主干網(wǎng)絡(luò)構(gòu)造的DeepLabV3+模型,教師網(wǎng)絡(luò)是以Resnext29[14]作為主干網(wǎng)絡(luò)的DeepLabV3+模型。參照?qǐng)D3,主干網(wǎng)絡(luò)由Resnet18改為Resnext29,Resnext29網(wǎng)絡(luò)的參數(shù)數(shù)量是3 452萬個(gè),幾乎是Resnet18參數(shù)數(shù)量的10倍。研究使用的數(shù)據(jù)集為BDD100K中的可行駛區(qū)域數(shù)據(jù),在一臺(tái)配備Intel i7-5930K CPU和NVIDIA Titan X GPU的工作站上進(jìn)行訓(xùn)練。
圖3 以Resnet18為主干網(wǎng)絡(luò)構(gòu)建的DeepLabV3+網(wǎng)絡(luò)結(jié)構(gòu)
知識(shí)蒸餾模型壓縮算法在圖像語義分割中有2處應(yīng)用:一處是將DeepLabV3+網(wǎng)絡(luò)模型的主干網(wǎng)絡(luò)加載預(yù)蒸餾訓(xùn)練后的Resnet18權(quán)重參數(shù)(序號(hào)3);另一處是直接更改DeepLabV3+模型分割訓(xùn)練的損失函數(shù)。使用Resnext29為主干網(wǎng)絡(luò)構(gòu)建的DeepLabV3+模型作為教師網(wǎng)絡(luò),使用Resnet18為主干網(wǎng)絡(luò)構(gòu)建的Deep-LabV3+模型作為學(xué)生網(wǎng)絡(luò)進(jìn)行蒸餾訓(xùn)練(序號(hào)4)。本文分別對(duì)這2種方式以及2種方式相結(jié)合(序號(hào)5)的訓(xùn)練模型進(jìn)行車輛可行駛區(qū)域的分割訓(xùn)練以及測(cè)試。分割結(jié)果如表1所示,兩種單獨(dú)優(yōu)化方式均可以提升以Resnet18作為主干網(wǎng)絡(luò)構(gòu)建的DeepLabV3+分割模型的精度,而把2種方式結(jié)合起來可以進(jìn)一步提高分割精度,將直接可行駛區(qū)域交并比IOU1提高約2%,間接可行駛區(qū)域交并比IOU2提高約4%,整體像素準(zhǔn)確率提高約1.5%。
將最終的優(yōu)化模型(序號(hào)5)與優(yōu)化前的模型(序號(hào)2)在BDD100K驗(yàn)證集上進(jìn)行分割效果對(duì)比,選取夜間、彎道、雙向車道3種不同的交通場(chǎng)景,結(jié)果如圖4~圖6所示。結(jié)果表明,經(jīng)過蒸餾訓(xùn)練,直接可行駛區(qū)域和間接可行駛區(qū)域的分割結(jié)果在細(xì)節(jié)上均有明顯提升,蒸餾后能夠識(shí)別出幾乎所有可行駛區(qū)域。
表1 使用蒸餾后Resnet18作為主干網(wǎng)絡(luò)的DeepLabV3+可行駛區(qū)域分割結(jié)果
圖4 夜間場(chǎng)景蒸餾訓(xùn)練前、后道路分割效果
圖5 彎道場(chǎng)景蒸餾訓(xùn)練前、后道路分割效果
圖6 對(duì)向車道蒸餾訓(xùn)練前、后道路分割效果
為了更好地仿真該語義分割模型在實(shí)際道路環(huán)境中的分割效果,對(duì)上海市內(nèi)一些路段進(jìn)行路況采集。采集車輛為榮威eRX5,視頻采集設(shè)備為米家行車記錄儀,如圖7所示。
圖7 道路圖像采集車輛及設(shè)備安裝情況
在上海市嘉定區(qū)和青浦區(qū)等地進(jìn)行視頻采集,包括曹安公路、嘉松公路等路段。所采集道路情況包括柏油路段和水泥路段等道路,交通情況包括兩車道、三車道、彎道、雙向車道等情況,視線情況包括白天和夜間等。道路視頻采集后,利用本文所構(gòu)建的語義分割網(wǎng)絡(luò)進(jìn)行分割試驗(yàn),以驗(yàn)證模型的分割實(shí)用性,結(jié)果如圖8~圖12所示。
圖8 兩車道分割結(jié)果
圖9 三車道分割結(jié)果
圖10 彎道分割結(jié)果
由實(shí)際道路測(cè)試結(jié)果可知,本文所構(gòu)建的分割模型在兩車道、三車道、彎道、雙向車道等道路場(chǎng)景以及白天和夜間的視線情況下都能準(zhǔn)確地分割出2種可行駛區(qū)域,表現(xiàn)出了良好的適用性。
圖11 雙向車道分割結(jié)果
圖12 夜間道路分割結(jié)果
本文針對(duì)無人駕駛汽車道路環(huán)境的感知問題,提出使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)車輛的直接可行駛區(qū)域與間接可行駛區(qū)域進(jìn)行像素級(jí)語義分割,并將用于圖像分類的知識(shí)蒸餾模型壓縮算法應(yīng)用于圖像語義分割問題,對(duì)以Resnet18作為主干網(wǎng)絡(luò)的DeepLabV3+分割模型進(jìn)行優(yōu)化,將算法的平均交并比提高約3%。最后使用BDD100K驗(yàn)證集以及實(shí)際道路測(cè)試對(duì)比不同的道路環(huán)境下優(yōu)化前、后的分割結(jié)果,驗(yàn)證了模型分割的實(shí)用性。