吉宸佳 南京信息工程大學(xué)遙感與測(cè)繪工程學(xué)院
近年來,隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)由于其精的優(yōu)越性,被廣泛應(yīng)用于圖像處理領(lǐng)域。與傳統(tǒng)圖像處理方法相比,卷積神經(jīng)網(wǎng)絡(luò)在處理大規(guī)模的圖像數(shù)據(jù)集上著有非常好的效果,通過卷積操作,獲得更隱藏的信息,通過池化操作減少圖像尺度。2012年AlexNet在ImageNet競賽中勇奪桂冠,自此掀起了研究卷積神經(jīng)網(wǎng)絡(luò)的浪潮。為了提升卷積網(wǎng)絡(luò)的精度,并且獲得更深層次的信息,越來越深的卷積層被運(yùn)用到其中。在實(shí)驗(yàn)環(huán)境中需要購買大量計(jì)算能力強(qiáng)勁的圖形圖像處理器來提升計(jì)算效率,大量的參數(shù)、復(fù)雜的網(wǎng)絡(luò)理解起來也有困難。為了讓卷積神經(jīng)網(wǎng)絡(luò)能夠運(yùn)行在更多計(jì)算機(jī)上,讓神經(jīng)網(wǎng)絡(luò)運(yùn)行于移動(dòng)設(shè)備,如何簡化卷積神經(jīng)網(wǎng)絡(luò)成為了當(dāng)前一項(xiàng)的研究問題。
神經(jīng)網(wǎng)絡(luò)簡化的原則是獲得更高效的網(wǎng)絡(luò),優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)和卷積計(jì)算,減少網(wǎng)絡(luò)參數(shù)的同時(shí)不損失性能,加強(qiáng)對(duì)網(wǎng)絡(luò)內(nèi)部的理解。簡化神經(jīng)網(wǎng)絡(luò)可分為兩類:壓縮傳統(tǒng)網(wǎng)絡(luò)和設(shè)計(jì)新的網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)絡(luò)模型壓縮的方法分為的思想是,去除冗余和不重要的參數(shù),使用張量分解估計(jì)網(wǎng)絡(luò)中最具信息量參數(shù),設(shè)計(jì)特殊結(jié)構(gòu)的卷積核減少復(fù)雜度。本文介紹的第一種SqueezeNet 模型屬于網(wǎng)絡(luò)模型壓縮方法。MobileNet 和ShuffleNet 為新提出的輕量化卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型。輕量化卷積神經(jīng)網(wǎng)絡(luò)的共同特點(diǎn)是由模塊組成,網(wǎng)絡(luò)的核心是這些模塊,由于篇幅有限,本文著重介紹個(gè)網(wǎng)絡(luò)的核心模塊。
SqueezeNet 發(fā)表于ICLR-2017,是伯克利和斯坦福研究人員合作的成果。SqueezeNet 對(duì)傳統(tǒng)卷積網(wǎng)絡(luò)采用了squeeze 的壓縮操作。SqueezeNet采用了類似于GoogleNet 的inception 想,提出了核心的fire module 模塊,此模塊由squeeze 層和expand 層組成。Squeeze 層使用1×1 的點(diǎn)卷積方式處理特征圖,以此進(jìn)行特征圖降維,減少特征的通道數(shù),達(dá)到壓縮特征圖的目的,所以命名為squeeze。Expand 層對(duì)特征圖進(jìn)行連接,該層采用1×1 和3×3 的兩種卷積核卷積特征圖,得到兩類特征圖。fire module 模塊的結(jié)構(gòu)如圖1 所示。
圖1 fire module 模塊
在整體網(wǎng)絡(luò)中,反復(fù)多次使用fire module 模塊,完成整個(gè)網(wǎng)絡(luò)的構(gòu)建。輸入的特征圖尺度是H×W×N,經(jīng)過fire module 層后得到的特征圖尺度為分別為expand 層中1×1 和3×3 的數(shù)量。此外,該模型在多個(gè)模塊后使用池化操作,保留了較大的特征值。SqueezeNet 的改進(jìn)版本為SqueezeNext,SqueezeNext 對(duì)SqueezeNet 中的卷積核進(jìn)行了改進(jìn),并引入殘差網(wǎng)絡(luò)的結(jié)構(gòu),復(fù)用前層特征圖。
ShuffleNet 由國內(nèi)知名的計(jì)算機(jī)視覺公司曠視科技提出。ShuffleNet的網(wǎng)絡(luò)結(jié)構(gòu)中,以重新排列網(wǎng)絡(luò)結(jié)構(gòu)為中心設(shè)計(jì)網(wǎng)絡(luò),因此命名為ShuffleNet。該網(wǎng)絡(luò)的核心模塊對(duì)特征圖的通道進(jìn)行有規(guī)律的重排。在傳統(tǒng)網(wǎng)絡(luò)中,直接對(duì)每個(gè)通道的特征圖進(jìn)行操作,重排通道的意義是保證了信息流的充分流通和共享,保留圖像各通道之間的關(guān)聯(lián)性特征等重要信息。此外,ShuffleNet 中仍然采用了殘差網(wǎng)絡(luò)結(jié)構(gòu),將重排通道單元的前后3 層加入到一個(gè)殘差單元中。ShuffleNet將殘差網(wǎng)絡(luò)密集逐點(diǎn)卷積換成逐點(diǎn)分組卷積,通過組卷及可以獲得更高效的網(wǎng)絡(luò)。在第一個(gè)分組卷積后增加了一個(gè)通道重排操作,并刪除3×3 卷積后的激活函數(shù)。在shortcut 連接中,如果卷積步長為1,輸入與輸出特征的空間尺寸相等,兩側(cè)特征圖直接相加。當(dāng)卷積步長為2,輸出特征尺度大小為原圖1/2,對(duì)原輸入采用步長為2 的3×3 均值池化以縮小特征圖,接下來將得到的特征圖與輸出進(jìn)行拼接,而不是相加,使通道數(shù)加倍,這樣做的目的主要是降低計(jì)算復(fù)雜度與參數(shù)量。其核心模塊的結(jié)構(gòu)如圖2 所示。
圖2 ShuffleNet 核心模塊
MobileNet 由谷歌的團(tuán)隊(duì)提出,設(shè)計(jì)該網(wǎng)絡(luò)的初衷是讓卷積網(wǎng)絡(luò)可以在移動(dòng)端設(shè)備運(yùn)行。在MobileNet 中引入了深度可分離的卷積模塊替代傳統(tǒng)卷積操作。該網(wǎng)絡(luò)中的核心模塊也可以分為兩部分即深度卷積與逐點(diǎn)卷積。第一部分深度卷積,對(duì)輸入H×W×N 的特征圖分離通道,對(duì)每個(gè)通道進(jìn)行普通卷積操作,該步卷積核尺寸一般為3 或5 的一維卷積核,共有N個(gè)K×K 的一維卷積核。分別使用一維卷積核對(duì)特征圖的N 個(gè)通道卷積,得到和原始尺度大小一樣的特征圖。第二部分的逐點(diǎn)卷積,對(duì)上層特征圖采用M 個(gè)1×1×N 的逐點(diǎn)卷積,輸出M 個(gè)H×W 的特征圖。通過計(jì)算傳統(tǒng)卷積核深度可分離卷積的計(jì)算復(fù)雜度,該模型將復(fù)雜度減少了8-9 倍。圖3 所示為MobileNet 的深度可分離卷積模塊。
圖3 深度可分離卷積模塊
MobileNet v1 的創(chuàng)新之處是設(shè)計(jì)了深度可分離卷積。在第一層使用普通卷積提取圖像特征圖,后面的網(wǎng)絡(luò)全部使用該模塊進(jìn)行特征提取。全網(wǎng)絡(luò)僅在全連接層前使用均值池化操作,前層結(jié)構(gòu)通過設(shè)置深度卷積的不同步長完成數(shù)據(jù)降維,大大減小了模型的規(guī)模。在改進(jìn)版本的MobileNet v2 中,考慮到神經(jīng)網(wǎng)絡(luò)會(huì)產(chǎn)生梯度消失的問題,借鑒了殘差網(wǎng)絡(luò)的殘差單元結(jié)構(gòu)解決該問題,保證數(shù)據(jù)能夠在各層之間流通,重用特征。V2 版本中采用了反向殘差結(jié)構(gòu),該結(jié)構(gòu)的特征圖通道維度先增加后減少,與殘差單元中特征圖通道維度先減少后增加相反。
本文使用ImageNet2012 數(shù)據(jù)集測(cè)試文中的三種六個(gè)輕量化網(wǎng)絡(luò)模型,在該數(shù)據(jù)及上的分類準(zhǔn)確率、復(fù)雜度和模型參數(shù)量,復(fù)雜度采用大于500MFLOPs 來模擬大型復(fù)雜數(shù)據(jù),結(jié)果如表1 所示。在同等的計(jì)算預(yù)算下,ShuffleNet v2 的分類準(zhǔn)精確度大于其他五個(gè)輕量型網(wǎng)絡(luò)。SqueezeNet 和SqueezeNext 由于其參數(shù)量小,在模型占用系統(tǒng)資源上有較大的優(yōu)勢(shì)。與傳統(tǒng)卷積網(wǎng)絡(luò)AlexNet、VGG、GoogleNet 對(duì)比,輕量化模型在占用較少計(jì)算資源的基礎(chǔ)上,同時(shí)計(jì)算復(fù)雜度也降低,準(zhǔn)確度方面也與傳統(tǒng)網(wǎng)絡(luò)持平甚至有所超越,MobileNet、ShuffleNet 在降低了計(jì)算復(fù)雜度的基礎(chǔ)上,在精確度上與VGG-16 持平。這說明在進(jìn)行簡化神經(jīng)網(wǎng)絡(luò)的同時(shí)并不需要一味追求模型精度,減少參數(shù)、優(yōu)化模型以降低計(jì)算復(fù)雜度也能夠讓模型準(zhǔn)確度得到改善。
表1 輕量化網(wǎng)絡(luò)分類結(jié)果
本文介紹了三種輕量化卷積神經(jīng)網(wǎng)絡(luò)以及其后續(xù)的優(yōu)化和變種網(wǎng)絡(luò)模型。當(dāng)前研究輕量型網(wǎng)絡(luò)的研究熱點(diǎn)是使用殘差網(wǎng)絡(luò),復(fù)用前一層或者前幾層特征圖進(jìn)行下層特征融合,同時(shí)在卷積核中使用點(diǎn)卷積來減少網(wǎng)絡(luò)參數(shù)和規(guī)模。輕量化卷積神經(jīng)網(wǎng)絡(luò)的缺點(diǎn)如下:不能處理大量的圖像和分辨率、維度較高的圖像,如何處理大規(guī)模圖像也是需要解決的問題。但是輕量型網(wǎng)絡(luò)的出現(xiàn),對(duì)傳統(tǒng)網(wǎng)絡(luò)的改進(jìn)起到了一定的補(bǔ)充作用,輕量型網(wǎng)絡(luò)占用較少資源處理同樣的數(shù)據(jù),減少處理器計(jì)算負(fù)荷,對(duì)于傳統(tǒng)網(wǎng)絡(luò)效率的優(yōu)化來說未嘗不是一種有益的方法,通過輕量化的優(yōu)化以后的網(wǎng)絡(luò)能夠更高效的運(yùn)行,同時(shí)輕量化網(wǎng)絡(luò)將技術(shù)運(yùn)用到實(shí)際生產(chǎn)生活中。