張曉青,劉小舟,陳 登
(1.浙江工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310023;2.浙江省衛(wèi)生健康信息中心,浙江 杭州 310006;3.浙江省科技信息研究院,浙江 杭州 310006;4.浙江省數(shù)據(jù)開放重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310053)
圖像分類是通過對(duì)圖像的分析,將不同圖像劃分到不同類別,以實(shí)現(xiàn)最小分類誤差的一種技術(shù)。近十年來,隨著深度學(xué)習(xí)技術(shù)的出現(xiàn),以卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)為代表的深度學(xué)習(xí)技術(shù)已在很多方面取得了重大突破,特別是在計(jì)算機(jī)視覺領(lǐng)域,如圖像識(shí)別[1]、圖像檢索[2]和圖像分類[3-5]等,而圖像分類是視覺識(shí)別的基本和重要任務(wù)之一。與人工提取特征的傳統(tǒng)圖像分類方法相比,基于CNN的圖像分類方法使用卷積操作對(duì)輸入圖像進(jìn)行特征提取,可以有效地從大量樣本中學(xué)習(xí)特征表達(dá),模型泛化能力更強(qiáng)[6]。
然而,隨著CNN越來越深,結(jié)構(gòu)越來越復(fù)雜,模型的參數(shù)量和計(jì)算量也越來越大。由于存儲(chǔ)空間和功耗的限制,CNN模型在嵌入式設(shè)備和移動(dòng)終端上的存儲(chǔ)與計(jì)算仍然面臨著巨大的挑戰(zhàn)。一方面,考慮到終端設(shè)備的存儲(chǔ)空間有限,大量高分辨率圖片在終端的存儲(chǔ)是不符合實(shí)際的,因此,利用低分辨率數(shù)據(jù)集進(jìn)行圖像分類是一種可行的方案。另一方面,伴隨著物聯(lián)網(wǎng)時(shí)代的來臨,物聯(lián)網(wǎng)應(yīng)用對(duì)響應(yīng)時(shí)間、隱私數(shù)據(jù)保護(hù)和大數(shù)據(jù)傳輸?shù)榷继岢隽烁叩囊螅惹行枰x線的任務(wù)執(zhí)行方式。因此,將基于圖像分類的CNN模型應(yīng)用到移動(dòng)設(shè)備成了一個(gè)亟待解決的問題。
為了提高CNN的效率,很多研究者把注意力轉(zhuǎn)向設(shè)計(jì)輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)(lightweight convolutional neural network,LCNN)。MobileNetV2[7]是一種專為移動(dòng)設(shè)備設(shè)計(jì)的通用LCNN,它使用深度可分離卷積來深化網(wǎng)絡(luò),減少參數(shù)和計(jì)算。雖然該網(wǎng)絡(luò)相比VGG等更適合部署在移動(dòng)設(shè)備上,但其瓶頸結(jié)構(gòu)(Bottleneck)仍存在大量昂貴的逐點(diǎn)卷積。為了進(jìn)一步減少LCNN模型的計(jì)算復(fù)雜度,將其部署在移動(dòng)設(shè)備上,本文提出了一種基于LCNN的移動(dòng)端圖像分類模型,將輕量級(jí)模型的設(shè)計(jì)思想引入到基于CNN的圖像分類模型中。通過訓(xùn)練LCNN,并將訓(xùn)練好的模型經(jīng)模型轉(zhuǎn)換部署到Android平臺(tái),實(shí)現(xiàn)移動(dòng)端圖像分類功能。綜上,本文的主要貢獻(xiàn)如下:
(1)提出了一種高效的卷積計(jì)算模塊Extremely Lightweight Block(ELBlock)。該模塊采用逐點(diǎn)卷積疊加深度可分離卷積的方法,先對(duì)逐點(diǎn)卷積進(jìn)行分組以增加相鄰層過濾器之間的對(duì)角相關(guān)性,并進(jìn)一步降低卷積操作的計(jì)算復(fù)雜度,再利用通道混洗關(guān)聯(lián)輸入和輸出通道,提高特征的信息表示能力。
(2)基于ELBlock設(shè)計(jì)了一種輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),命名為Extremely Lightweight Net(ELNet)。其主體結(jié)構(gòu)由ELBlock疊加組成,用二元自適應(yīng)均值池化層代替平均池化層,比MobileNetV2更簡潔、高效。
(3)在CIFAR-10、CIFAR-100、MINIST、SVHN等數(shù)據(jù)集上的結(jié)果表明,ELNet在保證較高分類精度的同時(shí),不僅大大降低了模型的計(jì)算復(fù)雜度與內(nèi)存占用,還減少了模型的推理時(shí)間。
自從AlexNet在ILSVRC-2012圖像分類競(jìng)賽中取得驚人成績以來,越來越多的研究集中在CNN體系結(jié)構(gòu)的改進(jìn)上。從利用神經(jīng)網(wǎng)絡(luò)模型解決問題的過程來看,人們常常傾向于設(shè)計(jì)更為復(fù)雜的CNN收集更多的數(shù)據(jù)以期獲得更好的效果。從總體的趨勢(shì)看,這些網(wǎng)絡(luò)都是趨于向更深的網(wǎng)絡(luò)層次發(fā)展,隨著層次的加深,網(wǎng)絡(luò)訓(xùn)練所需的參數(shù)增多,計(jì)算代價(jià)增大,所需的存儲(chǔ)空間也會(huì)變大,很難部署在移動(dòng)和嵌入式設(shè)備上。與常見的深度神經(jīng)網(wǎng)絡(luò)相比,LCNN是一組特殊的深度學(xué)習(xí)模型,具有參數(shù)少、計(jì)算復(fù)雜度低、性能損失有限的特點(diǎn),可以廣泛應(yīng)用在移動(dòng)設(shè)備中。常見的技術(shù)包括剪枝[8]、量化[9]、知識(shí)蒸餾[10]和模型精簡設(shè)計(jì)[11-15]等。借助常見的知識(shí)蒸餾、通道剪枝、量化等模型壓縮技術(shù)雖然可以降低模型參數(shù)量和計(jì)算量,但在精度和幀率之間各種權(quán)衡也非常繁瑣。因此,人工設(shè)計(jì)LCNN模型是模型輕量化的最為有效的解決方法,直接適用于移動(dòng)和嵌入式設(shè)備。
人工設(shè)計(jì)LCNN有很多設(shè)計(jì)原則,效率問題是一個(gè)重要的設(shè)計(jì)指標(biāo)。現(xiàn)有研究多是從減少卷積核冗余、減少輸入特征通道數(shù)和設(shè)計(jì)更高效的模塊等方面來實(shí)現(xiàn)。SqueezeNet[11]用小卷積核替換大卷積核并減少其輸入的通道數(shù)。Xception[12]和MobileNets[13]設(shè)計(jì)了兩種不同的深度可分離式卷積,減少了網(wǎng)絡(luò)的計(jì)算復(fù)雜度。ShuffleNet系列[14,15]充分利用組卷積和通道混洗進(jìn)一步提高模型效率。此外,對(duì)設(shè)備上應(yīng)用程序的巨大需求鼓勵(lì)研究具有最小延遲和內(nèi)存使用的資源高效模型。MobileNetV2在深度可分卷積的基礎(chǔ)上提出一種具有線性瓶頸的倒置殘差結(jié)構(gòu),先將輸入的低維壓縮表示擴(kuò)展到高維,使用深度卷積做過濾,隨后利用線性卷積將特征映射回低維表示。該結(jié)構(gòu)使網(wǎng)絡(luò)更深的同時(shí),模型更小、速度更快,特別適用于移動(dòng)網(wǎng)絡(luò)設(shè)計(jì)。EfficientNet[16]提出一種新型模型縮放方法,利用神經(jīng)網(wǎng)絡(luò)搜索,使用復(fù)合系數(shù)統(tǒng)一縮放模型的所有維度,極大地提升了模型的準(zhǔn)確率和效率。GostNet[17]提出了一種新型端側(cè)神經(jīng)網(wǎng)絡(luò)架構(gòu),Ghost模塊可以用更少的參數(shù)生成更多的特征圖,效果相比MobileNet更好。MicroNet[18]旨在以極低的計(jì)算成本解決性能大幅下降的問題,通過稀疏連通性和動(dòng)態(tài)激活函數(shù)有效提高模型精度。Zhang Q[19]在結(jié)構(gòu)、算法和實(shí)現(xiàn)3個(gè)層次上研究了CNN的加速方法。
組卷積(GConv)是一種直接有效的技術(shù),常用在輕量型高效網(wǎng)絡(luò)中用于節(jié)省計(jì)算量,作為小型 GPU 的解決方法被引入。深度可分離卷積是組卷積的一個(gè)極端情況,分別對(duì)每個(gè)通道執(zhí)行卷積,用同等的參數(shù)量和計(jì)算量就能生成多個(gè)特征圖。對(duì)于移動(dòng)平臺(tái),MobileNets和MobileNetV2使用帶有超參數(shù)的深度卷積來控制模型的大小。
通道混洗(Channel Shuffle)是性能提升的一個(gè)未被充分探索的技術(shù),通常需要少量的額外成本,就可以將稀疏的通道特征進(jìn)行融合。ShuffleNet對(duì)兩階段組卷積中的通道進(jìn)行混洗,實(shí)現(xiàn)了多組卷積層的跨組信息流動(dòng)。除了隨機(jī)通道分組外,SENet[20]還研究了一種動(dòng)態(tài)通道重加權(quán)方案,通過關(guān)注通道之間的關(guān)系,使模型自動(dòng)學(xué)習(xí)不同通道特征的重要性,以較小的成本提高了模型容量。通道分組和通道混洗的有效性激發(fā)了本文的工作思路。
通過對(duì)已有方法的學(xué)習(xí),為了將深度學(xué)習(xí)模型應(yīng)用到移動(dòng)設(shè)備上,本文提出了一種面向移動(dòng)端圖像分類的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型,包括卷積計(jì)算模塊ELBlock的設(shè)計(jì)和ELNet網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)。分類訓(xùn)練結(jié)束后通過模型轉(zhuǎn)換方法完成深度學(xué)習(xí)模型在移動(dòng)端的部署,并通過Android平臺(tái)的圖像分類系統(tǒng)實(shí)現(xiàn)移動(dòng)端圖像分類。
2.1.1 ELBlock卷積計(jì)算模塊
深度可分離卷積被證明是構(gòu)建高效神經(jīng)網(wǎng)絡(luò)架構(gòu)的有效模塊,使用分組和分離的思想,大大減少了卷積的計(jì)算量。分組卷積主要為了解決卷積運(yùn)算時(shí)單個(gè)GPU無法處理含有大量計(jì)算和存儲(chǔ)需求的問題,多被用于構(gòu)建用于移動(dòng)設(shè)備的小型網(wǎng)絡(luò)模型。分離卷積將空間維度與深度維度進(jìn)行分離,先考慮區(qū)域,再考慮通道,實(shí)現(xiàn)了通道和區(qū)域的分離。假設(shè)深度可分離卷積的輸入和輸出是大小為H1×W1×C1、H2×W2×C2的三維特征圖,其中Hi、Wi、Ci表示特征圖的高度、寬度和通道數(shù),i表示輸入(i=1)和輸出(i=2)。對(duì)于大小為K×K的卷積核,深度可分離卷積的MAdd總數(shù)為
(K×K+C2)×C1×H2×W2
(1)
與標(biāo)準(zhǔn)卷積相比,深度可分離卷積幾乎減少了K×K倍的計(jì)算成本,但往往會(huì)導(dǎo)致特征圖表達(dá)能力的降低。
為了使用深度可分離卷積并提高特征的表達(dá)能力,MobileNetV2在深度卷積之前添加擴(kuò)展層來增加深度可分離卷積的輸入通道數(shù)。擴(kuò)展操作通過1×1逐點(diǎn)卷積將輸入通道數(shù)擴(kuò)展為t倍,提高了特征的表征能力。但是擴(kuò)展層中存在的1×1卷積卻占用了大量的計(jì)算資源。綜合考慮參數(shù)量、計(jì)算量和模型占用等因素,本文使用逐點(diǎn)卷積疊加深度可分離卷積的方法來構(gòu)建卷積計(jì)算模塊ELBlock,并對(duì)逐點(diǎn)卷積進(jìn)行分組來達(dá)到減少計(jì)算量的目的。
ELBlock結(jié)構(gòu)如圖1所示。首先,使用組卷積可以有效減少逐點(diǎn)卷積的計(jì)算和參數(shù)量,但分組會(huì)導(dǎo)致不同組間的特征信息不能交換,在一定程度上削弱模型性能。為了解決這個(gè)問題,在第一個(gè)分組卷積層之后引入通道混洗。通道混洗對(duì)組卷積后的特征圖進(jìn)行重組,通過在不同組中進(jìn)行統(tǒng)一的通道交換,可以在不增加計(jì)算量的情況下提高特征的表達(dá)能力和模型泛化能力。ELBlock的第三層是深度卷積層(DWConv),與傳統(tǒng)的卷積操作不同,深度卷積的卷積核只負(fù)責(zé)一個(gè)通道。深度卷積之后是第二個(gè)分組卷積層,該層在深度方向上對(duì)上一步的特征圖進(jìn)行加權(quán)組合。
圖1 高效的ELBlock結(jié)構(gòu)
2.1.2 ELBlock性能分析
本小節(jié)詳細(xì)討論ELBlock與Bottleneck的計(jì)算復(fù)雜度,并從理論上說明ELBlock相對(duì)于后者的優(yōu)勢(shì)。ELBlock參數(shù)見表1,輸入特征圖尺寸為H×W×C1, 輸出特征圖尺寸為H×W×C2, 內(nèi)部Dwise的輸入輸出通道數(shù)為tC1, 其中H、W、C分別代表特征圖的高、寬和特征圖的通道數(shù)。第一層是標(biāo)準(zhǔn)卷積操作,卷積核為1×1×C1, 則參數(shù)量為:1×1×C1×tC1, 計(jì)算量為:1×1×C1×H×W×tC1。 接下來兩層是深度可分離卷積,卷積核為3×3,則深度可分離卷積參數(shù)量為:3×3×tC1+tC1×C2, 計(jì)算量為:3×3×tC1×H×W+tC1×H×W×C2。 因此,Bottleneck的總參數(shù)量為
(2)
表1 ELBlock結(jié)構(gòu)
總計(jì)算量為
(3)
改進(jìn)后,ELBlock將擴(kuò)展層中的1×1卷積按通道數(shù)分成g組,則第一層每組輸入特征圖尺寸為H×W×C1/g, 對(duì)應(yīng)卷積核尺寸為1×1×C1/g, 則參數(shù)量為:C1/g×(tC1)/g×g, 計(jì)算量為:C1/g×H×W×(tC1)/g×g。 通道混洗層的計(jì)算復(fù)雜度很低,因此不做考慮。對(duì)于后面兩層深度可分離卷積,參數(shù)量為:3×3×tC1+(tC1)/g×C2/g×g, 計(jì)算量為:3×3×tC1×H×W+tC1/g×H×W×C2/g×g。 因此,ELBlock的總參數(shù)量為
(4)
總計(jì)算量為
(5)
由此可見,Bottleneck與ELBlock的參數(shù)量比值為
(6)
Bottleneck與ELBlock的計(jì)算量比值為
(7)
本節(jié)詳細(xì)描述ELNet模型的結(jié)構(gòu)。ELNet是由一系列ELBlocks構(gòu)成的新型高效卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)。該網(wǎng)絡(luò)的架構(gòu)受啟發(fā)于MobileNetV2,但是所有的倒置殘差塊都被ELBlock所替代,并且可以根據(jù)目標(biāo)任務(wù)的精度和移動(dòng)設(shè)備的算力不同為ELBlock選擇合適的參數(shù)。
ELNet的體系結(jié)構(gòu)如圖2所示,它由分組擴(kuò)展層、通道混洗層、深度卷積層和分組逐點(diǎn)卷積層組成。網(wǎng)絡(luò)初始使用32個(gè)標(biāo)準(zhǔn)的3×3卷積來構(gòu)建最初的濾波器組,這一濾波器起的作用是檢測(cè)邊緣[13]。改進(jìn)后的ELBlock不僅降低了卷積的計(jì)算資源,還改變了模型的輸出通道。因此,本文采用直接疊加的方式構(gòu)建網(wǎng)絡(luò),主體結(jié)構(gòu)由7個(gè)改進(jìn)后的ELBlock組成,接著使用1×1卷積進(jìn)行升維,增加數(shù)據(jù)量。最后采用二元自適應(yīng)均值池化層(AdaptiveAvgPool2d)來代替平均池化層,用于輸出相同大小的特征圖。為了根據(jù)提取的圖像特征進(jìn)行圖像分類,在最后一層采用線性分類器輸出給定圖片的分類結(jié)果。當(dāng)分類訓(xùn)練過程結(jié)束,通過修改預(yù)訓(xùn)練模型實(shí)例提取想要的層級(jí)。
圖2 本文提出的ELNet網(wǎng)絡(luò)結(jié)構(gòu)
分類模型的設(shè)計(jì)從減少計(jì)算量、參數(shù)量的角度出發(fā),將Bottleneck中大量的1×1逐點(diǎn)卷積進(jìn)行分組,隨后在1×1卷積后使用通道混洗彌補(bǔ)分組卷積造成的通道間特征融合問題。此外,在模型結(jié)構(gòu)方面也做了精簡,從而達(dá)到在減少模型計(jì)算量的情況下,不損失分類精度的效果。
大部分深度學(xué)習(xí)模型因其計(jì)算量和參數(shù)量的限制,很難部署移動(dòng)設(shè)備和嵌入式系統(tǒng)中。針對(duì)這個(gè)問題,本文提出使用輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行分類任務(wù)的訓(xùn)練,之后將模型通過轉(zhuǎn)換部署在移動(dòng)設(shè)備上?;谶@個(gè)思路,先使用ELNet模型進(jìn)行分類訓(xùn)練,保存模型參數(shù)。在移植到移動(dòng)端之前,通過加載預(yù)訓(xùn)練模型,并使用Pytorch Mobile框架提供的模型轉(zhuǎn)換功能將預(yù)訓(xùn)練模型轉(zhuǎn)換為可在終端環(huán)境中使用的算法模型。最后,在Android圖像分類系統(tǒng)中加載該算法模型并實(shí)現(xiàn)移動(dòng)端圖像分類功能。
實(shí)驗(yàn)使用目前流行的深度學(xué)習(xí)框架Pytorch來訓(xùn)練分類模型,采用Pytorch Mobile框架完成深度學(xué)習(xí)模型在移動(dòng)端的部署。實(shí)驗(yàn)采用SGD優(yōu)化算法進(jìn)行優(yōu)化,權(quán)重衰減為1×10-4,訓(xùn)練時(shí)batch_size為128,測(cè)試時(shí)batch_size為64。初始學(xué)習(xí)率為0.1,根據(jù)訓(xùn)練epoch總數(shù)的不同,本文設(shè)置不同的epoch數(shù)來降低學(xué)習(xí)率。每完成一次循環(huán)迭代后保存模型并計(jì)算評(píng)價(jià)指標(biāo),比較指標(biāo)數(shù)值并更新保存的模型,在所有迭代完成后將最終結(jié)果記錄下來。
CIFAR-10數(shù)據(jù)集由10個(gè)類別的60 000個(gè)32×32彩色圖像組成,每個(gè)類有6000個(gè)圖像,有50 000個(gè)訓(xùn)練圖像和10 000個(gè)測(cè)試圖像組成。
CIFAR-100數(shù)據(jù)集的圖像大小與CIFAR-10一樣,同為32×32像素,但是該數(shù)據(jù)庫有100類圖像,每一類包括600張彩色圖片,分別為500張訓(xùn)練圖片和100張測(cè)試圖片。
MINIST數(shù)據(jù)集是機(jī)器學(xué)習(xí)領(lǐng)域非常經(jīng)典的數(shù)據(jù)集,由60 000個(gè)訓(xùn)練樣本和10 000個(gè)測(cè)試樣本組成,每個(gè)樣本都是一張28×28像素的灰度手寫數(shù)字圖片。由于Pytorch Mobile不支持讀取灰度圖像,所以采用了疊加通道的方式進(jìn)行訓(xùn)練。
SVHN(street view house number)數(shù)據(jù)集來源于谷歌街景門牌號(hào)碼,原生數(shù)據(jù)集是一些未經(jīng)處理的彩色圖片,每張圖片上有多個(gè)數(shù)字。數(shù)據(jù)集包含PNG圖像和digitStruct.mat文件,本文使用的是.mat文件,每張圖像大小為32×32。當(dāng)執(zhí)行圖片檢索時(shí),需要將.mat文件轉(zhuǎn)換成RGB圖片,將圖像的文件名作為GroundTruth。
本文使用廣泛采用的評(píng)估指標(biāo),即參數(shù)數(shù)量(Params)和浮點(diǎn)運(yùn)算(FLOPs)來評(píng)估模型的計(jì)算復(fù)雜度,使用Model Size來衡量模型的內(nèi)存占用,并計(jì)算了模型在移動(dòng)設(shè)備的實(shí)際推理時(shí)間。FLOPs在一定程度上反映了模型的推理時(shí)間,若復(fù)雜度太高,會(huì)導(dǎo)致模型訓(xùn)練和推理花費(fèi)大量時(shí)間。Params和Model Size決定了模型的內(nèi)存占用,是影響算法模型部署的關(guān)鍵因素。為了計(jì)算FLOPs的數(shù)量,本文只考慮卷積操作的計(jì)算量,其它操作(如批量歸一化和池化)的計(jì)算量與卷積操作是微不足道的。如Chen等[21]所述,對(duì)于卷積核,有
FLOPs=2HW×(Cin×K2+1)×Cout
(8)
其中,H、W和Cin是輸入特征圖的高度、寬度和通道數(shù),K是核的寬度(假定是對(duì)稱的),Cout是輸出通道的數(shù)量。在計(jì)算模型的參數(shù)(Params)時(shí),仍只考慮卷積操作。使用最常見的計(jì)算方法,對(duì)于卷積核,有
Params=K2×Cin×Cout
(9)
其中,K是核的寬度,Cin是輸入特征圖的通道數(shù),而Cout是輸出通道數(shù)。
圖像分類性能評(píng)價(jià)指標(biāo)為分類正確率,相關(guān)定義如下
(10)
為了驗(yàn)證ELNet的有效性,本文以MobileNetV2為基準(zhǔn)模型,在4個(gè)公共數(shù)據(jù)集上進(jìn)行了綜合實(shí)驗(yàn),所用到的算法模型有:SqueezeNet、ShuffleNet、ShuffleNetV2、MobileNets、MobileNetV2、EfficientNet、GostNet和MicroNet等。實(shí)驗(yàn)分為3個(gè)部分:第一部分為模型訓(xùn)練,比較了訓(xùn)練結(jié)束后模型所需參數(shù)、計(jì)算量和內(nèi)存占用;第二部分是移動(dòng)端分類,以實(shí)際分類精度和推理時(shí)間為評(píng)價(jià)指標(biāo)與基準(zhǔn)模型和近3年的高性能模型作對(duì)比;最后對(duì)ELNet進(jìn)行了詳細(xì)的消融研究。以下3個(gè)部分詳細(xì)介紹了實(shí)驗(yàn)過程和實(shí)驗(yàn)數(shù)據(jù),并對(duì)結(jié)果進(jìn)行了分析和比較。
3.3.1 與其它LCNN的壓縮性能比較
實(shí)驗(yàn)將ELNet與近幾年的經(jīng)典LCNN在模型壓縮指標(biāo)上進(jìn)行了比對(duì),模型包括SqueezeNet、ShuffleNet、ShuffleNetV2、MobileNets、MobileNetV2、EfficientNet、GostNet和MicroNet,以CIFAR-10為例,實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 模型的計(jì)算復(fù)雜度與內(nèi)存占用比較
由圖3(a)可以得出,在FLOPs與Param的綜合對(duì)比上,所提ELNet不僅消耗的計(jì)算量少,所需參數(shù)量也小,其中,F(xiàn)LOPs為5.91 M,Param為0.55 M。當(dāng)所需參數(shù)量基本相同時(shí)(ELNet與MicroNet),ELNet的計(jì)算量僅是MicroNet的3.6%。當(dāng)所需計(jì)算量基本相同時(shí)(ELNet與MobileNetv2、GostNet、EfficientNet),ELNet的參數(shù)量分別只占其它3個(gè)模型的23.9%、14.0%、13.7%。在Mo-del Size指標(biāo)上,從圖3(b)可以看出,本文提出的ELNet分類模型遠(yuǎn)小于其它輕量級(jí)神經(jīng)網(wǎng)絡(luò)模型,模型大小僅為2.4 M,達(dá)到了最小值。從模型壓縮指標(biāo)來看,ELNet更便于部署在對(duì)計(jì)算能力和內(nèi)存占用有高要求的智能手機(jī)或可穿戴設(shè)備中,可以節(jié)省昂貴的計(jì)算資源。
3.3.2 在移動(dòng)設(shè)備上的性能比對(duì)
為了驗(yàn)證本文所提ELNet在移動(dòng)設(shè)備上的圖像分類的能力,實(shí)驗(yàn)在4個(gè)數(shù)據(jù)集上訓(xùn)練ELNet,并以最高分類精度保存模型參數(shù)。在Android系統(tǒng)的智能手機(jī)Realme X7 Pro上評(píng)估了ELNet模型的實(shí)際分類效果,實(shí)驗(yàn)結(jié)果見表2。
表2 ELNet與其它算法在移動(dòng)設(shè)備上的性能比較
在移動(dòng)設(shè)備上執(zhí)行模型推理,需要將預(yù)訓(xùn)練模型轉(zhuǎn)換為TorchScript模型,該模型可以支持Android和iOS等設(shè)備平臺(tái)的部署。將模型部署到Android圖像分類系統(tǒng)進(jìn)行離線測(cè)試,從表2最后兩行可以看出,ELNet在所有數(shù)據(jù)集上的終端分類精度都高于基準(zhǔn)模型,同時(shí)模型的推理時(shí)間大大減少,執(zhí)行速度提升了3.4~4.6倍,大大提升了實(shí)時(shí)反饋應(yīng)用場(chǎng)景的性能。
除與基準(zhǔn)模型比較外,還與近3年的高性能模型(EfficientNet、GostNet、MicroNet)作對(duì)比。從推理時(shí)間看,在所有數(shù)據(jù)集上ELNet的推理時(shí)間都比其它的算法少,反映出其快速的推理過程。在分類精度上,MicroNet在CIFAR-10、CIFAR-100、SVHN上達(dá)到了最高,但在MINIST上精度損失很大。ELNet的分類精度與EfficientNet、GostNet基本相同,且在CIFAR-100上精度更高。雖然ELNet在精度上略遜于近3年的高性能模型,但是從圖3中的數(shù)據(jù)可以看出,ELNet在計(jì)算復(fù)雜度和內(nèi)存占用上是最低的,更適合部署在移動(dòng)設(shè)備上。
3.3.3 消融實(shí)驗(yàn)
為了評(píng)估ELNet的有效性,實(shí)驗(yàn)在4個(gè)數(shù)據(jù)集進(jìn)行了詳細(xì)的消融研究。實(shí)驗(yàn)結(jié)果見表3,使用MobileNetV2作為基線,并將使用新的網(wǎng)絡(luò)結(jié)構(gòu)的模型稱為Lite-Network (LNet)。在LNet的基礎(chǔ)上,提出了一種利用分組卷積減少計(jì)算量并結(jié)合通道混洗(CS)的輕量級(jí)網(wǎng)絡(luò),即可得到ELNet。表3報(bào)告了ELNet的消融實(shí)驗(yàn)各個(gè)部分的結(jié)果。由LNet的結(jié)果可以看出,除了計(jì)算量比基準(zhǔn)模型高之外,LNet基礎(chǔ)架構(gòu)在Params、Model Size和終端分類精度上都高于基準(zhǔn)模型。隨后,在LNet的基礎(chǔ)上,采用分組卷積的方法致力于降低模型計(jì)算量。
表3 消融實(shí)驗(yàn)
先前的很多方法提到,使用分組卷積可以有效的減少逐點(diǎn)卷積的計(jì)算量,因此,本文提出將逐點(diǎn)卷積實(shí)行分組。對(duì)比表3中LNet和LNet_GConv的FLOPs、Params和Model Size可以看出,分組卷積可以有效的降低模型的計(jì)算量、參數(shù)量和模型大小,并且在所有數(shù)據(jù)集上得到最小值。但是,在每個(gè)數(shù)據(jù)集上,終端分類Acc幾乎低于基線,因此分組操作在一定程度上削弱了模型的性能。
通道混洗是為了解決不同組之間的特征通信問題而提出的。從表3最后一行可以看出,加入通道混洗并沒有增加模型的參數(shù)和大小,而是不同程度地提高了模型的終端分類性能。比較LNet與ELNet,雖然后者在終端分類精度上大多比不上前者,但是仍優(yōu)于基準(zhǔn)模型,并且在FLOPs、Params和Model Size上降低了一倍。
本文使用輕量級(jí)CNN作為分類任務(wù)的基礎(chǔ)網(wǎng)絡(luò),在移動(dòng)設(shè)備上成功地部署了深度學(xué)習(xí)模型。為進(jìn)一步減少M(fèi)obileNetV2模型的冗余,重新設(shè)計(jì)了瓶頸塊和模型結(jié)構(gòu),提出了一個(gè)更加簡潔高效的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)分類模型ELNet。不僅分類精度高于MobileNetV2,模型的計(jì)算量、參數(shù)量和內(nèi)存占用還大大降低,同時(shí)推理時(shí)間更快,適用于存儲(chǔ)空間和計(jì)算能力受限的移動(dòng)設(shè)備。之后,將ELNet經(jīng)模型轉(zhuǎn)換部署到Android平臺(tái),通過圖像分類系統(tǒng)測(cè)試模型的離線分類效果。在4種常見公開數(shù)據(jù)集上的結(jié)果表明,本文提出的模型更小、精度更高、推理更快,能在移動(dòng)端高效地完成分類任務(wù)。