龐絲絲,黃呈鋮
(南寧師范大學,南寧530299)
Hinton 在2006 年提出了深度學習[1]的概念,是一種對數據進行表征的學習方法[2]。深度學習取得成功的原因主要來自于兩點,第一個原因:擁有大量的訓練數據,如Image-Net[3]、CIFAR-10、CIFAR-100 等;第二原因:計算機硬件的飛速發展,特別是GPU 的出現和發展。Image-Net 是目前深度學習圖像領域應用得非常多的一個領域,關于圖像分類、定位、檢測等研究工作大多基于此數據集展開。CIFAR-10 和CIFAR-100被標記為8000 萬個微小圖像數據集的子集。他們由Alex Krizhevsky、Vinod Nair 和Geoffrey Hinton 收集。GPU 稱為圖形處理器,是一種并行編程模型,主要用來處理計算性強而邏輯性不強的計算任務,GPU 中可利用的處理單元可以更多的作為執行單元,加快了深度學習算法的執行速度
計算機視覺領域中,圖像處理顧名思義就是我們輸入一張圖像,通過一個訓練好的可識別的網絡可輸出對該輸入圖像內容分類的描述問題。機器學習中提供了很多對數據分類的算法,經典的算法有KNN(最近鄰)[4]、SVM(支持向量機)[5]、Naive Bayes(樸素貝葉斯)、Boosting[6-7]等。目前,許多研究者使用比較熱門的CNN[8-9](卷積神經網絡)、VGGNET[10]、ResNet50[12]等深度學習模型進行圖像分類。
現在,卷積神經網絡在圖像分類[11-12]等計算機視覺領域的應用廣泛。卷積神經網絡依舊是層級網絡,只是層的功能和形式做了變化,可以說是傳統神經網絡的一個改進。傳統的神經網絡采用的是全連接網絡,其中參數數量巨大導致訓練消耗資源多甚至無法訓練出結果。受到生物神經網絡的啟發,隨之產生的卷積神經網絡所擁有的權值共享、局部連接等優點使得參數數量、模型復雜度、訓練難度大大降低,神經網絡的發展開啟了新的研究大門。
雖然卷積網絡的發展使得圖像分類得到了很大跨度的進展,但分類過程中仍然會遇到一些困難和挑戰,例如視角變化、尺度變化、光照條件、背景不同、遮擋、形變等。以花卉分類為例,花卉存在大小、顏色、紋理、形狀、背景不同、等各種各樣的差異,已經有相關研究攻克難題:TakeShi 等人[13]針對花卉區域的提取,通過一種基于數碼相機拍攝的自然景物中盛開花朵的自動識別方法,在600 張花卉圖片中獲得90%的識別率;Maria-Elena 等人[14]通過開發一個可視化詞匯表,顯式地表示將一朵花與另一朵花區分開來的各個方面(顏色、形狀和紋理),克服了圖案之間存在的相似性歧義。其他圖像分類研究中,針對提取特征的表示能力不足,導致識別性能不足的問題,Wu Y 等人[15]提出壓縮和分裂技術對淺密連接卷積網絡進行圖像分類的有效方法,提高細粒度圖像分類的特征提取能力和識別性能。
為提高圖像分類的識別能力,本文主體架構采用ResNet50[12]和遷移學習相結合的方法進行實驗。實驗結果表明使用該方法可以明顯提升圖像識別的準確率,反映出了網絡具有較好的泛化能力,具有較強的魯棒性。
卷積神經網絡(CNN)是一類包含卷積計算且具有深度結構的前饋神經網絡,是深度學習的代表算法之一[16-17]。傳統的卷積神經網絡結構圖如圖1 所示。間。池化操作分為max pooling 和average pooling,即最大池化和平均池化。池化層的關鍵作用就是壓縮圖像,較少過擬合現象的發生,方便優化。假設輸入到池化層的圖像為x(l-1),經過池化后的圖像為x(l),down 表示池化操作,則池化部分可定義為:

