陳 力,丁世飛,于文家
(中國礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇徐州221116)
(?通信作者電子郵箱dingsf@cumt.edu.cn)
2006 年,多倫多大學(xué)的Hinton 教授等[1]在Science雜志上發(fā)表了文章,標(biāo)志著人工智能的復(fù)興。計(jì)算機(jī)視覺技術(shù)也隨之取得巨大進(jìn)步。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[2]作為計(jì)算機(jī)視覺領(lǐng)域的基礎(chǔ)模型之一,是當(dāng)前許多研究和應(yīng)用的基礎(chǔ)。自從AlexNet[3]在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)[4]中取得了巨大成功,目前已經(jīng)提出了許多高性能的CNN 模型,例如VGGNet[5]、ZFNet[6]、GoogLeNet[7]、ResNet[8]、DenseNet[9],SENet[10]等。但是,準(zhǔn)確率的提高并不一定會(huì)使網(wǎng)絡(luò)在模型尺寸和速度方面更有優(yōu)勢(shì)。目前移動(dòng)設(shè)備和嵌入式設(shè)備被廣泛使用,這些設(shè)備的計(jì)算資源和存儲(chǔ)資源非常有限,不利于大規(guī)模網(wǎng)絡(luò)的部署。
2017 年之后,ImageNet 競賽不再舉辦,對(duì)CNN 的研究也從僅追求高精度的大規(guī)模網(wǎng)絡(luò)逐漸過渡到研究更適合實(shí)際應(yīng)用的輕量級(jí)架構(gòu)。精度高、規(guī)模小、速度快的輕量級(jí)架構(gòu)成為當(dāng)前CNN 研究的主流。近年來,壓縮卷積神經(jīng)網(wǎng)絡(luò)以實(shí)現(xiàn)準(zhǔn)確率與模型尺寸之間的權(quán)衡已成為一種熱門的研究方向。一方面,可以對(duì)現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行壓縮,使網(wǎng)絡(luò)具有較少的參數(shù)和較低的計(jì)算復(fù)雜度。這些壓縮方法[11]可以分為四類:參數(shù)剪枝和共享[12]、低秩分解[13]、遷移/緊湊卷積濾波器[14]和知識(shí)蒸餾[15]。基于參數(shù)剪枝和共享的方法主要是探索模型參數(shù)的冗余部分,并刪除對(duì)網(wǎng)絡(luò)影響不大的參數(shù)以實(shí)現(xiàn)網(wǎng)絡(luò)壓縮?;诘椭确纸獾募夹g(shù)主要分解卷積核以減少冗余,關(guān)鍵是如何設(shè)置卷積核的參數(shù)以及對(duì)哪個(gè)維度加以約束?;谶w移/壓縮卷積濾波器的方法設(shè)計(jì)具有特殊結(jié)構(gòu)的卷積內(nèi)核,以降低存儲(chǔ)消耗和計(jì)算復(fù)雜度。知識(shí)蒸餾的方法創(chuàng)建了一個(gè)與教師網(wǎng)絡(luò)的特征分布相適應(yīng)的學(xué)生網(wǎng)絡(luò),以便小型網(wǎng)絡(luò)可以學(xué)習(xí)大型網(wǎng)絡(luò)的知識(shí)。通常,學(xué)生網(wǎng)絡(luò)是一個(gè)輕量級(jí)網(wǎng)絡(luò),而教師網(wǎng)絡(luò)是一個(gè)較大的網(wǎng)絡(luò)。另一方面,除了壓縮現(xiàn)有的網(wǎng)絡(luò)模型,還可以使用一些高效的方法來設(shè)計(jì)新的網(wǎng)絡(luò)結(jié)構(gòu),即輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)。輕量級(jí)的CNN 可以使更多的計(jì)算機(jī)視覺研究成果應(yīng)用到工業(yè)產(chǎn)品和服務(wù)中。
針對(duì)一些常用的輕量級(jí)模型設(shè)計(jì)方法存在的明顯不足,本文在提出相應(yīng)的解決方法的同時(shí)提出了一種輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型C-Net,旨在保證在高準(zhǔn)確率水平的前提下減少模型參數(shù)量和降低計(jì)算復(fù)雜度。本文主要工作如下:
1)針對(duì)分組卷積各分組之間缺少信息交流的問題,提出了一種跨通道交叉融合的方法,在增加深度和減少參數(shù)的同時(shí)實(shí)現(xiàn)了不同分組跨通道信息交流。
2)針對(duì)特征提取不充分和特征圖利用不充分的問題,提出了一種跨模塊連接方法,在同一階段內(nèi)部實(shí)現(xiàn)特征重用和更好的上下文建模來增強(qiáng)特征的顯著性。
3)基于提出的兩種方法設(shè)計(jì)了一種新型的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)C-Net。
對(duì)于傳統(tǒng)卷積[16]來說,每個(gè)輸出通道都與每個(gè)輸入通道互相連接,即通道之間是密集連接。例如,如果輸入特征映射的尺寸為C×H×W,其中:C表示輸入特征映射的通道數(shù),H表示輸入特征映射的高,W表示輸入特征映射的寬,如果卷積核個(gè)數(shù)為N,則輸出特征映射的數(shù)量與卷積核的個(gè)數(shù)相同,每個(gè)卷積核的尺寸為C×K×K,總參數(shù)量為N×C×K×K。
對(duì)于分組卷積,輸入通道和輸出通道分成g組。每組的輸出通道僅連接到相應(yīng)組的輸入通道,而與其他通道無關(guān)。具體為首先對(duì)輸入特征映射進(jìn)行分組,然后將每組分別卷積。
假設(shè)輸入特征映射的尺寸為C×H×W,輸出特征映射的尺寸為N×H×W,其中,H和W為特征映射的長度和高度,C和N分別為通道數(shù)。如果將其分為G組,則每組中的輸入特征圖的數(shù)量為,每組中的輸出特征圖的數(shù)量為。卷積核的尺寸為。卷積核的個(gè)數(shù)仍為N。每組卷積核的個(gè)數(shù)為,卷積核僅與同組的輸入特征映射進(jìn)行卷積,總參數(shù)量為×K×K,可見總參數(shù)量減少到原來的。
顯然,盡管分組卷積可以顯著減少參數(shù)量,但是存在不同分組之間缺乏信息交流的問題,這將很大程度上影響模型的性能。本文提出了一種稱為跨通道交叉融合的方法來實(shí)現(xiàn)不同分組之間信息交流。
標(biāo)準(zhǔn)卷積運(yùn)算實(shí)現(xiàn)了空間和通道維度上特征的聯(lián)合映射,但是計(jì)算復(fù)雜性高,內(nèi)存占用大,并且權(quán)重參數(shù)過多。深度可分離卷積的基本假設(shè)[17]是輸入的特征映射可以解耦。因此,卷積過程可分成兩個(gè)部分:首先使用給定大小的卷積核分別對(duì)每個(gè)通道進(jìn)行卷積并組合結(jié)果,該部分稱為深度卷積。然后使用1×1卷積核[18]進(jìn)行標(biāo)準(zhǔn)卷積并輸出特征映射,這部分稱為逐點(diǎn)卷積。
深度可分離卷積的作用是將圖像的空間信息和通道信息解耦,主要目的是將空間互相關(guān)信息與通道互相關(guān)信息分離,通過使用一個(gè)一維卷積核和一個(gè)二維位置卷積核,分別學(xué)習(xí)圖像中的通道信息和位置信息。即通過3×3 卷積對(duì)每個(gè)獨(dú)立通道的空間區(qū)域提取特征,然后使用1×1卷積融合從不同通道中提取到的特征。標(biāo)準(zhǔn)卷積和深度可分離卷積的區(qū)別如圖1所示。
圖1 卷積方式Fig.1 Convolution methods
假設(shè)輸入特征映射的尺寸為C×H×W,輸出特征映射的尺寸為N×H×W,其中H和W為特征映射的長度和高度,C和N分別為通道數(shù)。標(biāo)準(zhǔn)卷積層使用大小為C×K×K的卷積核,計(jì)算復(fù)雜度為CK2HWN,參數(shù)量為CK2N。深度可分離卷積包括一組K×K×1×C的卷積核和一組1×1×C×N的卷積核。深度可分離卷積的計(jì)算復(fù)雜度為CK2HW+CHWN,這只是標(biāo)準(zhǔn)卷積的。考慮輸入和輸出通道數(shù)量上的差異,深度可分離卷積的權(quán)重約為標(biāo)準(zhǔn)卷積權(quán)重的10%~25%[17]。通過使用深度可分離卷積代替?zhèn)鹘y(tǒng)卷積可以減少模型參數(shù),實(shí)現(xiàn)模型的輕量化。
神經(jīng)網(wǎng)絡(luò)的深度在圖像分類中起著至關(guān)重要的作用。隨著網(wǎng)絡(luò)層數(shù)的增加,從理論上,網(wǎng)絡(luò)可以學(xué)習(xí)更多的特征,擬合更復(fù)雜的函數(shù),從而提高識(shí)別的準(zhǔn)確率。但是,由于使用基于梯度的BP(Back Propagation)算法[19]優(yōu)化時(shí),層數(shù)很深的網(wǎng)絡(luò)在反向傳播過程中容易出現(xiàn)梯度消失[20]或梯度爆炸[21],造成模型訓(xùn)練過程中難以收斂。
ResNet[8]是計(jì)算機(jī)視覺領(lǐng)域一項(xiàng)突破性工作。ResNet 通過添加快捷連接以引入殘差學(xué)習(xí)來解決深層網(wǎng)絡(luò)的退化問題,從而可以訓(xùn)練出層數(shù)更深的網(wǎng)絡(luò)。ResNet 的核心思想是從輸入中學(xué)習(xí)殘差函數(shù)而不是原始函數(shù)??旖葸B接默認(rèn)為恒等映射,即直接添加原始輸入而不進(jìn)行任何改變直接與輸出做加和作為下一層的輸入。通過添加快捷連接,使得深層網(wǎng)絡(luò)更容易優(yōu)化,并得到更好的性能。包含一個(gè)快捷連接的多層網(wǎng)絡(luò)稱為一個(gè)殘差塊,如圖2所示。
圖2 快捷連接Fig.2 Shortcut connection
將輸入表示為X,底層映射表示為H(X),殘差映射定義為:
其中:X代表殘差塊的輸入;H(X)代表殘差塊的輸出;F(X)代表殘差映射。進(jìn)一步的:
即變成使用神經(jīng)網(wǎng)絡(luò)來擬合輸入和輸出之間的殘差F(X)映射。
殘差映射比原始映射更易于優(yōu)化。在極端情況下,如果恒等映射是最佳輸出,則殘差為0,相較把恒等映射用一系列非線性層的堆疊去擬合更簡單,而且通過快捷連接實(shí)現(xiàn)恒等映射,不會(huì)增加額外的參數(shù)和計(jì)算量。
ResNet和快捷連接的提出解決了加深網(wǎng)絡(luò)層數(shù)不能提高性能的問題。快捷連接在先進(jìn)的輕量級(jí)CNN 中均有應(yīng)用。本文借鑒了殘差學(xué)習(xí)的思想并加以改進(jìn),使網(wǎng)絡(luò)能夠在同一階段內(nèi)部更好地進(jìn)行局部殘差學(xué)習(xí),該方法稱為跨模塊連接。
分組卷積是輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)中的一種常用方法。分組卷積可以用較少的參數(shù)量和較低的計(jì)算復(fù)雜度生成大量的特征映射,而更多的特征映射意味著可以編碼更多的信息以獲得更豐富的特征。分組卷積也有明顯的缺點(diǎn):將輸入特征映射分組導(dǎo)致輸入信息不完整,輸出特征圖不能包含輸入特征圖的所有信息。在ShuffleNet[22]中,使用通道重排來解決這個(gè)問題。
表1 不同分組數(shù)在Cifar_10的準(zhǔn)確率對(duì)比Tab.1 Accuracy comparison of different grouping numbers on Cifar_10
通過對(duì)k的不同取值發(fā)現(xiàn),當(dāng)k=2時(shí),即當(dāng)將輸入分為兩組時(shí)效果最好。k=2實(shí)現(xiàn)了全通道的信息交流。同時(shí),如文獻(xiàn)[23]所建議,過多的分組會(huì)增加MAC(Media Access Control address),使用兩個(gè)組也是合理的。因此,應(yīng)用于C-Net 中設(shè)置k=2,即將輸入通道數(shù)分為兩組,并使用1×1 卷積實(shí)現(xiàn)兩階段的降維操作。當(dāng)然,也可以用其他大小的卷積核替換它。兩階段降維方法加深網(wǎng)絡(luò)深度的同時(shí)減少了參數(shù)量,提高了模型的非線性建模能力。首先,將輸入特征圖分為通道數(shù)相同的兩組G1和G2。兩組中的通道數(shù)均為輸入的一半,對(duì)兩組使用1×1 卷積得到和,通道數(shù)減少了一半。顯然,和包含了所在分組中所有通道的信息。然后再次卷積得到和,尺寸保持不變。最后使用跨通道交叉融合,將和添加到和的相鄰組中合并在一起,結(jié)果用作下一層的輸入。因此,輸入特征圖的維數(shù)減少是通過兩階段的分組卷積和跨通道交叉融合實(shí)現(xiàn)的。C-Net 中用于分組卷積的跨通道融合如圖3所示。假設(shè)輸入特征映射的尺寸為C×H×W,直接使用標(biāo)準(zhǔn)1×1 卷積來減小尺寸實(shí)現(xiàn)降維,則參數(shù)量為,使用本文的方法則參數(shù)量為,因此參數(shù)數(shù)量減少了。通道數(shù)C通常比較大,因此,實(shí)現(xiàn)用于分組卷積的跨通道交叉融合以提高模型的泛化能力的同時(shí)減少到原始參數(shù)量的75%。
圖3 C-Net中的跨通道交叉融合Fig.3 Cross-channel fusion in C-Net
如文獻(xiàn)[24]中建議的那樣,為了提高網(wǎng)絡(luò)的準(zhǔn)確性,增加基數(shù)比增加網(wǎng)絡(luò)的深度和寬度更有效,其中基數(shù)是指并行堆疊的某些模塊的數(shù)量。目前最先進(jìn)的輕量級(jí)CNN 架構(gòu)[22-23,25-27]有一個(gè)共同的特征,即網(wǎng)絡(luò)結(jié)構(gòu)由基本構(gòu)建塊堆疊而成。把具有相同輸入輸出分辨率的幾個(gè)基本構(gòu)建塊的堆疊稱為一個(gè)階段,相鄰階段通過池化[28-29]或步長為2卷積運(yùn)算實(shí)現(xiàn)下采樣。同一階段內(nèi)通常由許多具有相同結(jié)構(gòu)的基本構(gòu)建塊組成。通常,快捷連接通常是在單個(gè)基本構(gòu)建塊內(nèi)部實(shí)現(xiàn)的,一般是在某個(gè)基本構(gòu)建塊的輸入和輸出之間添加了快捷連接。快捷連接破壞了網(wǎng)絡(luò)的對(duì)稱性并改善了網(wǎng)絡(luò)的表征能力。通過增加快捷連接,參數(shù)量保持不變,分類精度得到進(jìn)一步提高,網(wǎng)絡(luò)的可控制性和可擴(kuò)展性也得到改善。傳統(tǒng)架構(gòu)中的快捷連接如圖4所示。
考慮到同一階段內(nèi)的基本構(gòu)建塊的輸入輸出具有相同的結(jié)構(gòu),為了進(jìn)一步提高模型的特征提取和泛化能力,提出了一種稱為跨模塊連接的方法。在同一階段內(nèi)相鄰的基本構(gòu)建塊之間,上一個(gè)基本構(gòu)建塊的通過兩階段降維后的特征映射和下一個(gè)基本構(gòu)建塊的降維后的特征映射之間添加快捷連接,然后將融合后的結(jié)果用作深度可分卷積的輸入。這有助于增強(qiáng)模型的特征提取能力,實(shí)現(xiàn)上下文更好的建模??缒K連如圖5所示。
圖4 傳統(tǒng)架構(gòu)中的快捷連接Fig.4 Shortcut connections in traditional architecture
圖5 跨模塊連接Fig.5 Cross-module connections
利用提出的兩種方法,設(shè)計(jì)了一個(gè)輕量級(jí)的特征提取單元作為C-Net 基本構(gòu)建塊。這是從殘差塊啟發(fā)而來,采用先壓縮和后擴(kuò)張策略[30]。它分為兩部分:降維層和特征提取層。降維層使用兩階段跨通道交叉融合,通過卷積進(jìn)行輸入特征映射的降維處理,降維為原始輸入維的一半。特征提取層使用深度可分離卷積。首先,使用深度卷積進(jìn)行特征提取,然后使用逐點(diǎn)卷積增加輸出通道的維度?;緲?gòu)建模塊如圖6所示。
圖6 某一階段內(nèi)部的基本構(gòu)建塊Fig.6 Basic building blocks in a certain stage
通常,卷積操作后會(huì)添加非線性。最常用的激活函數(shù)是ReLU。ReLU的計(jì)算式(圖7)表示如下:
如圖7 所示,如果對(duì)ReLU 的激活范圍沒有限制,則輸出范圍為0 到正無窮大;如果激活值很大并且分布在很大的范圍內(nèi),則低精度時(shí)無法很好地精確描述造成精度損失??紤]到這些因素,使用ReLU6[26]作為C-Net中的激活函數(shù)。ReLU6是普通的ReLU,但將最大輸出值限制為6。移動(dòng)終端設(shè)備float16 的精度較低,ReLU6 可以提供良好的數(shù)值分辨率。將最大值限制為6 也有助于使網(wǎng)絡(luò)為定點(diǎn)推理做好準(zhǔn)備。ReLU6的計(jì)算式(圖8)表示如下:
Xception[17]中實(shí)驗(yàn)結(jié)果表明深度卷積后增加非線性會(huì)降低性能。一種猜測(cè)是深度卷積輸出通道的數(shù)量太少,非線性的應(yīng)用會(huì)造成信息丟失。因此在C-Net 基本構(gòu)建塊的設(shè)計(jì)中,去除了深度卷積后的激活函數(shù),輸出為線性。
圖7 激活函數(shù)ReLUFig.7 Activation function ReLU
圖8 激活函數(shù)ReLU6Fig.8 Activation function ReLU6
C-Net架構(gòu)主要由C-Net基本構(gòu)建塊堆疊組成。網(wǎng)絡(luò)結(jié)構(gòu)如表2 所示,其中k為類別數(shù)。除了最后的全局平均池化[31],整個(gè)網(wǎng)絡(luò)再不使用池化,但每個(gè)階段的第一個(gè)基本構(gòu)建塊都使用步長為2 的卷積進(jìn)行下采樣。全局平均池化用于防止過擬合并實(shí)現(xiàn)輕量級(jí)。此外,Dropout[32]和BatchNormalization[33]用于訓(xùn)練。
表2 C-Net網(wǎng)絡(luò)架構(gòu)Tab.2 Network architecture of C-Net
實(shí)驗(yàn)環(huán)境:整個(gè)實(shí)驗(yàn)在Ubuntu16.04 LTS 和Python 3.6、Pytorch 1.2.0[34]和Opencv 3.1 的軟件環(huán)境下進(jìn)行。CPU 是具有8 核3.7 GHz 的Intel Xeon E5-1620,內(nèi)存為32 GB。使用的GPU 是具有CUDA 10.0 和cuDNN 7.6 的NVIDIA-RTX2080ti。相關(guān)數(shù)據(jù)集如下:
1)Cifar_10 數(shù)據(jù)集由10 個(gè)類別的60 000 張彩色圖像組成,每個(gè)類別有6 000 張圖像。其中有50 000 張訓(xùn)練圖像和10 000張測(cè)試圖像。
2)Food_101 數(shù)據(jù)集包含101 種食物的101 000 張圖像,每種包含1 000張圖像。每個(gè)類別有250張測(cè)試圖像和750張訓(xùn)練圖像,因此共有75 750張訓(xùn)練圖像和25 250張測(cè)試圖像。
3)Caltech_256 數(shù)據(jù)集共包含257 個(gè)類別的30 607 張圖像,每個(gè)類別中最少80 張圖像,最多827 張圖像,其中一個(gè)是背景的類別。在本實(shí)驗(yàn)中,將背景類刪除,訓(xùn)練集和測(cè)試集以4∶1的比例隨機(jī)分離。
在當(dāng)前的圖像識(shí)別研究中,這些公開數(shù)據(jù)集被廣泛使用。其中,Cifar_10數(shù)據(jù)集主要用于消融實(shí)驗(yàn)。
數(shù)據(jù)預(yù)處理:在訓(xùn)練之前對(duì)所有數(shù)據(jù)集進(jìn)行預(yù)處理。所有數(shù)據(jù)集均使用數(shù)據(jù)增強(qiáng)增加訓(xùn)練樣本。對(duì)于Cifar_10,所有圖像使用像素0 填充圖像的邊緣,然后將圖像隨機(jī)裁剪為32×32。對(duì)于Food_101和Caltech_256,首先將所有圖像縮放到256×256,然后隨機(jī)裁剪為224×224。在訓(xùn)練過程中,按50%的概率水平翻轉(zhuǎn)和垂直翻轉(zhuǎn)。最后對(duì)所有圖像進(jìn)行歸一化處理。
超參數(shù)設(shè)置:在使用Food_101和Caltech_256數(shù)據(jù)集進(jìn)行的實(shí)驗(yàn)中,數(shù)據(jù)處理、初始化、批處理大小和訓(xùn)練迭代次數(shù)等實(shí)驗(yàn)設(shè)置保持不變。在訓(xùn)練期間,批處理大小為128,每個(gè)epoch 后進(jìn)行一次測(cè)試迭代。所有層使用相同的學(xué)習(xí)率并將初始學(xué)習(xí)率設(shè)置為0.1。訓(xùn)練過程采取學(xué)習(xí)率衰減的策略,γ為0.1。學(xué)習(xí)率衰減3次后停止訓(xùn)練。使用交叉熵?fù)p失函數(shù),優(yōu)化器為隨機(jī)梯度下降(Stochastic Gradient Descent,SGD),動(dòng)量為0.9,權(quán)重衰減參數(shù)為0.000 5。Food_101在180 000次迭代后結(jié)束訓(xùn)練,而Caltech_256 在90 000 次迭代后結(jié)束訓(xùn)練。
為了評(píng)估C-Net 的性能,在Food_101 數(shù)據(jù)集和Caltech_256 數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)評(píng)估了Food_101 數(shù)據(jù)集和Caltech_256 數(shù)據(jù)集上具有代表性的不同類型的典型CNN 模型的性能。AlexNet[3]和ResNet[8]是傳統(tǒng)CNN 架構(gòu)的代表,其中AlexNet 沒有快捷連接,ResNet 包含快捷連接;SqueezeNet[25]、MobileNetV2[27]和ShuffleNetV2[23]是目前最先進(jìn)的輕量級(jí)CNN 的代表,其中,SqueezeNet 通過提出FireModule模塊,先利用1×1 卷積進(jìn)行降維,再利用1×1 卷積+3×3 卷積組合升維,實(shí)現(xiàn)了參數(shù)優(yōu)化;MobileNetV2 通過使用深度可分離卷積和Inverted Residual Block,可以用較少的運(yùn)算量得到較高的精度,適用于移動(dòng)端的需求;ShuffleNetV2 通過使用channel split和channel shuffle等方法,在速度和準(zhǔn)確度之間做了很好的平衡。實(shí)驗(yàn)結(jié)果如表3和表4所示。
從表3 和表4 可以看出,C-Net 在Food_101 數(shù)據(jù)集和Caltech_256 數(shù)據(jù)集上的準(zhǔn)確率相較AlexNet 分別提高了8.67個(gè)百分點(diǎn)和8.91 個(gè)百分點(diǎn),但參數(shù)僅為AlexNet 的4%和4.2%,計(jì)算復(fù)雜度僅為AlexNet 的47.69%和47.67%。這充分說明傳統(tǒng)的CNN 架構(gòu)具有很大的冗余和缺陷,可以通過使用更有效的卷積方法和設(shè)計(jì)高質(zhì)量的網(wǎng)絡(luò)架構(gòu)來實(shí)現(xiàn)CNN性能的提高,而不僅是單純依靠網(wǎng)絡(luò)規(guī)模的增加。此外,C-Net 的準(zhǔn)確率相較ResNet-18 低1.34 個(gè)百分點(diǎn)和1.61 個(gè)百分點(diǎn),但參數(shù)數(shù)量和計(jì)算復(fù)雜度遠(yuǎn)小于ResNet-18,大約僅為ResNet-18 的20%和25%,更加適合在存儲(chǔ)和計(jì)算資源有限的設(shè)備上運(yùn)行。
表3 不同模型在Food_101上的分類性能對(duì)比Tab.3 Comparison of different models for classification performance on Food_101
表4 不同模型在Caltech_256上的分類性能對(duì)比Tab.4 Comparison of different models for classification performance on Caltech_256
另外,與SqueezeNet、MobileNetV2、ShuffleNetV2 這三個(gè)最先進(jìn)的輕量級(jí)模型的對(duì)比實(shí)驗(yàn)結(jié)果表明,C-Net不僅比傳統(tǒng)的CNN模型更有優(yōu)勢(shì),而且與其他最先進(jìn)的輕量級(jí)架構(gòu)相比也具有很強(qiáng)的競爭力。與SqueezeNet 相比,C-Net的準(zhǔn)確率分別高出6.97個(gè)百分點(diǎn)和8.60個(gè)百分點(diǎn),盡管參數(shù)量增加,但計(jì)算復(fù)雜度大幅降低,這主要得益于深度可分離卷積和快捷連接帶來的特征提取能力的增強(qiáng)。C-Net在兩個(gè)數(shù)據(jù)集的準(zhǔn)確率表現(xiàn)均介于1.0MobileNetV2 和ShuffleNetV2 1.5x 之間,參數(shù)量與1.0MobileNetV2和ShuffleNetV2 1.5x處于同一級(jí)別,但均比它們小,顯示出C-Net 在移動(dòng)端部署的可行性。C-Net 的計(jì)算復(fù)雜度略高于1.0MobileNetV2,但僅為ShuffleNetV2 1.5x的大約68.05%,這也解釋了C-Net在準(zhǔn)確度上與MobileNetV2基本持平卻低于ShuffleNetV2,主要是復(fù)雜度相較ShuffleNetV2 極大降低,這也充分說明模型復(fù)雜度在特征提取和建模過程中的重要性。這些輕量級(jí)架構(gòu)是為資源有限的設(shè)備設(shè)計(jì)的,與某些基準(zhǔn)模型相比具有競爭優(yōu)勢(shì)。不同模型在Food_101 和Caltech_256訓(xùn)練過程中的準(zhǔn)確率如圖9和圖10所示。
圖9 不同模型在Food_101上的準(zhǔn)確率Fig.9 Accuracies of different models on Food_101
圖10 不同模型在Caltech_256上的準(zhǔn)確率Fig.10 Accuracies of different models on Caltech_256
總的來說,C-Net 不僅在參數(shù)量方面相較傳統(tǒng)的CNN 架構(gòu)占用更少的硬件資源,而且在不犧牲模型性能的情況下比其他幾種先進(jìn)的輕量級(jí)架構(gòu)更輕巧。實(shí)驗(yàn)結(jié)果表明,C-Net通過使用跨通道交叉融合進(jìn)行分組卷積以減少參數(shù)數(shù)量,并在同一階段內(nèi)部實(shí)現(xiàn)跨模塊連接以增強(qiáng)特征表達(dá),與其他網(wǎng)絡(luò)架構(gòu)相比,C-Net 是一種高效且輕量的網(wǎng)絡(luò)模型,具有更少的參數(shù)和更高的識(shí)別精度。C-Net 更加便于硬件應(yīng)用,性能更優(yōu)。
為了對(duì)提出的兩種方法進(jìn)行評(píng)估,使用Cifar_10 數(shù)據(jù)集進(jìn)行消融實(shí)驗(yàn)。為了適應(yīng)數(shù)據(jù)集的變化,對(duì)網(wǎng)絡(luò)輸入輸出進(jìn)行相應(yīng)修改。輸入大小改為32×32,最后一個(gè)全連接層的輸出更改為10。此外,由于輸入分辨率的寬度和高度變小,將階段2 的步幅為2 的卷積更改為步幅為1,不進(jìn)行下采樣,然后全局平均池化從7×7變?yōu)?×4。其他參數(shù)保持不變。
3.3.1 跨通道交叉融合的分組卷積vs.普通分組卷積
為了評(píng)估分組卷積中各分組間跨通道交叉融合對(duì)于分組卷積的重要性,比較了是否包含跨通道融合的兩組模型。由于沒有引入額外參數(shù),因此兩組模型的參數(shù)量和計(jì)算復(fù)雜度相同,其準(zhǔn)確率曲線如圖11所示。
圖11 跨通道交叉融合的分組卷積vs.普通分組卷積Fig.11 Cross-channel fusion for grouped convolution vs.traditional grouped convolution
從圖11 可以看出,使用跨通道交叉融合進(jìn)行分組卷積的模型(C-Net)與使用普通分組卷積的模型在收斂方面沒有太大差異,但是最終精度比使用普通分組卷積的模型高1%~2%。這表明跨通道交叉融合在實(shí)現(xiàn)了跨通道信息交流的同時(shí),提高了模型的特征提取能力和模型泛化性能。這表明了跨通道信息通信對(duì)提高分組卷積性能的重要性。
3.3.2 跨模塊連接vs.無連接
為了評(píng)估跨模塊連接的重要性,比較了是否包含跨模塊連接的兩組模型。由于跨模塊連接也沒有引入額外參數(shù),因此,這兩組模型的參數(shù)量和計(jì)算復(fù)雜度相同,其準(zhǔn)確率曲線如圖12所示。
如圖12 所示,使用跨模塊連接的模型(C-Net)的收斂比不使用跨模塊連接的模型快得多,并且其最終的分類精度明顯高于不使用跨模塊連接的模型,表明了跨模塊連接更好地實(shí)現(xiàn)了特征重用和梯度反向傳播,而特征提取能力的增強(qiáng)和反向傳播的優(yōu)化也帶來了更好的模型泛化性能。這也顯示了快捷連接對(duì)于在深層網(wǎng)絡(luò)中梯度傳播的重要性。
圖12 跨模塊連接vs.無連接Fig.12 Cross-module connection vs.no connection
本文提出了一種新型的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)C-Net。首先,提出了跨通道交叉融合的方法,在一定程度上解決了分組卷積中不同分組間缺乏信息交流的問題;然后,提出了跨模塊連接的方法,更好地實(shí)現(xiàn)同一階段內(nèi)部的特征提取和特征復(fù)用;最后,基于上述兩種方法設(shè)計(jì)出輕量級(jí)網(wǎng)絡(luò)模型C-Net。C-Net 在Food_101 數(shù)據(jù)集上的準(zhǔn)確率為69.41%,在Caltech_256 數(shù)據(jù)集上的準(zhǔn)確率為63.93%,表明C-Net 是一種高效的輕量級(jí)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。同時(shí),在Cifar_10 數(shù)據(jù)集上的消融實(shí)驗(yàn)驗(yàn)證了所提出的兩種方法都可以提高CNN 的分類準(zhǔn)確率。由于時(shí)間和實(shí)驗(yàn)條件的限制,C-Net的性能僅在圖像分類任務(wù)上得到了驗(yàn)證。下一步工作是探索如何進(jìn)一步提高C-Net 的性能,并將C-Net 應(yīng)用于其他復(fù)雜任務(wù),例如場景分割[35]和目標(biāo)檢測(cè)[36]。