生 龍,馬建飛,楊瑞欣,吳 迪
(河北工程大學 a.信息與電氣工程學院; b.河北省安防信息感知與處理重點實驗室,河北 邯鄲 056038)
隨著計算機硬件技術的快速發展,更高集成度的處理器和顯卡大幅提升了計算機的串行與并行計算能力,這使得圖像處理領域的經典算法卷積神經網絡(Convolutional Neural Network,CNN)取得了較高的圖像識別準確率。
CNN是由簡單的神經網絡改進而來,使用卷積層和池化層替代全連接層結構,卷積層能夠有效地將圖像中的各種特征提取出并生成特征圖。當前的CNN都偏向于更深層的網絡結構,文獻[1]將CNN的卷積層數增加至5層構成深度卷積神經網絡(Deep Convolutional Neural Network,DCNN),隨后文獻[2]又將網絡進一步增加到22層。近年來,研究人員采用了“殘差學習”平衡深度信號傳遞和準確率的關系,使得ILSVRC的深層殘差網絡[3]可以達到152層。深層的網絡結構帶來更高的準確率,但也產生更多的網絡參數。為此,深層卷積神經網絡需要使用足夠多的帶標注數據來訓練網絡,但獲取足夠數量的帶標簽數據難度較大。本文針對神經網絡在識別小樣本時準確率較低的問題,提出一種自混合CNN算法與模型,旨在充分提取并利用較少數據集的特征來提高網絡識別率。
CNN[4]中的卷積層能夠提取特征圖,對全卷積神經網絡[5]可以使用反卷積將圖像信息劃分區域進行定位,本文將CNN卷積特征圖按照一定比例進行混合以形成新的特征訓練集。具體方法是通過對單個圖像設置卷積核個數以提取特征圖并保存,與同標簽數據特征提取的特征圖集進行同位交換,相同位置保存的信息將會充分融合同類數據的特征,從而提高特征利用率。
結合CNN和全卷積神經網絡的特征提取特點,構建經典CNN架構,即LeNet-5[6],將本文所提方法應用于基于人臉的男女性別識別、手寫數字識別[7]和VOC2007數據集圖像分類問題的實驗,以驗證本文方法在數據樣本較小時的性能。
CNN在圖像分類與識別方面都有較好的表現,其最早是受到生物的視覺細胞分化感受的啟發。生物觀察物體是通過分級的視覺皮層的處理來進行,通過逐層掃描來判斷顏色、紋理以及輪廓,最后抽象出物體更高級的特征從而進行物體識別[8]。1989年,LECUN等人將BP算法用于訓練多層CNN從而識別手寫數字,隨后不斷地對CNN進行完善,最后構建一種多層的人工神經網絡,取名為LeNet-5,其在手寫數字識別上取得了較好的效果[9]。但是,在面對復雜圖像數據時,由于缺乏大量的訓練數據、缺少對約束函數的研究以及計算機性能的約束,導致LeNet-5沒有取得較為理想的識別率。經過不斷分析,研究人員提出了新的模型AlexNet[10],其在圖像識別任務中取得了突破性的進展。AlexNet增加了網絡層數,相較于LeNet-5網絡,其運用了非線性激活函數ReLU[11],為了防止網絡過擬合,AlexNet運用Dropout[12]方法并取得了優異的結果,這使得CNN成為圖像識別領域的研究熱點。隨后,研究人員又提出了其他的改進方法,其中典型的為VGGNet[13]、GoogleNet[14]和ResNet[15]等。CNN的層數逐漸加深,ResNet作為2015年ILSVRC的冠軍,其網絡深度為AlexNet的20多倍,同時也是VGGNet的8倍。增加網絡深度的同時會增加可利用的非線性函數,通過疊加使得網絡逼近目標函數的結構,最終得到更好的特性表征。但網絡深度的增加也提高了網絡的整體復雜度和信息傳遞的困難度,使網絡參數難以優化,極易出現過擬合或者網絡不收斂等問題。
CNN能夠直接讀取圖片像素信息并進行特征提取。首先,其采用卷積方法掃描圖片,提取各個部分的細節特征圖,經過池化進一步刪減冗余參數,提高特征提取效率。經典CNN網絡結構如圖1所示。