全連接層在卷積神經網絡的尾部,它把卷積輸出的二維特征圖轉化成一維向量,即連接所有的特征,最終將輸出值送給分類器,如Softmax 分類器等。網絡中每個節點的輸出表示為y1,y2,…,yn,經過Softmax 后輸出可表示為:


圖1 傳統的卷積神經網絡結構圖
算法主要由卷積層、下采樣層、全連接層組成。
卷積也就是在原始的輸入上進行特征的提取,即在原始輸入上一個一個的小區域進行特征的提取。由于共享權值的原因,所以輸出圖像的每一個像素值都共用了一個卷積核模板。卷積層的正向傳播映射可表示為:

采樣層也稱為池化層,是夾在連續的卷積層中
卷積神經網絡相比一般神經網絡在圖像理解中的優點有如下:第一,卷積神經網絡本身的網絡結構可以較好的適應圖像的結構;第二,特征提取和分類兩個操作是同時進行的,使得特征提取有利于推動特征分類任務;第三,也是卷積神經網絡最突出的優點——權值共享,很大程度上減少了網絡訓練參數,避免了很大的資源消耗,同是使得網絡的結構變得簡潔,增強了網絡的適應能力。
ResNet 是由是何愷明等人提出的,他們發現使用殘差塊能夠訓練更深的神經網絡。所以構建一個ResNet 網絡就是通過將很多這樣的殘差塊堆積在一起,形成一個很的深神經網絡。因此,ResNet 網絡擁有簡單和實用并存的優點。
如果我們使用標準優化算法,例如說梯度下降法訓練一個普通網絡,如果沒有殘差,我們會發現隨著網絡深度的加深,訓練錯誤會出現先減少后增多的現象。雖然理論上表示網絡深度越深越好,但實際中,如果沒有殘差網絡,對于一個普通網絡來說,隨著深度的不斷增加意味著使用優化算法會越來越難訓練一個網絡,也就是說,網絡越深其最終達到的效果會越差,其中的原因之一即是網絡越深,梯度消失的現象就越來越明顯,網絡的訓練效果也不會很好。此時,構建ResNet 網絡顯得格外重要,有了ResNet,即使網絡再深,訓練的最終表現不會因為網絡太深而變太差。ResNet 的結構如圖2 所示。

