高淑萍,趙清源,齊小剛,程孟菲
(西安電子科技大學 數學與統計學院,陜西 西安 710126)
圖像分類是通過涵蓋在圖像里的不同特征信息來對圖像集進行歸類,它是目前計算機視覺領域的基本問題之一,也是行為檢測、目標識別、圖像修復、圖像切割等復雜視覺任務的基礎。圖像分類廣泛應用于諸多領域,包括醫學影像識別等。早期圖像分類技術以人工提取特征為主,而后發展為特征表達的學習,首先是利用尺度不變特征轉換(scale-invariant feature transform, SIFT)、方向梯度直方圖(histogram of oriented gradient,HOG)等方法進行底層特征提取;其次是利用核詞典編碼、Fisher向量編碼等進行特征編碼;然后是將編碼后的特征進行匯聚;最后利用支持向量機等分類器進行圖像分類。雖然特征表達的學習方式能夠提取一部分圖像特征,但這種方式容易出現特征丟失、泛化性能差的問題,最終難以達到理想圖像分類精度的要求。
深度學習中卷積神經網絡(convolutional neural network, CNN)能夠完成輸入信息從淺層學習到深層學習的逐級表達,提取更加準確的特征,降低在圖像分類技術上的操作難度并取得顯著效果。在圖像分類領域,最初是由Yann LeCun[1]將CNN部署在手寫體識別上,取得了良好的識別效果;2012年后,相繼出現了AlexNet、GoogLeNet[2]、ResNet[3]等具有代表性的深度網絡結構;近幾年,國內外提出輕量化版本的網絡結構,如GhostNet[4]、ShuffleNetV1[5]、MobileNetV1[6]、MobileNetV2[7]、ShuffleNetV2[8]、SqueezeNet[9]和IGCV3[10],其中MobileNet系列更具代表性。在MobileNetV1中,以深度可分離卷積替換標準卷積的方式降低了網絡結構的大小和計算復雜度,而MobileNetV2在保持深度可分離卷積的基礎上,加入多個逐點卷積,進一步提升網絡結構性能和降低計算復雜度。但MobileNet系列的網絡結構在應用于圖像分類任務時,因其網絡內部設計、優化策略和激活函數的原因,導致會不斷地忽略輸入信息中的負值特征信息,而這些負值特征信息卻可能是圖像分類的關鍵點。近3年對MobileNet網絡結構在圖像分類領域的改進方法被相繼提出。如2019年,黃躍珍等[11]利用Squeeze-and-Excitation模塊對MobileNet網絡結構進行改進,提高了車型識別精度;劉鴻智[12]在MobileNet網絡結構的基礎上,采用新的混合鏈接結構,提高了在數據集Cifar-10和Cifar-100的分類精度;2020年,Guo等[13]提出在MobileNet網絡結構中插入八度卷積和中心損失函數的方法,提升了多國人臉分類識別率。
本文在前人工作的基礎上,提出一種改進的MobileNet網絡結構,即L-MobileNet。其主要思想為
1)用深度可分離卷積形式代替標準卷積形式,并將深度卷積得到的特征圖執行取反操作,通過深度卷積融合層傳遞至下一層;
2)卷積層中使用Leaky ReLU激活函數以保留圖像更多的正負特征信息,并加入類殘差結構[3]避免梯度彌散現象,降低網絡參數計算量。
為了提高網絡結構的泛化能力,在數據輸入時采用數據預處理技術。通過將本文L-MobileNet與經典的CNN、MobileNetV1、MobileNetV2、經典的CNN+Leaky ReLU[14]、MobileNetV1+Leaky ReLU[15]和MobileNetV2+Leaky ReLU[15]進行對比實驗,結果表明L-MobileNet在Cifar-10[16]、Cifar-100 (coarse)[16]、Cifar-100 (fine)[16]和Dogs vs Cats[17]數據集上具有更好的圖像分類效果。
經典的CNN屬于前饋神經網絡類型,其結構組件有標準卷積層、池化層、全連接層、激活函數和分類器,如圖1所示。該網絡主要通過標準卷積層進行圖像特征提取,在該層中通常包括若干特征圖,每個特征圖由神經元節點排列成矩形形狀,相同特征圖中神經元節點之間進行權值共享。通過權值共享可以減少神經元節點之間的連接數量,避免過擬合現象。池化層能夠降低計算維度,進而提升網絡結構的泛化性能。激活函數用來增強網絡結構的非線性學習能力。經過多次特征提取過程后,把最后的特征圖進行拼接,得到一維矩陣。最后由全連接層輸入到分類器進而輸出分類結果。

