羅會蘭,易 慧
(江西理工大學 信息工程學院,江西 贛州 341000)
傳統(tǒng)的圖像分類算法首先對圖像進行特征提取,然后將獲取到的特征描述符來充分描述圖像的完整信息。即將原始圖像包含的一些特定信息充分提取,進而用來表示圖像的結構化特征數(shù)據(jù),然后將圖像的結構化特征數(shù)據(jù)傳輸?shù)娇蛇M行網(wǎng)絡模型訓練的分類器,最終得到圖像分類結果。該方法得到的圖像分類準確度取決于手工提取特征的充分性。
卷積神經(jīng)網(wǎng)絡主要由若干層不同尺寸大小的卷積層和池化層組成,前一卷積層的輸出特征圖作為后一卷積層的輸入。其中卷積層主要由一個大小固定的卷積核與輸入進行卷積運算,正好對應模擬了生物視覺系統(tǒng)中的簡單細胞,而池化層則是一種下采樣操作,用來擴大感受野(receptive fields),并且獲得一定的不變性,例如旋轉不變性,尺度不變性。若干卷積層和池化層的組合,其功能相當于一個特征提取器;隨后的若干層由全連接層構成,其作用相當于一個分類器。一般情況下,特征信息提取越完整,越能有效改善分類精度,但是沒有區(qū)分度的特征信息通常會對分類結果產(chǎn)生不好的影響。在當前圖像數(shù)據(jù)集龐大的情況下,隨著卷積神經(jīng)網(wǎng)絡模型深度的不斷加深,寬度不斷加寬,這種特征算法耗費大量人力物力,并且效率低下。
為了解決圖像特征信息提取不完整的問題,本文將迭代訓練卷積神經(jīng)網(wǎng)絡模型和集成學習分類器兩者相結合,提出一種使用迭代訓練卷積神經(jīng)網(wǎng)絡模型和集成學習相結合的圖像分類算法,旨在提升圖像分類精度,使卷積神經(jīng)網(wǎng)絡模型訓練效率更高。通過構建三流卷積神經(jīng)網(wǎng)絡模型,然后對3個網(wǎng)絡流采用迭代訓練的方式訓練卷積神經(jīng)網(wǎng)絡,這樣便可以提取到完整的能夠描述圖像的特征信息。最后采用集成學習的思想,根據(jù)各網(wǎng)絡流基分類器的表現(xiàn)性能,賦予分類器不同權重,能力越強的分類器權重越大。
卷積神經(jīng)網(wǎng)絡發(fā)展已經(jīng)日趨完善,從近幾年ImageNet競賽圖像分類中表現(xiàn)出色的隊伍中我們不難發(fā)現(xiàn),由于當前龐大的訓練數(shù)據(jù)和多并行GPU加速運算效率帶來的便利,當前該領域已經(jīng)采取了多種不同的方法來提高圖像分類精度。例如,Zhang等[6]提出了一個Maxout Network模型,相當于卷積神經(jīng)網(wǎng)絡的激活函數(shù)層,替換了之前卷積神經(jīng)網(wǎng)絡模型常用的Sigmod,Relu,Tanh等函數(shù),但又不同于這些激活函數(shù),它是一個可學習的激活函數(shù),網(wǎng)絡中的參數(shù)都是可學習變化的,并且可以擬合任意的凸函數(shù)。因為Maxout是一個分段線性函數(shù),然而任意一個凸函數(shù)都可由線性分段函數(shù)以任意精度進行擬合,即可以擬合上述3種常用的激活函數(shù)。但是這種方法的不足之處在于新的激活函數(shù)的提出會導致網(wǎng)絡參數(shù)個數(shù)比原始網(wǎng)絡參數(shù)成倍的增加,在數(shù)據(jù)量較大的情況下,會對網(wǎng)絡模型帶來巨大負荷,造成“維數(shù)災難”[7]。因此這種方法并不適合數(shù)據(jù)集較大的情況。
而針對數(shù)據(jù)量少或包含罕見類的數(shù)據(jù)集的分類問題,將先驗知識添加到?jīng)Q策樹的結構中,同時將這些先驗知識應用于網(wǎng)絡模型的最后一層網(wǎng)絡層,根據(jù)加入的先驗知識得出的圖像分類性能差異模型,將得到的圖像分類性能較強的網(wǎng)絡模型賦予較大的權重,可以改善深度卷積神經(jīng)網(wǎng)絡的性能。Lin等[8]提出的NIN網(wǎng)絡模型,將多個感知卷積層替換了傳統(tǒng)的卷積層,以此來提升網(wǎng)絡泛化能力和增強抽象特征信息的提取能力;同時利用全局平均池化層替換了網(wǎng)絡模型中的全連接層,并且最后加上Softmax層用作分類。Xiao等[9]提出將先驗知識添加到?jīng)Q策樹的結構中,同時將這些先驗知識應用于網(wǎng)絡模型的最后一層網(wǎng)絡層,根據(jù)加入的先驗知識得出的圖像分類性能差異模型,將得到的圖像分類性能較強的網(wǎng)絡模型賦予較大的權重,最后運用類繼承的圖像分類方法來達到相同類別間的圖像特征信息共享。這種方法從一定程度上擴充了訓練的數(shù)據(jù)集,并且能夠解決圖像數(shù)據(jù)樣本量不足的問題以及罕見圖像類別數(shù)據(jù)集的分類問題。Lee等[10]利用了一個先驗經(jīng)驗,如果能夠讓圖像特征具有區(qū)分性,則分類性能就會比較優(yōu)越。文中在卷積神經(jīng)網(wǎng)絡的基礎上對隱藏層進行監(jiān)督學習。即對卷積神經(jīng)網(wǎng)絡的隱藏層采用Squared Hinge Loss,使得卷積神經(jīng)網(wǎng)絡的隱藏層具有區(qū)分性。但是文中并沒有對這種先驗經(jīng)驗方法是否真實有效進行驗證說明。Agostinelli等[11]提出了一個自適應分段線性激活函數(shù),每個神經(jīng)元能夠使用梯度下降算法獨立學習。Yan等[12]通過將深度卷積神經(jīng)網(wǎng)絡模型添加到具有兩級分類層次的卷積神經(jīng)網(wǎng)絡結構中,以此進一步加深卷積神經(jīng)網(wǎng)絡的網(wǎng)絡層深度。通過粗略調(diào)節(jié)網(wǎng)絡參數(shù)和加載預訓練模型來微調(diào)網(wǎng)絡參數(shù)相結合的方法,并以此改善網(wǎng)絡性能。Murthy等[13]通過運用決策樹理論和將不同類型的圖像樣本劃分成多個區(qū)域子塊的方法構建了深度決策網(wǎng)絡,達到不同類別樣本分區(qū)域分別聚類的目的。上述這些方法均是從網(wǎng)絡模型結構,激活函數(shù),以及將傳統(tǒng)機器學習與深度學習結合的幾個方面進行模型的改進創(chuàng)新,并且取得了性能的改進。
卷積神經(jīng)網(wǎng)絡是一個由卷積層與降采樣層交替出現(xiàn)的多層神經(jīng)網(wǎng)絡,每個網(wǎng)絡層由多個二維特征平面組成。CNN首先通過反向傳播算法 (backpropagation algorithm,BP)來預測輸入圖像的分類結果,然后將實際得到的正確圖像標簽和預測的正確圖像標簽進行比較,以此得到分類誤差,最后利用梯度下降算法將網(wǎng)絡權值更新。卷積層是模型的重要網(wǎng)絡層,而特征提取則是計算機視覺任務中至關重要的問題。以CaffeNet網(wǎng)絡模型為例,本文的網(wǎng)絡模型結構如圖1所示,主要由特征提取部分,分類器和融合分類器3部分組成。其中圖1中只畫出了3個子網(wǎng)絡流所對應的分類器。在訓練分類器階段,本文利用集成學習訓練了多個分類器,鑒于文章篇幅大小有限,圖1中只畫出了其中3個。網(wǎng)絡框架中的3個子網(wǎng)絡S1,S2和S3均可以設計成NIN[8],ResNet[14],VGGNet[15]等其它常用的卷積神經(jīng)網(wǎng)絡模型。
圖1 網(wǎng)絡結構
對網(wǎng)絡模型進行迭代訓練,主要是對網(wǎng)絡框架中的3個子網(wǎng)絡S1,S2和S3之間,固定其中兩個子網(wǎng)絡的模型參數(shù),以迭代訓練的方式微調(diào)另外一個子網(wǎng)絡。一方面,這樣做主要是考慮到GPU內(nèi)存限制和減少網(wǎng)絡模型過擬合的問題。另一方面,相對于另外兩個特征提取部分,這樣提取到的圖像特征更詳細豐富且具有區(qū)分性。Hou等[16]提出了一種新穎高效率的卷積神經(jīng)網(wǎng)絡模型訓練方法——迭代交替訓練。這種訓練方法主要以單個卷積神經(jīng)網(wǎng)絡模型為基礎,從網(wǎng)絡框架的形式上構建一個孿生卷積神經(jīng)網(wǎng)絡模型;然后分別對兩個具有相同網(wǎng)絡參數(shù)的網(wǎng)絡模型進行訓練,迭代訓練多次后,最后微調(diào)迭代訓練成功的孿生網(wǎng)絡(即識別率較高的網(wǎng)絡模型),以此來得到兩個具有相同網(wǎng)絡結構模型的互補特征,提升分類準確率。本文受到此文獻迭代交替訓練方法的啟發(fā),文中的3個子網(wǎng)絡也采用這種迭代交替訓練的方法來充分提取不同類別圖像的具有區(qū)分性質的圖像特征,從而提升網(wǎng)絡模型的分類準確率。
在單個卷積神經(jīng)網(wǎng)絡模型中,首先對單個卷積神經(jīng)網(wǎng)絡模型進行訓練,根據(jù)單個卷積神經(jīng)網(wǎng)絡模型的分類性能表征的強弱,持續(xù)對表征分類性能良好的卷積神經(jīng)網(wǎng)絡模型進行迭代交替訓練。在訓練過程中,由單流網(wǎng)絡變成孿生雙流網(wǎng)絡,通過訓練雙流網(wǎng)絡得到的互為補充的圖像特征信息實現(xiàn)圖像充分有效的提取。本文的方法以迭代交替訓練雙流網(wǎng)絡結構為基礎,在首迭代訓練雙流卷積神經(jīng)網(wǎng)絡模型的時候,三流結構的子網(wǎng)絡S1的網(wǎng)絡參數(shù)設定為初始參數(shù)(即對應最原始的卷積神經(jīng)網(wǎng)絡模型參數(shù)),只訓練三流網(wǎng)絡結構的子網(wǎng)絡S2和S3,此時的損失函數(shù)為
Loss1=λs2loss_S2+λs3loss_S3
(1)
然后在第二次迭代的時候,固定S2,訓練子網(wǎng)絡S1和S3,此時的損失函數(shù)為
Loss2=λs1loss_S1+λs3loss_S3
(2)
最后在第三次迭代的時候,固定S3,訓練子網(wǎng)絡S1和S2,此時的損失函數(shù)為
D.若A是應用最廣泛的金屬,反應④用到A,反應②⑤均用到同一種氣態(tài)非金屬單質,實驗室保存D溶液的方法是加入適量鐵粉與稀鹽酸
Loss3=λs1loss_S1+λs2loss_S2
(3)
3個子網(wǎng)絡重復迭代交替多次訓練,直到Loss1,Loss2和Loss3這3個損失函數(shù)的數(shù)值都趨于穩(wěn)定,然后在以圖像分類性能表征較強的3個子網(wǎng)絡流S1,S2和S3網(wǎng)絡為基礎,對3個子網(wǎng)絡流進行微調(diào),此時的損失函數(shù)為
Loss3=λs1loss_S1+λs2loss_S2+λs3loss_S3
(4)
以上4個損失函數(shù)中的λ都參照文獻[16]中的設置取0.3,其中l(wèi)oss_S1, loss_S2和 loss_S3用的都是softmax損失函數(shù)。
在訓練參數(shù)復雜的神經(jīng)網(wǎng)絡時,如果沒有足夠大的訓練數(shù)據(jù)集,模型極有可能陷入過擬合的狀態(tài)。為了解決網(wǎng)絡模型過擬合的問題,同時增加足夠的圖像數(shù)據(jù),更有效提取到圖像中有區(qū)分度的特征,并且減少圖像中特征數(shù)據(jù)的冗余,提高模型的分類精度。文中在圖像預處理階段,采用了數(shù)據(jù)增強的操作方法,一方面擴充了數(shù)據(jù)集,另一方面可以得到不同類別圖像更豐富有效的圖像特征。例如:將原始圖像旋轉一個小角度,添加隨機噪聲,帶彈性的形變和截取原始圖像的一部分等方法。
圖像增強的具體操作為:圖像平移,目的是讓網(wǎng)絡模型學習到圖像的平移不變性;圖像旋轉,旨在讓網(wǎng)絡模型學習圖像的旋轉不變性特征;并且調(diào)節(jié)圖像不同亮度和對比度,可以得到不同光照條件下圖像的不同特征。
集成學習(ensemble learning)在計算機視覺領域應用較為廣泛。近年來該方法是各個領域的研究重點,并且該方法在圖像識別領域對圖像分類精度的提升有著很大的潛力,具有其獨特的優(yōu)勢。
集成學習的主要思想是將不同分類器進行集合,根據(jù)各分類器的表征性能進行合理選擇并且重組,旨在獲得比單個表征性能最好的分類器還要優(yōu)秀的分類精度[17]。在圖像分類問題上,單個分類器的性能表現(xiàn)出來的隨機性較大,并且不穩(wěn)定。但是通過引入集成學習的思想,某一個網(wǎng)絡模型在學習某些圖像特征方面,能夠得到良好的結果。因此,選取訓練得到的表征性能較強的不同網(wǎng)絡模型集成,得到的網(wǎng)絡模型泛化能力更強,在不同的情況下均能得到一個良好的分類結果。
本文在經(jīng)過多次迭代訓練后,得到多個分類器,本文中集成學習分類器的示意圖,如圖2所示。
圖2 分類器融合結構
如圖2 所示,采用文獻[18]中的直接平均法對分類器進行多網(wǎng)絡模型集成訓練,直接平均法通過對不同模型產(chǎn)生的類別置信度求平均值而得到最終的分類結果。假設共有N個模型待集成,對測試樣本D,其測試結果為N個C維(C為數(shù)據(jù)的標記空間大小)向量q1,q2,…,qN。 直接平均法對應的公式如下
(5)
對于加權平均法中網(wǎng)絡層權值大小的設定,根據(jù)不同網(wǎng)絡模型在訓練集上單獨表征的圖像分類性能來確定。因此圖像分類性能準確率較高的網(wǎng)絡模型權值較大,圖像分類性能準確率低的網(wǎng)絡模型的權值較小。
為了測試該網(wǎng)絡模型的有效性和泛化性能,選取了CaffeNet[19],VGGNet[15],NIN[8]和ResNet[14]這4個常用的網(wǎng)絡模型,分別在CIFAR-100[20],Stanford Dogs[21]和UEC FOOD-100[22]這3個廣泛使用的數(shù)據(jù)集上進行實驗測試。
本文進行實驗操作的硬件配置為:CPU為Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz,內(nèi)存512GB,4塊16GB的NVIDIA Tesla P100-PCIE,系統(tǒng)類型為64位Win10操作系統(tǒng)。本文實驗結果采用平均精度均值(mean average precision,mAP)[23]來評價卷積神經(jīng)網(wǎng)絡性能的表現(xiàn)差異。mAP算法不僅考慮了圖像分類的召回率,而且考慮了圖像分類性能好壞的排名分布情況,可以較為全面地反應網(wǎng)絡性能。
CIFAR-100數(shù)據(jù)集由60 000張彩色圖像組成,包括100種不同的圖像類別,其中每個圖像類別分別有6000張圖像,圖像像素尺寸大小為32×32。在本文實驗中,隨機的選取50 000(即每類100張圖像)張圖像用來作為訓練數(shù)據(jù)集,剩下的10 000張圖像作為測試數(shù)據(jù)集使用。
Stanford Dogs數(shù)據(jù)集是一個主要用于圖像細粒度分類的數(shù)據(jù)集,合計20 580張圖像,由120種不同品種的狗組成,每個品種的狗的圖像數(shù)量為148張~252張。本文將該數(shù)據(jù)集劃分為訓練集和測試集兩大類:12 000張圖像用作訓練集,8580張圖像用作測試集[24]。
UEC FOOD-100數(shù)據(jù)集是一個主要用來識別不同種日本食品的數(shù)據(jù)集,合計14 461張圖像。包含了100個不同食物類別,每個類的圖像數(shù)目為101到729不等,本文將該數(shù)據(jù)集劃分為訓練集和測試集兩大類:10 000張圖像用作訓練集,4461張圖像用作測試集[25]。
為了驗證本文提出的基于卷積神經(jīng)網(wǎng)絡迭代訓練和集成學習的圖像分類方法具有良好的分類性能,本文在上述3個數(shù)據(jù)集上分別和前期不同研究者的實驗結果進行了分類性能比較。
3.3.1 CIFAR-100數(shù)據(jù)集上分類性能對比
本文方法在CIFAR-100數(shù)據(jù)集上的實驗結果見表1。表1中的基礎網(wǎng)絡NIN和ResNet-20的分類結果來源文獻[16],其中,DNI和DNR分別是文獻[16]中以NIN-3和ResNet-20為基礎卷積神經(jīng)網(wǎng)絡模型搭建的雙流卷積神經(jīng)網(wǎng)絡模型。從表1的實驗結果可以觀察到,本文的方法在NIN和ResNet-20兩個網(wǎng)絡模型上均取得了良好的性能。其中,在NIN網(wǎng)絡模型上,本文的方法比文獻[16]中的單個網(wǎng)絡模型準確率提高了4.58%,比文獻[16]中的雙流NIN網(wǎng)絡DNI準確率提高了1.73%。在ResNet-20網(wǎng)絡模型上,本文的方法較文獻[16]中單個網(wǎng)絡模型提高了6.15%,比文獻[16]中的雙流網(wǎng)絡DNR準確率提高了2.81%。并且,CIFAR-100數(shù)據(jù)集在本文提出的方法上均取得了較好的結果。實驗結果表明,本文提出的三流卷積神經(jīng)網(wǎng)絡迭代訓練和集成學習的算法能夠充分完整地提取到圖像的充分有效特征信息,使得圖像分類性能有比較顯著的提升。
表1 CIFAR-100數(shù)據(jù)集上本文方法的mAP(%)比較
表2所示的是本文方法與當前一些主流方法[8,10-13,16]在CIFAR-100數(shù)據(jù)集上的分類性能的比較。其中文獻[8]利用多層感知卷積層來替代傳統(tǒng)卷積網(wǎng)絡層,本文的方法較文獻[8]中的方法提高了10.92%。文獻[10]對卷積網(wǎng)絡模型的隱藏層進一步運用監(jiān)督學習的方法來獲得充分有效的圖像特征信息,實驗結果得到的準確率為65.43%,本文的方法較文獻[10]中的方法提高了9.81%。文獻[11]提出了一個自適應分段線性激活函數(shù),并利用該激活函數(shù)來替換卷積神經(jīng)網(wǎng)絡中的Softmax函數(shù),進行圖像特征提取。本文的方法較文獻[11]中的方法提高了9.64%。文獻[12]通過將卷積神經(jīng)網(wǎng)絡層數(shù)較多的深度CNN添加到兩級類別層次結構中來獲取圖像充分有效的特征信息,使用粗類別圖像分類器來得到圖像特征信息簡單的簡單圖像類別,精細類別分類器來獲取圖像特征多而復雜的圖像類別,并且通過運用粗類別圖像分類器與精細類別分類器相結合的方法,得到的圖像分類準確率為67.38%,本文的方法較文獻[12]中的方法提高了7.86%。文獻[13]提出深度決策網(wǎng)絡DDN,得到的圖像分類準確率為68.35%,本文的方法較文獻[13]中的方法提高了6.89%。本文方法在ResNet-20方法的圖像分類準確率分別比文獻[16]中的DNI,DNR提高了5.48%,2.81%。由表2實驗結果可以看出,本文方法相較于當前一些數(shù)據(jù)集在不同卷積神經(jīng)網(wǎng)絡模型上的方法準確率均有一定提升,具有較好的分類性能。
表2 各主流方法與本文方法的mAP(%)比較
3.3.2 Stanford Dogs數(shù)據(jù)集上分類性能對比
因為CIFAR-100(32×32)數(shù)據(jù)集比CaffeNet(227×227)和VGGNet(224×224)兩個網(wǎng)絡模型的輸入尺寸要小很多,如果增大CIFAR-100中的圖像尺寸,會導致圖像模糊不清,在一定程度上給實驗結果帶來影響。所以,本文選擇了另外一個數(shù)據(jù)集Stanford Dogs用來驗證本文方法在CaffeNet和VGGNet網(wǎng)絡模型上性能。表3中展示了Stanford Dogs數(shù)據(jù)集利用本文方法在CaffeNet和VGGNet兩個網(wǎng)絡上的實驗結果。由表3的實驗結果可以看出,在CaffeNet網(wǎng)絡模型上,本文的方法均比文獻[16]中的單個CaffeNet網(wǎng)絡模型和雙流網(wǎng)絡模型DNC的分類精度要高,分別高了2.30%,1.20%。同時,在VGGNet網(wǎng)絡模型上,本文的方法分別比文獻[16]中的單個VGGNet高了5.76%,2.31%。實驗結果表明,本文提出的方法比文獻[16]中的雙流卷積神經(jīng)網(wǎng)絡模型分類精度更高,具有較好的分類性能。
表3 Stanford Dogs數(shù)據(jù)集上的mAP(%)比較
3.3.3 UEC FOOD-100數(shù)據(jù)集上分類性能對比
表4中展示了UEC FOOD-100數(shù)據(jù)集利用本文方法在CaffeNet和VGGNet兩個網(wǎng)絡上的實驗結果。由表4的實驗結果可以看出,在CaffeNet網(wǎng)絡模型上,本文的方法比文獻[16]中雙流網(wǎng)絡模型DNC和雙流網(wǎng)絡模型DNV分類精度有較為明顯的提升。其中,在CaffeNet網(wǎng)絡模型上,本文方法分別比文獻[16]中的單個CaffeNet網(wǎng)絡模型和雙流網(wǎng)絡模型DNC分類精度高了3.12%,1.93%。在VGGNet網(wǎng)絡模型上,本文方法分別比文獻[16]中的單個VGGNet網(wǎng)絡模型和雙流網(wǎng)絡模型DNV分類精度高了3.57%,1.78%。由此說明了本文提出的方法可以有效學習到圖像的充分有效特征,使得圖像分類精度提升較為顯著。
表4 UEC FOOD-100數(shù)據(jù)集上的mAP(%)比較
本文提出了一種基于卷積神經(jīng)網(wǎng)絡的迭代訓練和集成學習的圖像分類方法。該方法主要運用了迭代訓練的方式,來訓練3個子網(wǎng)絡流。這種對卷積神經(jīng)網(wǎng)絡進行迭代訓練的方式主要有兩個優(yōu)點:①訓練時網(wǎng)絡梯度回傳的層數(shù)更少,所以梯度消失的問題更少;②具有更好的并行性,每一個子網(wǎng)絡流可以進行單獨訓練,故可以獲得更好的訓練效率,并減少設備內(nèi)存空間的限制。并且對圖像數(shù)據(jù)預處理采用了數(shù)據(jù)增強的方式,這樣不僅擴充了圖像數(shù)據(jù)集,而且能有效減少網(wǎng)絡模型過擬合。最后采用集成學習對分類器進行集成,得到分類結果。本文在Stanford Dogs,UEC FOOD-100和CIFAR-100數(shù)據(jù)集上的實驗結果驗證了本文提出的方法在圖像分類中具有較好的性能。本文的良好性能主要是通過對3個子網(wǎng)絡進行多次迭代訓練獲得的。在后續(xù)的工作中將探討利用網(wǎng)絡壓縮模型來減少網(wǎng)絡參數(shù),同時在保證網(wǎng)絡性能良好的基礎上,提高模型訓練效率。