史寶岱,張 秦,李 瑤,李宇環(huán)
(空軍工程大學 研究生學院,西安 710051)
自深度學習[1]的概念被提出以來,圖像分類領域迎來了重要的發(fā)展時期。深度學習方法有很多,包括自動編碼器[2]、置信網(wǎng)絡[3]、卷積神經(jīng)網(wǎng)絡[4],其中卷積神經(jīng)網(wǎng)絡在目前深度學習算法中占有重要地位。為了提高識別準確率,通常會使神經(jīng)網(wǎng)絡的結(jié)構(gòu)更復雜、層數(shù)更深,如文獻[5]提出的ALexNet 模型,含有61M 的參數(shù)量;文獻[6]提出的ResNet50 模型,參數(shù)量達到了25M。但在現(xiàn)實生活中計算資源往往有限,載體趨向小型化、可移動,因此文獻[7]提出的計算速度更快且保有相當準確率的神經(jīng)網(wǎng)絡更具實用性。
輕量化神經(jīng)網(wǎng)絡越來越為人們所重視,常見的做法是提出新的網(wǎng)絡結(jié)構(gòu)或者壓縮現(xiàn)有的網(wǎng)絡。Google提出面向嵌入式設備的小型輕量化網(wǎng)絡MobileNets 系列,其中MobileNetV1[8]用深度可分離卷積替代了傳統(tǒng)卷積,令每一個通道都包含了全部信息,達到模型壓縮的目的。MobileNetV2[9]引入倒殘差和線性瓶頸結(jié)構(gòu),進一步優(yōu)化了網(wǎng)絡;MobileNet V3[10]先利用文獻[11]中的Mnasnet 進行粗略的搜索,再利用感知算法NetAdapt[12]進行搜索微調(diào),在減少模型延時的同時保持了原有的精度水平。同樣,文獻[13]提出利用深度可分離卷積替換InceptionV3[14]的卷積操作,將通道相關(guān)性和空間相關(guān)性分開進行了處理,得到Xception 模型。此外,曠視科技提出可用于移動設備的ShuffleNet系列,其中ShuffleNetV1[15]引入了逐點群卷積和通道混洗,大幅減少了1×1 卷積操作的數(shù)量。文獻[16]對現(xiàn)有網(wǎng)絡進行了對比實驗,得出4 條準則,進而改進得到ShuffleNetV2,該模型給算力有限的嵌入場景提供了一個高效的架構(gòu)。
參數(shù)壓縮的途徑有模型蒸餾、低秩分解、網(wǎng)絡剪裁、量化等。其中,模型蒸餾即知識蒸餾,將教師網(wǎng)絡的經(jīng)驗遷移學習到學生網(wǎng)絡中。TIAN 等[17]指出基礎的知識蒸餾只適用于輸出為類別的情況,并不適合跨模態(tài)蒸餾。網(wǎng)絡裁剪的基本做法是剪除模型中不重要的部分,同時弱化對模型精度的損失,例如文獻[18]提出一種利用偏置參數(shù)進行網(wǎng)絡裁剪的方法,文獻[19]提出一種基于灰色關(guān)聯(lián)算法的剪枝方法。
移動式平臺在生活中大量存在,但這些平臺的存儲能力有限,這就要求設計者在保持準確度的前提下,盡量降低網(wǎng)絡模型的計算量。目前提出的網(wǎng)絡在目標分類上也取得了較好的成果,但網(wǎng)絡參數(shù)量和復雜度依然較高。
本文提出一種輕量化的卷積神經(jīng)網(wǎng)絡ConcatNet,通過采用特征拼接的方式,將深度可分離卷積、通道注意力和通道混洗有機地結(jié)合在一起,在保持一定準確率的同時,大幅降低參數(shù)量和計算復雜度。
與傳統(tǒng)卷積相比,深度可分離卷積將通道域和空間域分開處理,可以在犧牲少量精確度的前提下,大幅降低模型所需的計算量和參數(shù)量,加快模型的處理速度。深度可分離卷積包括深度卷積Depthwise 和逐點卷積2 個結(jié)構(gòu),如圖1 所示。
圖1 深度可分離卷積結(jié)構(gòu)Fig.1 Structure of depthwise separable convolution
在二維平面進行深度卷積操作,將單個卷積核應用到每個通道上,樣本輸入大小設為W×K×H,其中:W為圖像高度;K為圖像寬度;H為圖像通道數(shù)。這里選用3×3×1 的卷積核,經(jīng)過H個卷積操作后,得到H個W×K特征圖。逐點卷積類似于普通卷積,可以對通道數(shù)進行調(diào)整。卷積核大小設為1×1×3,數(shù)量設為N,則最終得到W×K×N大小的特征圖。
相對應的計算量為:
標準卷積對應的計算量為:
將深度可分離卷積和普通卷積的計算量相比,得到比值如下:
由上述公式可知,當卷積核大小為3×3 時,深度可分離卷積可以將參數(shù)量減少到普通卷積的1/9 左右,極大地增加了網(wǎng)絡的運算速度,因此本文在構(gòu)建模型時均采用深度可分離卷積。
通道混洗由ZHANG 等[15]提出,用于解決不同組之間信息不流通的問題。本文從特征圖入手,將來自不同支路的特征圖用concat 函數(shù)組合在一起,但拼接得到的特征只能在通道進行相加,信息流通不暢。雖然可以采用1×1 卷積混合通道間信息,但是會帶來參數(shù)量大幅增加的問題。然而,通道混洗可以在不增加計算量和參數(shù)量的前提下,完成通道間的信息混合,增強分類效果,示意圖如圖2 所示。圖2(a)是分組卷積后沒有經(jīng)過通道混洗的情況,各通道信息之間沒有信息交換,因此無法保證最終分類的效果。圖2(b)是在分組卷積之后加入了通道混洗,將分組后特征圖均勻打亂并重新排列。本文利用通道混洗操作整合了支路信息,提升了模型運算的效率。
圖2 通道混洗示意圖Fig.2 Schematic diagram of channel shuffle
在計算機視覺領域,添加注意力機制已經(jīng)成為提高模型性能的常用手段,文獻[20]總結(jié)了注意力機制在自然語言處理、圖像識別、語音識別等領域的應用現(xiàn)狀。軟性注意力是神經(jīng)網(wǎng)絡中的常用方式,主要分為通道注意力和空間注意力2 種,可以根據(jù)特征的重要程度生成對應的權(quán)重,從而合理分配算力。文獻[21]提出擠壓和激勵網(wǎng)絡,將ImageNet 數(shù)據(jù)集的Top-5 error 降到了2.251%,主要貢獻是提出了通道注意力的一種實現(xiàn)方式,先利用全局平均池化將特征圖壓縮成一個實數(shù),然后將這個實數(shù)輸入到由2 個全連接層組成的小網(wǎng)絡里,輸出值是每個特征圖對應的權(quán)重,最后將這個權(quán)重和原特征值相乘,從而讓通道權(quán)重分配更加準確。
但僅采用全局平均池化獲取特征圖的信息并不夠準確,因為一旦遇到正負激活值相抵的情況,特征圖就會變模糊,進而造成信息丟失。為降低信息的損失,本文同時采用全局平均池化和全局隨機池化提取中間特征圖的信息,其中全局平均池化可以較好地保留背景信息,而全局隨機池化按概率值選取特征,具有較強的泛化性,兩者相結(jié)合可以減少信息的丟失。本文首先由2 種池化操作將輸入特征圖F分別壓縮成2 個實數(shù)向量,令兩者相加取平均值;接著,借鑒文獻[22]提出的超輕量級通道注意力網(wǎng)絡(Efficient Channel Attention Net,ECA-Net),并利用自適應一維卷積替代全連接層,完成局部的跨信道交互,如此只會增加很少的參數(shù)量。剩余的過程與ECA-Net 網(wǎng)絡類似,最終得到了通道的權(quán)重,也避免了特征維度的降低,有助于提高準確率,詳情可以參考文獻[12]。M(F)的計算公式如式(4)所示:
其中:M(F)為經(jīng)過通道注意力模塊之后,輸出的特征;σ代表sigmod 操作;CK代表卷積操作;K代表卷積核大小。本文在構(gòu)建網(wǎng)絡模型時加入了通道注意力模塊,提升模型的信息提取能力。
要想完成卷積神經(jīng)網(wǎng)絡的輕量化,就要用較簡單的方式實現(xiàn)網(wǎng)絡效率的最大化。本文提出的ConcatNet主要采用特征拼接的方式實現(xiàn),ConcatNet的具體結(jié)構(gòu)如圖3所示,其中a、b、c分別1為3個支路的權(quán)值系數(shù)。
圖3 ConcatNet 結(jié)構(gòu)Fig.3 Structure of ConcatNet
相比于灰度圖,彩色圖像的顏色分布較復雜,傳遞的信息更豐富,含有的數(shù)據(jù)量更大,但處理的時間和難度也隨之增大。而灰度圖數(shù)據(jù)量小,便于處理,雖然缺失了一定的顏色等級,但從其亮度等級上看,與彩色圖一致,兩者各有利弊。為豐富特征輸入的維度,本文將輸入圖像分為兩路:1 支路轉(zhuǎn)換為灰度圖輸入,3 支路直接輸入,維持其彩色圖特征,兩路分開并行處理,經(jīng)過一個卷積層后,將輸出特征圖拼接起來,構(gòu)成2 支路,特征拼接利用concat 函數(shù)完成,但concat 函數(shù)只能完成通道數(shù)的疊加,并不能完成2 個支路信息的整合,因此采用通道混洗處理拼接之后的特征圖。
圖3 中1、2、3 支路用于特征提取的卷積層均由4 個3×3 卷積層構(gòu)成,不同的是卷積核個數(shù),這里卷積層的數(shù)量由實驗得出,具體見下文。1 支路卷積核的個數(shù)分別是32、32、64 和128,2 支路卷積核的個數(shù)分別是96、192、384 和384,3 支路卷積核的個數(shù)分別是64、64、128 和256,在支路前3 個卷積層后添加一個最大池化用于去除冗余信息,在第4 個卷積層后添加一個全局平均池化用來代替全連接層,將特征圖降成一維。為降低網(wǎng)絡的參數(shù)量,完成網(wǎng)絡的輕量化,本文采用深度可分離卷積。
為增強支路的特征提取能力,將有限的算力用在重要的特征上,考慮到卷積操作本身包含了空間注意力,擬在每條支路上加入2 個改進后的通道注意力模塊,抑制通道域的無用信息,通過實驗得出每條支路均加入2 個通道注意力模塊效果最好。具體實驗如下:首先,把3 條支路的輸出值用concat 函數(shù)拼接起來并組合特征,將3 路通道進行疊加,加入通道注意力模塊,在將拼接特征輸入之前進行篩選,將有用支路的特征放大;之后,利用通道混洗加強通道間的信息流動;最后,采用1×1 卷積層代替全連接層進行分類,以避免破壞圖像的空間結(jié)構(gòu),而且輸入圖像的尺寸不會受到限制,至此模型構(gòu)建完畢。
本文首先在文獻[23]總結(jié)公布的CIFAR-10、CIFAR-100這2個數(shù)據(jù)集上初步評測模型的效果,這2個數(shù)據(jù)集在圖像分類領域中比較常用,而且兩者較適用于訓練輕量化神經(jīng)網(wǎng)絡,CIFAR-10 和CIFAR-100 數(shù)據(jù)集均含有60 000 張32×32 像素的圖片,其中50 000 張用于訓練,10 000 張用于測試,不同的是前者有10 個類別,而后者為100 個類別。因此CIFAR-100 數(shù)據(jù)集用于訓練的圖像就少于CIFAR-10 數(shù)據(jù)集,準確率也較低。之后,在大型的彩色光學數(shù)據(jù)集ImageNet 上測試模型效果,ImageNet 數(shù)據(jù)集共128 張,分為1 000 個類別,現(xiàn)已成為圖像領域的標準數(shù)據(jù)集。
將圖像隨機進行左右旋轉(zhuǎn)以增加樣本數(shù)量,為便于處理,將圖像進行歸一化。硬件:顯卡為RTX2060,4 GB 獨顯,CPU 為i7-10750H,運行內(nèi)存為16 GB。軟件采用GPU 版本的tensorflow 1.14.0框架,python 3.1。采用步數(shù)作為迭代指標,而不用epoch,總步數(shù)設置為30 000,每一步訓練的批量大小設置為64。初始學習率設為0.003,每過10 000 步,學習率降為上一次學習率的0.3 倍,采用隨機梯度下降法,動量設置為0.9。為全面衡量算法性能的好壞,本文對算法模型的準確度、參數(shù)量、計算復雜度等參數(shù)進行分析。
模型主要依靠支路的卷積層提取圖像特征,除了卷積核的數(shù)量,3 條支路的卷積設置也相同。本實驗在不插入通道模塊的前提下完成,且支路末端的乘法器權(quán)值均設為1,依次將卷積塊的數(shù)量設置為3、4、5,選用的數(shù)據(jù)集為CIFAR-10,實驗結(jié)果如表1所示。
表1 支路卷積層的數(shù)量對比Table 1 Comparison of the number of branch convolution layers
由表1 可知,算法參數(shù)量和計算復雜度均隨著卷積層的增加而增加,Top-1 和Top-5 精度大體也遵循此趨勢,當卷積層數(shù)分別為4、5 時,兩者精度相當,幾乎沒有提升,但參數(shù)量卻增加了70%,計算復雜度增加了1.85×106,因此,本文選擇在支路上設置4 個卷積層。
要想在完成網(wǎng)絡輕量化的同時保持精確度,通道注意力就顯得尤為重要,其插入位置和插入的數(shù)量均需經(jīng)過實驗驗證。本文在支路上設置2 個通道注意力模塊,每條支路的卷積塊數(shù)量定為4,支路末端權(quán)重均設為1,現(xiàn)在需要對放置通道模塊的支路進行仿真對比,結(jié)果如表2 所示。
表2 通道注意力模塊實驗Table 2 Channel attention module experiment
由表2 可知,由于插入的通道模塊只有一維卷積操作,因此無論在幾個支路加入通道模塊,參數(shù)量都幾乎不會增加,但模型的復雜度會隨著插入模塊數(shù)量的增加而增加。當3 個支路均插入通道模塊時,復雜度也只有3.41×106,不算高,但模型的準確率卻達到實驗最高值,所以本文選擇在每條支路上均插入通道注意力模塊。
本文用步數(shù)代替迭代周期,所以選擇一個合適的步數(shù)尤為重要。本文先后將步數(shù)設置為20 000、25 000、30 000、35 000、40 000,把CIFAR-10 數(shù)據(jù)集Top-1 精度作為指標,實驗結(jié)果如表3 所示。
表3 迭代步數(shù)實驗Table 3 Iterative steps experiment
由表3 可知,當步數(shù)為30 000 時,識別率為88.89%,而當步數(shù)再增加時,網(wǎng)絡發(fā)生了過擬合,識別率逐漸下降,因此本文將步數(shù)設置為30 000。
本文提出的ConcatNet 網(wǎng)絡和其他輕量級網(wǎng)絡在CIFAR-10數(shù)據(jù)集上的實驗結(jié)果對比如表4所示。由表4可知,ConcatNet的Top-1 精度比MoblileNet1/2 的Top-1精度低1.27 個百分點,但Top-5 精度提高了0.12%,識別率相似,但參數(shù)量比MobileNetV2 減少了51.4%,計算復雜度比MobileNetV2 減少了44.8%,大幅降低了對計算平臺的要求。
表4 輕量級網(wǎng)絡在CIFAR-10 數(shù)據(jù)集上的對比Table 4 Comparison of lightweight networks on the CIFAR-10 data set
ConcatNet 模型在CIFAR-10 數(shù)據(jù)集上表現(xiàn)較好,但CIFAR-100 數(shù)據(jù)集比前者多了90 個類別,雖然超參數(shù)設置一樣,但識別難度較大,其識別結(jié)果如表5 所示。由表5 可知,與MobileNetV2 相比,本文模型Top-1 和Top-5 的精度均要低1~2 個百分點,總體來說準確度相當,但參數(shù)量和計算復雜度均要低50%左右,在輕量化上更為先進。
表5 輕量級網(wǎng)絡在CIFAR-100 數(shù)據(jù)集上的對比Table 5 Comparison on the lightweight network CIFAR-100 data set
將實驗批量大小設置為96,步數(shù)設置為50 000,其他超參數(shù)保持不變,將本文模型與MobileNetV2模型進行比較,實驗結(jié)果如表6 所示,這兩個網(wǎng)絡的精度相近,但本文網(wǎng)絡的參數(shù)量降低了43.52%,計算復雜度降低了39.73%。
表6 輕量級網(wǎng)絡在ImageNet 數(shù)據(jù)集上的對比Table 6 Comparison on the lightweight network ImageNet data set
本文提出一種輕量化的圖像識別網(wǎng)絡,利用特征拼接、通道混洗等方法構(gòu)建3 條支路,并在支路卷積上采用深度可分離卷積。在輸出階段,采用先篩選再混洗的方式,從而在保持網(wǎng)絡輕量化的同時,保證模型精度不降低。實驗結(jié)果表明,與當前先進的輕量化卷積神經(jīng)網(wǎng)絡MobileNetV2 相比,本文網(wǎng)絡在保持精確度相當?shù)那闆r下,將網(wǎng)絡參數(shù)量和復雜度降低了約50%。但實際應用環(huán)境較復雜,下一步將推進網(wǎng)絡的輕量化研究,引入高效且輕量的注意力機制,增強該網(wǎng)絡的泛化性、魯棒性。