圖1 經典的CNN網絡結構Fig. 1 Classical CNN network structure
經典的CNN網絡結構利用卷積核提取圖像中的特征,對局部進行感知并且通過權值共享降低參數計算量。但經典的CNN反向傳播過程中容易出現參數不更新現象,和池化層丟失圖像中特征信息的問題。
MobileNet網絡系列在近幾年被廣泛應用,更是輕量級網絡的典型代表。MobileNet網絡結構在經典的CNN網絡結構基礎上,將池化層、部分全連接層用卷積層來代替,其突出特點是引入了深度可分離卷積的卷積形式。標準卷積是將一組卷積核與輸入數據作用后組合成單通道特征的輸出,而深度可分離卷積是因式分解的卷積形式,將標準卷積分解為深度卷積和1×1逐點卷積2部分,深度卷積是把單個固定大小的卷積核作用到每個輸入通道,然后逐點卷積通過1×1的卷積核來進行通道信息融合并輸出。圖2顯示標準卷積(圖2(a))分解為深度卷積(圖2(b))和1×1逐點卷積(圖2(c))的過程。
圖2中M表示輸入通道數量,N表示輸出通道數量,DK×DK表示卷積核大小的乘積,DF×DF表示特征映射圖大小的乘積。

圖2 標準卷積分解過程Fig. 2 Standard convolution decomposition process
深度卷積計算成本為

逐點卷積計算成本為

深度可分離卷積計算成本占標準卷積計算成本的比例為

實驗表明[6],當使用3×3的深度可分離卷積時,其計算量比標準卷積少8~9倍,而精度只有很小的損失。MobileNet網絡系列在盡可能保證圖像分類精度穩定的前提下,極大縮短網絡訓練的時間與減少參數更新過程中的計算成本,也為后續網絡結構的優化提供了方向。但MobileNet網絡結構中仍存在著特征信息提取能力不足導致分類精度不高和網絡層中激活函數丟失負值特征信息的現象。
激活函數是神經網絡結構中非線性學習能力的關鍵點,ReLU激活函數可以有效緩解梯度彌散現象,成為大多數激活函數的主流選擇。但隨著網絡訓練輪數的增加,部分神經元對應權重得不到更新,出現神經元死亡現象,并且ReLU在特征提取過程中會丟棄特征圖內的負值特征信息。ReLU輸出值的均值始終大于零,也不利于網絡學習能力的表達。Leaky ReLU激活函數的特性解決了ReLU的問題,有效提取負值特征信息,數學形式為

式中:xi代表第i層的輸出;yi代表第i層經過非線性變換后的輸出;ai是第i層中的固定參數,其范圍是 (1,+∞)。Leaky ReLU激活函數如圖3所示。由于Leaky ReLU激活函數負半軸是一個較小斜率的函數,可以來初始化神經元,避免神經元死亡的同時增加了負值特征信息的提取。由文獻[18]可知,當Leaky ReLU激活函數中ai=5.5時,Leaky ReLU激活函數的分類效果要優于ReLU激活函數。
針對經典的CNN網絡結構和MobileNet網絡結構特征提取能力不足和易忽略負值特征信息的問題,本文提出一種改進的MobileNet網絡結構的圖像分類方法,即L-MobileNet。首先,研究了基于MobileNet網絡中存在特征信息的各個局部區域;其次,設計了深度卷積取反層和深度卷積融合層,將原圖像特征和其取反特征進行融合提取;最后,加入類殘差結構,組合卷積塊,通過損失函數優化整個網絡進行分類。
L-MobileNet網絡結構如圖4所示,參數設置如表1所示。深度卷積層得到的特征圖通過深度卷積取反層進行取反操作,并將其與原特征圖的特征信息一起通過深度卷積融合層進行特征相加,傳遞至下一個逐點卷積層,然后傳遞至下一個卷積塊,以此類推。其中的卷積塊中采用Leaky ReLU激活函數,將其作用于每一個卷積塊中的每一個卷積層。為了防止出現梯度彌散現象,在卷積塊中加入了類殘差結構,先進行信息通道的擴展再進行信息通道的壓縮。通過交叉熵損失函數優化整個網絡,直至收斂。最終經過全局平均池化層和逐點卷積層來達到分類數目要求,通過Softmax分類器進行輸入樣本的分類。