圖1 CNN網絡結構Fig.1 CNN network structure
經典CNN結構由輸入層、卷積層、池化層和全連接層組成,通常將卷積層和池化層并稱為卷積層。由于數據集分類復雜度增加,研究人員相繼提出線性糾正函數ReLU[16]、PReLU[17]和Dropout等增強CNN的擬合能力,提高CNN處理復雜數據的能力。CNN的卷積過程如圖2所示。

圖2 CNN的卷積過程Fig.2 Convolution process of CNN
卷積過程的具體公式為:
yi=w1x1+w2x2+…+wixi
(1)
其中,yi是卷積后結果,wi為卷積核的參數,xi為原始圖的像素值,i為卷積核序列數。
CNN將輸入的圖像經過卷積過程映射到下一個網絡的計算如下:
(2)

池化層通過降低特征圖的分辨率來獲得具有空間不變性的特征[18]。池化層進一步提取特征,常用的池化方法有最大池化、均值池化和隨機池化[19-20]。池化層的計算公式如下:
(3)

全連接層就是通常的神經網絡,主要用于分類數據集,全連接層可以整合特征提取的局部信息[21]。
全卷積神經網絡將CNN的全連接層換成卷積層,從而解決CNN在圖像分割時精度不高的問題。文獻[22]提出FCN,解決了圖像中的物體分類問題,并且其使用圖像像素之間的差異進行圖像中的物體分割。
將全連接層替換為卷積核大小為1×1的卷積層,然后得到heatmap圖,即低像素的卷積特征圖,再利用反卷積操作將heatmap圖還原成原圖大小,對每一層特征圖反卷積得到原圖,對原圖進行融合以分析圖像像素的最大概率,最終完成圖像分割。FCN的結構如圖3所示。

圖3 FCN結構Fig.3 FCN structure
受到全卷積網絡可以定位像素的啟發,圖像經過卷積處理能夠交換圖像位置信息,同類圖像通過交換同位特征圖共享特征。如圖4所示,2個男士的特征分別為一個無頭發而戴眼鏡,另一個無眼鏡但有頭發。由于提供的數據較少,沒有包含既有頭發又戴眼鏡的男士,因此通過交換卷積特征圖將同類圖像特征相融合,從而增加識別范圍。

圖4 2種圖像樣本Fig.4 Two image samples
基于上述分析,本文將同類圖像進行卷積,特征圖按規律交換,使同類圖像之間的差異特征能夠進行融合,從而提高識別準確率,增大識別范圍,以應對樣本不足的問題。
遷移學習是運用已有經驗和知識對不同但相關領域的問題進行研究的機器學習方法[23],其也是應對樣本數量較小問題的有效方法。遷移學習將現有訓練好的網絡參數直接遷移到新網絡進行訓練,參數經過了充分訓練,在新數據集上無需很大的訓練次數。參數微調將網絡不同層參數進行凍結,只針對部分網絡參數進行訓練。
本文利用較少數據集對網絡進行參數預調制,將網絡準確率調整到能夠進行基礎識別、測試準確率達到60%以上,如果實驗數據訓練網絡難以達到所需要的精度,則使用遷移學習初始化網絡參數。本文進行圖像分類問題研究,使用隨機數訓練和參數微調初始化方法,利用非實驗部分的小樣本數據將網絡訓練到預設精度,然后對實驗結果進行對比分析,以驗證本文方法的有效性。
數據預處理可以擴大樣本數量,常見的預處理方法有尺度變換、旋轉變換和平移變換等。本文提出一種基于CNN的特征提取方法,將其稱為特征圖交換算法,具體描述如下:
算法1特征圖交換算法
輸入初始特征圖集A=(A1,A2,…,Ai),初始特征圖集B=(B1,B2,…,Bk),j和k分別為A和B的替換角標
輸出交換特征圖集Y=(YAj,YBk)
1.For j,k=n→i/n(n為分組),且每次A和B均只替換相同位,具體計算見式(4);
2.For j=1→j=i (n=1時);
3.(A1,A2,…,Ai) →(B1,B2,…,Bk);
4.YAj={(A1,B2,B3,…,Bk),(B1,A2,B3,…,Bk),(B1,B2,A3,…,Bk),…,(B1,B2,B3,…,Ai)};
5.End for;
6.For k=1→k=i;
7.(B1,B2,…,Bk)→(A1,A2,…,Ai);
8.YBk={(B1,A2,A3,…,Ai),(A1,B2,A3,…,Ai),(A1,A2,B3,…,Ai),…,(A1,A2,A3,…,Bk)};
9.End for;
10.Y←YAj∪YBk;
11.End for;
12.Output Y=(YAj,YBk)
A、B是同標簽圖像的初始特征圖集,本文算法首先將A特征圖依次替換到B特征圖集中,再將B替換到A特征圖集中,且每次A和B均只替換相同位置的特征圖。算法將n設置為1,則表示A或B以1為單位分組,替換到B或A圖集中。n可以根據不同需求設置為不同的整數,如n=4,則表示A或B以4為單位分組,即將(A1,A2,A3,A4)替換為(B1,B2,B3,B4)。
特征圖交換具體公式如下:
YX=2X/n
(4)
其中,YX表示混合特征處理結果,X為卷積核。具體交換方式為兩兩不重復地交換n個特征圖,即得到(b1,a2,a3)、(a1,b2,a3)、(a1,a2,b3)、(a1,b2,b3)、(b1,a2,b3)和(b1,b2,a3)6組數據,得到6組新的由相同卷積層提取出的特征圖,圖5中展現了3組特征圖。

