薄康虎,李菲菲,陳 虬
(上海理工大學(xué) 光電信息與計算機(jī)學(xué)院,上海 200093)
隨著信息時代的發(fā)展,場景識別在很多圖像(視頻)處理任務(wù)中扮演著重要的角色.然而,由于同類間的相似性和異類間的差異性導(dǎo)致場景識別在計算機(jī)視覺領(lǐng)域的發(fā)展具有挑戰(zhàn)性,強(qiáng)有力的特征提取和準(zhǔn)確的分類器成為攻克難關(guān)的重要關(guān)鍵所在.
傳統(tǒng)的方法主要是提取低級特征用于貝葉斯或支持向量機(jī)(SVM)分類.但是,將低級特征直接進(jìn)行映射可能會引起更大的語義鴻溝[1],后來又將低級特征編碼為中層語義信息進(jìn)行解決上述問題.其中廣泛使用的編碼方法有詞袋模型(Bag of Words)[2]、空間金子塔模型[3]、概率生成模型[4],稀疏編碼[5]等.
近年來由于計算硬件的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在計算機(jī)視覺領(lǐng)域帶來革命性的改革,推動了場景識別的發(fā)展.與傳統(tǒng)的統(tǒng)計學(xué)方法相比,神經(jīng)網(wǎng)絡(luò)無需對概率模型進(jìn)行假設(shè),具有極強(qiáng)的學(xué)習(xí)能力和容錯能力,所以卷積神經(jīng)網(wǎng)絡(luò)不僅可以提高場景識別的準(zhǔn)確性,而且還可以作為各種通用特征提取器進(jìn)行識別任務(wù),如目標(biāo)檢測、語義分割以及圖像檢索等.只要簡單的預(yù)處理圖像就可以直接作為輸入,省去了復(fù)雜的特征工程,提高CNN的傳輸能力,因此卷積神經(jīng)網(wǎng)絡(luò)逐漸成為圖像識別問題的重要工具,在圖像理解領(lǐng)域中獲得了廣泛應(yīng)用.
基于上述研究方法的考慮,本文采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行場景識別的研究,由于不同模型之間的特性和運行效率,故選擇AlexNet模型作為基礎(chǔ)模型,分別進(jìn)行不同方式的改進(jìn)提高場景識別率.
卷積神經(jīng)網(wǎng)絡(luò)模型是利用空間結(jié)構(gòu)數(shù)據(jù)的特殊神經(jīng)網(wǎng)絡(luò)架構(gòu).一個標(biāo)準(zhǔn)的CNN包含三種特征操作層,即卷積層、池化層和完全連接層.當(dāng)這些層被堆疊時,如圖1所描述的那樣就形成了CNN架構(gòu).
圖1 標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)框架
卷積層首先執(zhí)行卷積操作來完成一系列的線性激活,然后每個線性輸入到非線性激活函數(shù)中,例如ReLU、tanh.在卷積層中,輸入與一系列的卷積核進(jìn)行卷積學(xué)習(xí),卷積是一種在兩種信號上的線性操作,例如:有兩個函數(shù)x(t)和ω(t),t為連續(xù)變量,移位值a,卷積操作可以定義為:
其中,x表示信號輸入,ω表示卷積核 (濾波器),輸出h表示特征映射,t表示時間,a表示移動的步長.
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)每個輸出都連接每個輸入,而卷積神經(jīng)網(wǎng)絡(luò)擁有局部感受野,這意味著每個輸出單元只連接到輸入的一個子集,利用空間局部相鄰單元之間的相關(guān)性進(jìn)行卷積運算.CNN的另一個顯著特性是參數(shù)共享,卷積層中使用的參數(shù)共享意味著每個位置共享相同的參數(shù)(權(quán)重和偏差),減少了整個網(wǎng)絡(luò)的參數(shù)數(shù)量,提高了計算的效率.
池化層一般存在于每個卷積層之后來降低上一層卷積計算輸出的維數(shù),即將特征圖像區(qū)域的一部分求個均值或者最大值,用來代表這部分區(qū)域.如果是求均值就是 mean pooling,求最大值就是 max pooling.常用的是最大值池化,最大值池化輸出的是矩形鄰域內(nèi)的最大值,圖2描述了具有2×2濾波器和步長為2的最大值池化,下采樣表示空間大小,此外,池化操作可以保證圖像的轉(zhuǎn)移不變性.
圖2 最大池化示例
在完成多個卷積層和池化層之后,卷積神經(jīng)網(wǎng)絡(luò)通常采用全連接層結(jié)束學(xué)習(xí),完全連接層中的每個神經(jīng)元都完全連接到前一層中的所有神經(jīng)元,在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用.
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)稀疏的網(wǎng)絡(luò)結(jié)構(gòu)無法保留全連接網(wǎng)絡(luò)密集計算的高效性和實驗過程中激活函數(shù)的經(jīng)驗性選擇造成結(jié)果不準(zhǔn)確或計算量大等一系列待優(yōu)化的問題,本章節(jié)以AlexNet作為基本的網(wǎng)絡(luò)模型,分別從模型深度、寬度、多尺度提取以及多層特征融合方面進(jìn)行改進(jìn)提高場景識別的有效性.
(1)避免早期網(wǎng)絡(luò)階段的表達(dá)瓶頸問題
一般來說,在最終的表示之前從輸入到輸出表示的尺寸(特征映射分辨率)會緩慢降低,步幅的減少可能會減緩特征映射分辨率的下降并減少圖像信息的丟失,集成多分辨率特征來學(xué)習(xí)更多空間信息從而克服表達(dá)的瓶頸問題.
(2)平衡模型的深度、寬度以及卷積核大小的關(guān)系
隨著深度的加深,寬度和卷積核大小需要適當(dāng)?shù)恼{(diào)整.表1顯示了卷積核大小和步長之間的幾個經(jīng)驗值.深度和寬度是調(diào)節(jié)網(wǎng)絡(luò)參數(shù)的兩個關(guān)鍵因素.盡管模型的深度越來越深,模型性能的顯著提高以及計算成本的加劇,但是深度依然被認(rèn)為是設(shè)計CNNs架構(gòu)時的最高優(yōu)先級[6–8],另外,減少濾波器 (卷積核)的數(shù)量只能部分地補(bǔ)償參數(shù)過多的問題.過多的參數(shù)最終會導(dǎo)致過度擬合并限制分類精度的提高,因此深度是考慮優(yōu)化的第一要務(wù),但不是唯一因素.
表1 卷積核大小和步長的經(jīng)驗值
(3)降低模型復(fù)雜度
從神經(jīng)元數(shù)量、模型參數(shù)尺度以及所有卷積層的時間復(fù)雜度三個方面考慮深度卷積神經(jīng)網(wǎng)絡(luò)的模型復(fù)雜度,綜合評估一個表現(xiàn)良好的網(wǎng)絡(luò)模型需要考慮這三個方面.
① 時間復(fù)雜度
其中,M代表每個卷積核輸出特征圖(Feature Map)的邊長;K代表每個卷積核(Kernel)的邊長;Cin代表每個卷積核的通道數(shù);Cout表本卷積層具有的卷積核個數(shù),即輸出通道數(shù).
由此可見,每個卷積層的時間復(fù)雜度由輸出特征圖面積M2、卷積核面積K2,輸入Cin和輸出通道數(shù)Cout完全決定.
輸出特征圖尺寸本身由輸入矩形尺寸X,卷積核尺寸K,Padding以及Stride四個參數(shù)所決定,表示如下:
卷積神經(jīng)網(wǎng)絡(luò)整體的時間復(fù)雜度可以表示為:
其中,D表示神經(jīng)網(wǎng)絡(luò)所具有的卷積層數(shù);l代表神經(jīng)網(wǎng)絡(luò)第l個卷積層;Cl表示神經(jīng)網(wǎng)絡(luò)第l個卷積層的輸出通道數(shù)Cout.
② 空間復(fù)雜度(模型的參數(shù)尺度)
空間復(fù)雜度即模型的參數(shù)數(shù)量,體現(xiàn)為模型本身的體積,可表示為:
可見,網(wǎng)絡(luò)的空間復(fù)雜度只與卷積核的尺寸K、通道數(shù)C、網(wǎng)絡(luò)的深度D相關(guān).而與輸入數(shù)據(jù)的大小無關(guān).
時間復(fù)雜度一方面決定了模型的訓(xùn)練/預(yù)測時間,如果復(fù)雜度過高,則會導(dǎo)致模型訓(xùn)練和預(yù)測耗費大量時間,既無法快速的驗證想法和改善模型,也無法做到快速的預(yù)測;另一方面決定了模型的參數(shù)數(shù)量,由于維度限制,模型的參數(shù)越多,訓(xùn)練模型所需的數(shù)據(jù)量就越大,而現(xiàn)實生活中的數(shù)據(jù)集通常不會太大,這會導(dǎo)致模型的訓(xùn)練更容易過擬合.
③ 神經(jīng)元數(shù)量
神經(jīng)元是神經(jīng)網(wǎng)絡(luò)進(jìn)行計算的重要單元之一,計算機(jī)模擬人的大腦去感知和認(rèn)知世界,在某種程度上來說,神經(jīng)元越多,學(xué)習(xí)能力必然會越強(qiáng).但是,計算機(jī)不會像人腦一樣同時可以進(jìn)行多樣任務(wù)的學(xué)習(xí),龐大的神經(jīng)元系統(tǒng)自然也就導(dǎo)致了一系列的問題,如計算效率下降、難以優(yōu)化等.
基于卷積神經(jīng)網(wǎng)絡(luò)的場景識別主要分三個主要部分,即圖像預(yù)處理、卷積操作提取特征以及全連接層的分類.以AlexNet網(wǎng)絡(luò)為基礎(chǔ)模型進(jìn)行改進(jìn),AlexNet網(wǎng)絡(luò)模型如圖3所示,具體算法如下:
圖3 AlexNet學(xué)習(xí)框架
對于場景識別任務(wù)而言,空間布局信息是至關(guān)重要的,卷積神經(jīng)網(wǎng)絡(luò)提取特征的過程中特別容易丟失空間布局的細(xì)節(jié)信息.現(xiàn)實中一張場景圖像包含多個目標(biāo)場景,其次大部分場景對象相對于其他對象保持在水平或者垂直方向,如圖4所示.
考慮到不同目標(biāo)場景圖像之間的冗余信息在特征提取過程中可能會有或多或少的影響,本實驗嘗試采用圖5所示的劃分方式,和原數(shù)據(jù)集組合為一個數(shù)據(jù)集,這樣一方面可以保留獨立的個體目標(biāo)的表現(xiàn)力,另一方面可以達(dá)到數(shù)據(jù)增強(qiáng)的效果.
圖4 場景圖像的布局信息示例
圖5 場景圖像分割示例
(1)算法 1.改變?yōu)V波器的數(shù)量.
有研究顯示AlexNet網(wǎng)絡(luò)模型第三、四層的特征提取能力最強(qiáng),故本文選擇高層次(第四層)的卷積核進(jìn)行改進(jìn),對于特定的分類任務(wù),在一定范圍內(nèi),卷積核數(shù)量過大提取過多的冗余信息會降低最終的識別效率,相反卷積核數(shù)量過小提取特征會表現(xiàn)得不充分,故本文通過多次實驗,選擇合適的卷積核數(shù)量進(jìn)行改進(jìn),實驗結(jié)果如圖6所示,第四層濾波器數(shù)量取388識別率可達(dá)91.5%,效果最佳.
(2)算法 2.加深網(wǎng)絡(luò)的深度.
網(wǎng)絡(luò)模型的深度直接影響特征提取的表現(xiàn)能力,網(wǎng)絡(luò)模型越深,提取的特征就會越抽象.因此,本文中嘗試將AlexNet網(wǎng)絡(luò)模型進(jìn)行加深,分別在第二層、第四層、第五層卷積層后面添加卷積層(卷積核為3×3),其中2-1代表的是在第二層卷積層后面添加一組卷積核為3×3的卷積層,如圖7表示對最終識別任務(wù)的影響,最高精度可達(dá)90.0%,前三種加深方法具有一定的提升,后三種的深度增強(qiáng)了提取特征的冗余性,降低了最終的識別率.
圖6 濾波器數(shù)量對識別精度的影響
圖7 網(wǎng)絡(luò)模型深度對識別精度的影響
(3)算法 3.多尺度化特征提取.
獲得高質(zhì)量模型最保險的做法一般是增加模型的深度(層數(shù))或者其寬度(層核或者神經(jīng)元數(shù)),但是這樣做法會引起三大共同的問題:① 如果訓(xùn)練集有限,參數(shù)過多會容易過擬合;② 網(wǎng)絡(luò)越大計算復(fù)雜度越大,難以應(yīng)用;③ 網(wǎng)絡(luò)越深,梯度越往后傳播越容易消失,難以優(yōu)化模型.鑒于此,本文通過不同的尺度卷積實現(xiàn)多尺度特征的利用,多尺度化提取模塊如圖8所示.
此外本文還采用兩個3×3的卷積核代替5×5的卷積核進(jìn)行比較實驗,經(jīng)過多次實驗可知多尺度提取結(jié)構(gòu)所在層數(shù)越高,通道數(shù)越多,該方法越能獲得更高的效率.因此在兼顧特征冗余性影響的同時,分別在第五個卷積層(conv5)后加入1,2,3個多尺度化提取結(jié)構(gòu),改進(jìn)前后的識別率分別為:88.6%,82.4%,73.6% 和91.5%,89.6%,88.9%.
(4)算法 4.多層特征融合.
傳統(tǒng)的CNN將輸入圖像層層映射,最終得到特征提取的結(jié)果.通過對AlexNet網(wǎng)絡(luò)模型進(jìn)行反卷積可視化可得,末端卷積層Layer5提取的特征具有完整的辨別能力,而卷積層Layer2主要映射的是具有顏色和邊緣屬性的特征,卷積層Layer3提取的主要是比較有區(qū)別性的紋理特征.CNN主要采用的是最終提取的特征,卷積層Layer2、卷積層Layer3對圖像也具有一定的表現(xiàn)能力,故本算法將Layer2、Layer3卷積層進(jìn)行多層再學(xué)習(xí)融合,具體學(xué)習(xí)框架如圖9所示.
圖8 多尺度化提取結(jié)構(gòu)
圖9中,虛線框中對應(yīng)的多層特征融合模塊,實驗步驟可以總結(jié)如下:(1)首先采用Fine-tuning的方式訓(xùn)練學(xué)習(xí)實線部分的框架;(2)固定學(xué)習(xí)到的實線部分參數(shù)權(quán)重不變,如圖10,Block塊分別為無卷積層、Block1、Block2、Block3 四種情況進(jìn)行學(xué)習(xí);(3)融合第(1)、(2)步驟學(xué)習(xí)到的特征,進(jìn)行全連接然后送入分類器中.經(jīng)過多次實驗,對應(yīng)的四種情況識別精度分別為 82%,85%,87%,92%.
綜合上述四種算法,算法1和算法2為常見的CNN改進(jìn)算法,本文主要就場景識別任務(wù)進(jìn)行了驗證,且都達(dá)到了一定的提升效果;算法3和算法4在此基礎(chǔ)上對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),其中算法3對單層網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行多尺度化特征學(xué)習(xí),使得最終的表達(dá)能力更為豐富,識別精度可以達(dá)到與算法1等高的91.5%,但此算法在泛化能力上明顯優(yōu)于前者;算法4使用多層特征融合的方式,考慮到不同特征之間的冗余性,采用不同的Block再學(xué)習(xí)方式,識別效果和算法3差距比較小,而且它充分利用了不同層次的特征,使得表現(xiàn)力更加多元化.所以,下文將采用算法3和算法4的網(wǎng)絡(luò)模型作為改進(jìn)的AlexNet網(wǎng)絡(luò)模型與原始AlexNet網(wǎng)絡(luò)模型進(jìn)行對比,并作相應(yīng)的評測.
圖9 多層特征融合學(xué)習(xí)框架
圖10 多層特征融合學(xué)習(xí)中Block塊的選取
改進(jìn)CNN識別能力分析需要選擇合適的數(shù)據(jù)集.深度卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中需要輸入大量的圖片進(jìn)行數(shù)據(jù)處理,因此實驗所用的數(shù)據(jù)集應(yīng)該包含豐富的場景信息.其次,所選的數(shù)據(jù)集應(yīng)該具有一定權(quán)威性和公開性,方便與之前研究方法進(jìn)行比較.
(1)數(shù)據(jù)集的選取
本次實驗采用數(shù)據(jù)集為 Fifteen Scene Categories進(jìn)行前期改進(jìn)的測試,采用數(shù)據(jù)集為eight sports event categories dataset進(jìn)行后期性能的評估,前者數(shù)據(jù)集包括15類場景圖像,每類含有216~400張圖像,本實驗中每類隨機(jī)選取100張圖像作為訓(xùn)練集,其余剩下的作為測試集,如圖8所示部分圖像.后者包含8 種體育場景圖像,分別為劃船,羽毛球,馬球,地滾球,滑雪板,槌球,帆船以及攀巖.根據(jù)人體判斷,圖像被分為簡單和中等,還為每個圖像提供前景對象距離的信息.
圖11 Scene15 數(shù)據(jù)集圖像示例
(2)圖像預(yù)處理
改進(jìn)CNN分類性能分析需要大量的數(shù)據(jù)集進(jìn)行實驗評估,但是現(xiàn)實中數(shù)據(jù)集一般都比較少,無法滿足訓(xùn)練網(wǎng)絡(luò)的要求,所以一般進(jìn)行實驗前都對數(shù)據(jù)進(jìn)行必要的數(shù)據(jù)增強(qiáng)操作,比如旋轉(zhuǎn)、翻轉(zhuǎn)、移動,裁剪等一系列隨機(jī)變換.
在進(jìn)行場景識別實驗之前,需要構(gòu)建合適的網(wǎng)絡(luò)模型學(xué)習(xí)框架,現(xiàn)如今流行的深度學(xué)習(xí)框架主要有Caffe、Torch、MXNet以及 TensorFlow,本文實驗中采用的是Caffe[9],作為清晰而高效的深度學(xué)習(xí)框架,其核心語言采用 C++,支持命令行、Python和MATLAB接口,且可以在GPU上運行,直接集成了卷積神經(jīng)網(wǎng)絡(luò)神經(jīng)層,并且提供了如LeNet,AlexNet以及GoogLeNet等示例模型.
(1)實驗平臺
本文的實驗均在ubuntu16.04系統(tǒng)下進(jìn)行,采用的是Caffe學(xué)習(xí)框架,其中使用編程語言python,且在圖像預(yù)處理過程中采用MATLAB.
(2)參數(shù)設(shè)置
使用caffe進(jìn)行深度學(xué)習(xí)時,為了使得更快收斂并獲得比較高的識別精度,調(diào)參是必不可少的工作,表2為本次實驗時根據(jù)以往實驗的經(jīng)驗進(jìn)行的參數(shù)設(shè)置.
表2 Caffe 訓(xùn)練參數(shù)設(shè)置
(3)采取微調(diào)(Fine-tuning)的方式訓(xùn)練模型
在本次研究中,采用的是一種微調(diào)預(yù)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(AlexNet)模型的方法,這樣可以更好的解決由于缺乏標(biāo)記圖像而導(dǎo)致的過擬合問題.因為前幾層提取的底層特征可以更好的適應(yīng)不同的問題,故在微調(diào)的過程中前幾層應(yīng)該被保持不動,最后的完全連接層是唯一一個可以用于調(diào)整權(quán)重的特征圖層,應(yīng)修改為合適的數(shù)據(jù)集標(biāo)簽.另外,在整個訓(xùn)練過程中使用多批次的圖像進(jìn)行學(xué)習(xí),批量的大小由于CPU內(nèi)存決定,圖9證實了微調(diào)預(yù)先訓(xùn)練好的模型是有效的實驗方法.
圖12 微調(diào) AlexNet模型效果圖
綜合上述四種算法的改進(jìn),可知算法4和算法3表現(xiàn)得較為明顯,提升幅度達(dá)到6.2%和5.7%,最差的算法4提升幅度為4.2%,考慮到模型的泛化能力,因此選擇算法4和算法3作為最終的改進(jìn)算法,為了更好的驗證改進(jìn)算法的有效性,將數(shù)據(jù)集eight sports event categories輸入到訓(xùn)練好的改進(jìn)模型中進(jìn)行測試,并取最好的實驗結(jié)果進(jìn)行比較和作合理的評價.
表3和表4為各種方法分別在兩種實驗數(shù)據(jù)集上的識別精度結(jié)果,文獻(xiàn)[10,11]采用的是傳統(tǒng)的手工特征提取的方法,實驗表明使用CNN進(jìn)行自動提取并進(jìn)行改進(jìn)遠(yuǎn)遠(yuǎn)高于普通手工提取的方法.在Scene15數(shù)據(jù)集上,改進(jìn)的算法最終的結(jié)果比傳統(tǒng)的手工算法高8.1%~13.3%,比改進(jìn)前 AlexNet高 6.2%;同樣的在eight sports數(shù)據(jù)集上,改進(jìn)的算法比傳統(tǒng)算法高7.2%~15.1%,比改進(jìn)前 AlexNet高 2.9%.此外,由實驗結(jié)果可以得知算法4的泛化能力略優(yōu)于算法3.
表3 不同方法對 Scene15 數(shù)據(jù)集的平均識別精度
圖13為改進(jìn)模型在 eight sports數(shù)據(jù)集上的混淆矩陣,分別表示每個運動場景類別的準(zhǔn)確度.圖13表明了 8 類運動場景中,其中“bocce”、“sailing”場景均可以達(dá)到 100% 的識別率,而 “badminton”容易被“polo”和“rowing”混淆,識別率相對表現(xiàn)得有點遜色,其他運動場景類均可以達(dá)到90%以上的識別率.
表4 不同方法對 eight sports 數(shù)據(jù)集的平均識別精度
為了獲得高質(zhì)量的網(wǎng)絡(luò)模型,本文首先從常規(guī)的改進(jìn)方法出發(fā)(即增加模型的深度或者其寬度),并在場景識別任務(wù)上進(jìn)行了測試;接著提出多尺度化特征提取和多層特征融合的改進(jìn)方法,分別測試其識別效果;最終通過實驗結(jié)果的比較選擇最適合場景識別任務(wù)的改進(jìn)模型,并選擇常用的數(shù)據(jù)集進(jìn)行了有效性的驗證.實驗表明,本文的改進(jìn)方法優(yōu)于一般常見的識別算法.
圖13 改進(jìn)模型在 eight sports 數(shù)據(jù)集上的混淆矩陣
基于本文的研究,后續(xù)的工作將從兩方面開展:首先選擇其他比較深的網(wǎng)絡(luò)模型進(jìn)行改進(jìn),比如VGG和ResNet網(wǎng)絡(luò),探索出更加優(yōu)化的網(wǎng)絡(luò)模型;其次保證高精度識別的同時,提高其識別的效率,此外結(jié)合遷移學(xué)習(xí)的思想對模型的泛化能力進(jìn)行優(yōu)化.