圖4 L-MobileNet網絡結構Fig. 4 L-MobileNet network structure

表1 L-MobileNet參數設置Table 1 L-MobileNet parameters setting
如圖4所示,本文對特征信息的融合采用的是在深度卷積層提取了原始圖像局部特征后,同步進行深度卷積取反層,然后利用深度卷積融合層對2層特征信息進行處理。符號說明如下:對于給定的圖像,其中l表示當前層,l?1 表示前一層,表示當前層第j個特征圖,? 代表深度卷積運算表示前一層第i個特征圖表示該層第i個特征圖和前一層第j個特征圖所作用的卷積核表示偏置值,Mj表示產生該層第j個特征圖相關的前一層特征圖累計值,f(·) 表示Leaky ReLU激活函數。
深度卷積層對輸入的處理為

深度卷積取反層同步對輸入進行處理為

深度卷積融合層將前2步提取的信息進行融合為

深度卷積融合層所提取出的特征,不僅包含了原始深度卷積層中的特征信息,而且對潛在的圖像局部區域的特征進行提取,融合后的特征隨著網絡訓練的進行,不斷學習出識別效果優秀的高維特征信息。
如圖4可知,L-MobileNet網絡結構中有6個大卷積塊,為了提高MobileNet網絡中對負值特征信息的敏感度和負值特征信息傳播過程中的完整度,本文將原始的ReLU激活函數替換為Leaky ReLU激活函數,并引入類殘差結構。經典的CNN受限于固定的卷積核大小和激活函數的選取,影響了負值特征信息的提取和傳播,而MobileNet網絡雖對卷積核形式有所改變但對負值特征信息量仍提取不足。由于Leaky ReLU激活函數自身特性對負值敏感,能夠保障神經元不死亡,并且類殘差結構可以防止梯度彌散,利于負值特征信息的傳播,所以本文在每一個卷積層后使用Leaky ReLU(ai=5.5)激活函數和在第3、5及第6卷積塊使用類殘差結構。
由于前向傳播過程中前面網絡層中梯度的計算尚可保持較大值,而越靠后的網絡層中梯度值會越來越小,導致反向傳播過程中極易出現梯度彌散現象,所以本文將類殘差結構放置在網絡中后端位置。以其中一個卷積塊為例,如果特征向量的維度越低,卷積層中的計算量越小,導致網絡結構整體計算速度越快,但這并不能夠提取出輸入圖像全面且有效的特征信息。為了達到網絡結構平衡的目的,本文采取含有高維特征向量的設計:卷積塊的輸入端采用1×1的逐點卷積結構,目的是將特征信息從低維空間映射到高維空間,同時受文獻[7]的啟發,將其中負責維度擴展的超參數的默認值設置為6。卷積塊的輸出端同樣采用1×1的逐點卷積結構,在沒有超參數的設定下,可以將特征信息從高維空間映射到低維空間。
逐點卷積計算為

式中: (·)代表逐點卷積運算;其余符號與式(5)相同。為了保證負值特征信息的完整度,在卷積塊中每一個卷積層后,摒棄掉可能會造成信息丟失的ReLU激活函數,使用Leaky ReLU激活函數。卷積塊以逐點卷積、深度卷積、逐點卷積交錯的方式排列。
在反向傳播的參數更新中,L-MobileNet網絡結構使用Tensorflow框架下tf.average_pooling2d進行全局平均池化,根據輸入信息的類別數目由逐點卷積層輸出。
用Softmax分類器來進行輸出分類為