圖5 特征圖交換示意圖Fig.5 Schematic diagram of feature map exchange
本文提出的數據交換可以在各個卷積層中進行。為了簡化實驗過程,僅對第1個卷積層進行特征圖交換。本文的CNN第1個卷積層共有32個卷積核,對每張圖像提取出32張特征圖并進行交換,交換過程中設置n=4,4幅特征圖為一組進行交換得到新的數據集,具體交換結果如表1所示。

表1 前4組特征圖交換結果Table 1 Exchange results of the first four groupsof feature maps
如果10張同標簽的數據經過32卷積核提取出32組數據,經過交換得到720組數據,充分融合數據可以獲得大量的可訓練數據。但是,該過程也會產生較多的冗余數據并延長了訓練時間。
保存交換后的數據,將第1層卷積網絡進行參數凍結,交換后的數據訓練剩余網絡參數,然后每層都用相同方法進行訓練。網絡訓練流程如圖6所示。數據1需要進行交換得到原始數據,此時網絡已經初始化,參數都通過訓練達到基本的提取功能,即準確率能達到60%左右。將數據1輸入當前CNN網絡,經過第1層卷積層和池化層后將輸出特征圖保留標簽并保存到數據2中,然后經過本文提出的方法生成新的數據集,即數據3。將數據3通過第2層卷積層輸入剩余的CNN中進行訓練,除第1層卷積層和池化層,更新其余網絡層的參數,最后完成網絡訓練。

圖6 網絡訓練流程Fig.6 Procedure of network training
對圖像進行簡單的預處理,包括灰度處理、統一大小和位深。灰度處理具體如下:
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)
(5)
其中,i、j分別是圖像的橫、縱坐標值,R、G、B分別是圖像的三原色。
圖像大小設置為:人臉圖像112像素×92像素,MNIST圖像28像素×28像素、VOC2007圖像500像素×375像素。所有圖像位深為8。
男女識別、MNIST、VOC2007實驗數據分別代表3種情況,即類別少難分辨、類別多好分辨、類別多難分辨。MNIST數據集取出各數字10張圖像共100張作為訓練集,100張作為測試集。男女識別圖像為網上爬蟲數據,選取男女圖像50張作為訓練集,100張作為測試集。VOC2007為分類數據集,包含20個種類,分別選取10張圖像作為訓練集,100張作為測試集。
搭建3層卷積神經網絡進行實驗,以Pytorch作為框架。計算機處理器為I7 8700型號,搭配NVIDIA GeForce GTX 1050型號顯卡,GPU的并行處理能力能夠加快圖像數據的處理速度。實驗采用留一交叉驗證(Leave-One-Out Cross Validation,LOO-CV)方法,這種方法適用于小樣本情況,得到的結果精準,但是其計算復雜度較高。網絡參數設置為 6層卷積神經網絡,卷積核個數分別是32、64、96、128、160、160。表2所示為網絡參數設置。