圖2 ResNet結構
ResNet 在PyTorch 的官方代碼中共有5 種不同深度的結構,深度分別為18、34、50、101、152,其中,ResNet50 和ResNet101 的出鏡率很高。本文選用比較經典的ResNet50 用于圖像分類的網絡,較相比于其他深度的ResNet 收斂性更好。
遷移學習[18]是指在特定的數據集上學習訓練得到的模型以及參數用到新領域的目標數據集中,即每一層網絡中的各個節點的權重從一個已經訓練好的網絡遷移到一個全新的網絡中,并非讓一個全新的網絡完完全全從頭開始再訓練出新的權重,用日常的話來表示,就是將一個領域已知的且成熟的知識直接應用在其他場景中。
因此,遷移學習主要解決一個問題:當我們在深度學習中沒有大量的數據而只有小型的數據集的情況下,使用遷移學習的方法,在大規模數據訓練的網絡模型學習到的模型與參數遷移到小型數據集上,即用小的數據集對網絡進行微調,從而使網絡可以適用于小的數據集。也就是說,在大規模數據集上訓練的模型我們可以稱為“預訓練模型”,這個模型我們可以直接使用相應的結構和權值,然后再應用到我們要解決的問題。2014 年Maxime Oquab 等人[19]使用ImageNet 預訓練CNN 網絡,同時遷移到目標數據集,這些預訓練的網絡對于ImageNet 數據集外的圖片也表現出了很好的泛化性能,證明了遷移學習具有很大的潛力。
在圖像識別領域,如果我們完全從頭訓練一個用來識別貓的神經網絡,則需要海量的計算機資源和上百萬級的帶標注的數據,很多時候這是不現實的。倘若根據需求,使用不同方式的遷徙學習的手段,例如,在現有成熟的網絡架構下,要么只訓練最后的Softmax層,要么對整個網絡進行微調,要么使用相同的網絡結構并采用隨機生成的權重來訓練,得到的效果也都是很好的。
遷移學習的思路幫助我們降低數據需求,因為我們并沒有十分龐大的數據給予我們訓練。訓練一個好的卷積神經網絡模型進行圖像分類不僅需要計算資源還需要很長的時間。特別是模型比較復雜和數據量比較大的時候。普通的電腦動不動就需要訓練幾天的時間。遷移學習在圖像分類問題上具有非常高的效率,也可以很好地防止過度擬合。
根據實驗目的,本文采用的卷積神經網絡模型有ResNet50[12]。ResNet50 殘差網絡通過在輸出個輸入之間不是簡單的堆疊網絡而是引入一個shortcut connection,解決網絡由于很深出現梯度消失的問題,能夠通過增加相當的深度來提高準確率,也容易優化。
遷移學習[18]是當前計算機視覺中常用的一種機器學習方法之一,就是把任務A 開發的模型作為初始點,重新使用在任務B 開發模型的過程中。在常用的卷積神經網絡模型中,加入遷移模型后,網絡可以在短時間訓練和學習中獲得更好的性能,分類準確率得到提升。
ResNet50 兩個模型均是在含有120 多萬自然圖像和1000 多種不同類別的ImageNet 數據集上對模型進行預訓練,然后將模型參數遷移到CIFAR-10 這個公開數據集進行訓練微調。在本文的實驗中,將各模型的部分網絡層的權重參數進行固定,剩余的網絡層將通過訓練和學習來對模型進行微調操作。
實驗所用數據集采用CIFAR-10 公用數據集,CIFAR 是一個用于普通物體識別的數據集。CIFAR 數據集分為兩種:CIFAR-10 和CIFAR-100,由Alex Krizhevsky、Vinod Nair 和Geoffrey Hinton 等人創建,都是帶有標簽的數據集。
CIFAR-10 是一個更接近普適物體的彩色圖像數據集。一共包含10 個類別的60000 個32×32 的RGB彩色圖片組成:飛機、汽車、鳥類、貓、鹿、狗、蛙類、馬、船和卡車,包括50000 張訓練圖像和10000 張測試圖像,數據集分為5 個訓練塊和1 個測試塊,每個塊包含10000 張圖像。訓練集每類包含5000 張圖像,測試集每類包含1000 張圖像。CIFAR-10 的圖片樣例如圖3所示。

圖3 來自CIFAR-10數據庫10個類別部分樣本圖像
本文實驗在CIFAR-10 數據集上進行,采用Intel i7-7700 處理器訓練,1T 固態硬盤,32G 內存,GPU:NVIDIA GTX1080Ti,采用標準SGD 算法,設置動量為0.9,圖像大小resize 為384×384,Batch size 設置為32。
CIFAR-10 數據集共有10 個標簽,包含50000 張尺寸大小為32×32 的彩色圖像作為訓練集和10000 張RGB 三通道圖像作為驗證集,屬于像素較小的圖像數據。網絡共迭代300 次。ResNet 選用層50 網絡層并加入遷移學習方法,如圖4 所示,17 代之前驗證集準確率平穩上升,在17 代以后準確率趨于平穩,最終驗證集準確率達到86%。可以發現,ResNet50 加入遷移學習的方法后網絡可以在短時間訓練和學習中獲得較好的分類準確率。

圖4 ResNet50+transfer
本文基于ResNet50 網絡加入了遷移學習的方法。從實驗結果可以看出,加入遷移學習的方法以后,不僅提高了圖像識別的準確率,同時模型收斂速度快,提升效果明顯,反映出了網絡具有較好的泛化能力,具有較強的魯棒性和泛化能力。但準確率還有一定的提升空間,會在今后的工作中繼續探索。