采用交叉熵優化的損失函數為

式中:C表示類別;N表示樣本數;γ 表示Dirichlet函數;參數 θ =(θ1,θ2,···,θk);R(·) 表示正則化約束項;λ 表示正則化系數。
損失函數 ε 對輸入c的導數為

式中: ε 表示損失函數;c表示前一網絡層的輸出;f(c) 表示前一網絡層經過非線性變換后的輸出;ai是 (1,+∞) 的固定參數表示從網絡深層傳播來的梯度表示當前層輸入值的梯度。當增大前向傳播中對特征信息的存儲后,將減小訓練樣本的誤差,再通過反向傳播算法進一步影響了網絡結構中的參數更新。
參數的更新規則為

式中:c表示前一網絡層的輸出;ε 表示損失函數;μ 表示動量系數;α 表示學習率; ω 表示權重衰減系數。本文L-MobileNet通過影響網絡中參數c和更新,最終影響到網絡結構的分類結果。
網絡模型的參數量(空間復雜度)的計算為

網絡模型的計算量(時間復雜度)的計算為

式中:Cl′為第l′層卷積核個數;Cl′?1為上一層的輸出通道數;kl′為卷積核尺寸;M為輸出特征映射的邊長;D為所有卷積層數;O(·) 為所需要的空間資源量。由于本文使用的激活函數是Leaky ReLU函數,因此可以通過原位運算完成從輸入到輸出的非線性映射,排除輸出特征映射的參數量。根據式(15)、(16)計算表明,L-MobileNet參數總量為280萬、計算量為320百萬次,與MobileNetV1[6]的420萬個參數、575百萬次計算量和MobileNetV2[7]的340萬個參數、300百萬次計算量相比,本文方法參數量更少。
L-MobileNet網絡結構的初始學習率設置為0.1,隨著訓練輪數增加和訓練誤差變小,學習率呈自適應狀態且衰減系數為0.96,直到達到最大訓練輪數時停止訓練。對于數據集L-MobileNet網絡算法步驟為
輸入訓練數據集et網絡結構,圖像分類數,每一批的數量,自適應學習率的初始值和衰減系數。
1) 利用預處理技術將數據集中的訓練集與測試集進行處理,轉換為符合LMobileNet網絡結構輸入的四維數組即每一批輸入的圖片數和每一批次輸入的標簽數。
2) 將每一批輸入的圖片數和每一批次輸入的標簽數導入網絡架構文件中,并初始化L-Mobile-Net網絡中所有的權值k和偏置b。
3) 令l=1。
4) 用L-MobileNet網絡對輸入進行訓練,計算訓練樣本的實際輸出值及每一網絡層所產生的誤差總和。
5) 用RMSProp算法優化器計算網絡中權值和偏置的偏導數以此更新相應參數值。
6) 判斷l>Epoch 訓練輪數是否成立,成立則停止訓練;不成立,則返回4)。
輸出參數(權值k和偏置b)已知的L-MobileNet網絡結構。
實驗數據取自Cifar-10、Cifar-100和Dogs vs Cats。Cifar-10數據集中有10種類別,由60 000張32×32彩色圖片組成,每種類別包含6 000張圖片,總計有10 000張測試圖片和50 000張訓練圖片。Cifar-10數據集分為1個測試批次和5個訓練批次,測試批次是由每種類別中隨機選擇的1 000張圖片組成,其余5個訓練批次是由每種類別中隨機的剩余圖片組成(某個訓練批次可能包含某個類別的圖片數量多于另一個類別的圖片數量)。圖5顯示Cifar-10數據集中部分樣本。Cifar-100數據集與Cifar-10數據集結構類似,但有coarse和fine 2種數據構成。圖6顯示Dogs vs Cats數據集中部分樣本。實驗采用的Cifar-10、Cifar-100(coarse)和Cifar-100(fine)數據集劃分采取5:1的比例,在60 000張圖片中,50 000張圖片用于訓練,10 000張圖片用于測試驗證。Dogs vs Cats數據集各類取前2 000張圖片用于訓練,各類另取400張圖片用于測試驗證。在實驗前將4個數據集進行了左右翻轉、上下翻轉、調整圖片亮度、調整圖片對比度和白化的數據預處理技術。