表2 網絡參數設置Table 2 Network parameters setting
使用準確率(Accuracy)和召回率(Recall)作為評估標準。準確率計算公式為:
Accuracy=(TP+TN)/(TP+TN+FP+FN)
(6)
其中,TP和TN分別表示被正確劃分為正類和負類的個數,FP和FN分別表示被錯誤劃分為正類和負類的個數。
召回率計算公式為:
Recall=TP/(TP+FN)
(7)
召回率表示所有正例中被劃分正確的比例,其衡量分類器對正例的識別能力,是一種查全率。
按前文設置進行實驗,取原數據集2倍和3倍數量的訓練集,利用CNN算法進行實驗與對比。表3~表7中給出的實驗數據均為10次以上實驗的平均值,時間為達到最優值所需要的時間平均值。
表3所示為實驗經過第1層卷積提取的卷積特征圖組和自混合后的卷積特征圖組數情況。從表3可以看出,1倍數據在自混合后生成的特征圖組和未經過自混合后生成的特征圖組對比,其提取組數量基本在2倍到3倍數據量之間。特殊情況是男女識別數據集,由于同標簽樣本基數較大,自混合后生成的特征圖組數遠超3倍數據量提取組數。

表3 第1層卷積特征圖組數Table 3 The number of sets of convolution feature maps in the first layer
從表4、表5可以看出,本文方法對標注數據缺乏情況有一定的改善,雖然其增加了運行時間,但運行時間與提取特征圖組數成比例關系正常增加。1倍數據量是10幅圖像,2倍數據量經過第1層卷積提取后是640組,而1倍數據量經過特征圖交換可得720組數據,相差不多,但是由于存在冗余數據,因此1倍數據質量低于2倍數據質量。

表4 1倍數據實驗結果Table 4 Experimental results of 1-fold data

表5 1倍數據結合特征圖交換方法的實驗結果Table 5 Experimental results of 1-fold data combined with feature map exchange method
通過表6可以看出,在2倍數據量時,雖然其提取的特征圖組數與本文算法提取的特征圖組數相似,并且1倍數據量還存在不少冗余組,但是1倍數據量加特征圖交換方法,在準確率上要比2倍數據量更高,可以證明特征圖交換能有效解決標注數據不足的問題。

表6 2倍數據實驗結果Table 6 Experimental results of 2-fold data
從表7可以看出,當數據量為3倍時,部分數據集超過1倍數據量的準確率,證明當分類圖像較復雜時,本文方法得到的準確率提升幅度較小,對于簡單圖像的分類準確率提升較多,并且本文算法在運行時間上并沒有超過3倍數據量時的運行時間,因此,該方法的運行時間合理。

表7 3倍數據實驗結果Table 7 Experimental results of 3-fold data
綜上,本文方法能夠在訓練數據不足的情況下,通過將現有數據的卷積特征圖進行交換,使同類圖像特征產生新的組合,從而增加樣本多樣性,提高識別準確率。
本文提出一種基于特征交換的CNN圖像分類算法。對CNN的特征提取方式進行改進,降低其對數據量的依賴性。實驗結果表明,該算法可在樣本不足的情況下通過生成新的數組來增加樣本數量,且基數越大組合成新的數據量越大,從而提高了圖像識別準確率。然而,隨著新數據量的增加,本文算法訓練時間會有所增加,并且會產生較多的冗余數據,不利于網絡訓練。下一步將針對生成數組冗余數量較多的問題,通過交換不同的卷積層來提高特征交換效率。此外,針對圖像相似度不同的現象,將探索有效的圖像預處理方法,以保留圖像主要信息并且使圖像特征具有位置相似性。