圖5 Cifar-10數據集的部分圖例Fig. 5 Partial legend of Cifar-10 dataset

圖6 Dogs vs Cats數據集的部分圖例Fig. 6 Partial legend of Dogs vs Cats dataset
為驗證L-MobileNet網絡結構有效性,本文將其與經典的CNN、MobileNetV1、MobileNetV2、經典的CNN+Leaky ReLU,MobileNetV1+Leaky ReLU和MobileNetV2+Leaky ReLU進行對比實驗,并評價各網絡結構,所有對比實驗均采用相同卷積層設置,且每層參數設置也相同。
實驗仿真環境采用tensorflow1.14框架,編程語言為Python3.7,框架平臺為PyCharm2019.1.1,使用Windos10,64位操作系統,CPU使用Intel Core i7-7700K,GPU使用NVDIA GTX1080 8 G,內存為32 G以實現所有實驗。
在L-MobileNet網絡輸入層中,按照數據集中圖片大小輸入即可,訓練及測試樣本batch_size為128。卷積層中,逐點卷積使用1×1卷積核,深度卷積使用3×3卷積核,并對每次卷積操作進行Leaky ReLU激活函數的非線性特征提取,利用深度卷積融合層來產生更多的特征,使得模型增強數據分類學習過程中的控制力。訓練過程中使用RMSPropOptimizer優化策略,decay為0.9,momentum為0.9。學習率采用自適應學習率,decay_rate為0.96。對于Cifar-10、Cifar-100(fine)、Cifar-100(coarse)和Dogs vs Cats數據集,經典的CNN、MobileMetV1、MobileNetV2以及L-MobileNet 4種模型分別通過50、50、50和200個Epoch訓練,每經過一個Epoch,用測試集進行準確率的驗證和記錄,所有網絡模型均達到收斂狀態,4種模型隨Epoch的準確率變化曲線如圖7所示。

圖7 不同數據集下準確率變化曲線Fig. 7 Accuracy curve under different datasets
在相同的參數設置和卷積層設置下,本文還將經典的CNN、MobileNetV1以及MobileNetV2分別作用于Leaky ReLU激活函數同L-MobileNet進行對比實驗,在Cifar-10、Cifar-100(fine)、Cifar-100(coarse)和Dogs vs Cats數據集上,分別經過50、50、50和200個Epoch訓練,所有網絡模型均達到收斂狀態,其準確率隨Epoch的變化曲線如圖8所示。

圖8 不同數據集下準確率變化曲線Fig. 8 Accuracy curve under different datasets
可以看出,對于經典的CNN、MobileNetV1以及MobileNetV2網絡結構中使用Leaky ReLU激活函數時,雖然分類準確率有所提升,但仍然低于L-MobileNet的分類準確率,這表明本文L-MobileNet是有效的。
本文使用的評價指標是最高準確率和平均準確率。最高準確率是在所有訓練輪數中正確分類的樣本數占樣本總數的比例最大值,平均準確率是所有訓練輪數的準確率平均值。在Cifar-10、Cifar-100(fine)、Cifar-100(coarse)和Dogs vs Cats 4個數據集中所有網絡結構的平均準確率數據和最高準確率數據如表2所示。
從圖7和表2可知,在4個數據集分類實驗中,本文提出的L-MobileNet的分類準確率要明顯高于經典的CNN、MobileNetV1以及MobileNetV2。在Cifar-10數據集的實驗結果中,經典的CNN的平均準確率為70.31%,MobileNet系列的準確率相比經典的CNN有較大提升,平均準確率分別達到了74.31%和75.65%。在最高準確率方面,MobileNetV1和MobileNetV2也比經典的CNN分別提升了4.57%和5.67%,但仍然低于L-MobileNet中83.11%的平均準確率和87.36%的最高準確率。在Cifar-100(coarse)和Cifar-100(fine)數據集的實驗結果中,可以看出L-MobileNet仍是達到最好結果,在最高準確率方面,相較于MobileNetV1分別提升了4.56%和2.84%,比MobileNetV2分別提升了3.26%和1.84%。在Dogs vs Cats數據集的實驗結果中,因類別數較少,整體分類精度較高。MobileNetV1和MobileNetV2在平均準確率和最高準確率上的結果相較于經典的CNN提升明顯,MobileNetV1分別達到了78.48%和84.96%,而MobileNetV2分別達到了80.87%和88.81%,本文提出的L-MobileNet比經典的CNN在平均準確率上提升了10.23%,最高準確率上提升了14.08%,分別達到了85.51%和93.94%的分類精度。出現這樣結果的原因是MobileNet系列使用了改進的深度可分離卷積結構,改善了經典的CNN網絡結構中的池化等丟失特征信息的問題,而本文方法在MobileNet的基礎上,利用深度卷積融合層和Leaky ReLU激活函數可以更全面的提取特征信息。

表2 7種網絡結構在4種數據集中準確率統計Table 2 Accuracy statistics of seven network structures in four datasets %
從圖8和表2可知,將經典的CNN、MobileNetV1以及MobileNetV2分別作用于Leaky ReLU激活函數后,實驗結果均不及本文提出的L-MobileNet。經典的CNN+Leaky ReLU在4個數據集中都處于最差水平,L-MobileNet在4個數據集的平均準確率和最高準確率都處于最好水平。在Cifar-10、Cifar-100(fine)、Cifar-100(coarse)和Dogs vs Cats 4個數據集的最高準確率方面,L-MobileNet比MobileNetV1+Leaky ReLU分別提升了5.82%、3.28%、1.77%和8.07%,并且改進的MobileNet比MobileNetV2+Leaky ReLU分別提升了5%、2.36%、0.63%和3.98%。實驗結果說明了網絡結構與Leaky ReLU激活函數的結合的確可以提高圖像分類準確率,原因是Leaky ReLU激活函數對潛在局部區域的負值特征信息更敏感。
綜合以上實驗結果表明,本文對MobileNet的改進是有效的,所提出的L-MobileNet網絡結構具有較好的分類效果。L-MobileNet在不同的數據集上表現出優秀的泛化能力,具有良好的推廣應用前景。
為了進一步驗證本文方法的有效性,在Cifar-10數據集上將L-MobileNet網絡結構與近幾年圖像分類上具有代表性的8種方法進行分類精度的對比,比較結果如表3所示。
由表3可以得出,與傳統學習方法(Mean-covariance RBM、Improved local coord 、PCANet) 相比,本文提出的L-MobileNet優勢明顯,且有較大提升。但與其他基于深度學習的方法(Highway、Maxout+Dropout、NIN)相比較,分類精度尚有不足,主要原因是NIN網絡結構在卷積層后加入了BN和Dropout技術,而Maxout網絡結構和Highway網絡結構使用了更多的網絡層數,屬于深度網絡。本文提出的L-MobileNet網絡結構在低網絡結構中具有一定的優勢。

表3 9種不同方法在Cifar-10數據集上的分類精度Table 3 Classification accuracy of 9 different methods on Cifar-10 dataset
為了解決具有復雜特征圖像分類中由于特征信息提取能力不足,尤其是對負值特征信息不敏感而造成圖像分類精度下降的問題,本文提出了一個改進的MobileNet網絡結構(L-MobileNet)。通過在4個公開數據集上進行的實驗結果表明,與其他6種神經網絡圖像分類方法相比,L-MobileNet分類精度高,在輕量級網絡中具有優勢,可復制能力強,可方便移植到移動端設備,使相關設備在包含復雜特征圖像場景下,具有良好的分類能力。進一步的研究工作內容:1)驗證本文改進方法在更深網絡結構下的有效性,進一步提升模型分類性能;2)進一步優化網絡模型結構,以適應沒有標簽樣本的數據集。