智能圖像識別初探系列(三)

CDA數據分析師 出品

一、神經網絡的結構

在上一篇文章中,我們介紹了智能圖像識別的前置知識,現在我們就具體來了解下圖像處理過程。

我們提到卷積神經網絡技術是一種深度前饋神經網絡,在圖片分類、圖片檢索、目標檢測、目標分割、目標跟蹤、視頻分類、姿態估計等圖像視頻相關領域中已有很多較爲成功的應用。

與普通的神經網絡相比,我們知道卷積神經網絡有一些特殊的層,也有一些卷積神經網絡中特有的專業名詞,比如**函數、全連接層、卷積層、池化層,下面我們就來一一介紹一下。

二、**函數

**函數的主要作用就是用來加入非線性因素的,以解決線性模型表達能力不足的缺陷,在整個神經網絡裏起到至關重要的作用。因爲在現實中,往往存在非常複雜的線性不可分的情況,比如圖中是一個二分類問題,我們要將兩類點進行正確的分類會發現這是一個線性不可分的問題,也就是說,在這個平面中,找不到一條直線可以將圖中的點完全分開。

而**函數的作用就是,在所有的隱藏層之間添加一個**函數,比如sigmoid函數等常見的**函數,這樣輸出的就是一個非線性函數了,有了這樣的非線性**函數後,神經網絡的表達能力就會更加強大了。

三、全連接層

全連接層可以簡單地理解爲神經網絡的一個隱藏層,它包含權重向量W和**函數。要通過全連接層,首先要將一張圖片的數值矩陣進行拉伸,並作爲輸入乘上權重向量w,再將點乘後的結果作爲**函數的輸入,最後**函數的輸出結果便是全連接層的最終結果了。

四、卷積層

卷積層與全連接層不同,它保留了輸入圖像的空間特徵,即對圖像的矩陣結構不做任何改變。

在卷積層中,有一個概念叫做卷積核(kernel),常簡稱爲卷積,有時也稱爲濾波器filter。卷積的大小可以在實際需要時自定義其長和寬。在上一章節中,我們通過卷積覈對圖像處理的介紹,知道了卷積的過程,簡單來說:讓卷積核在輸入圖片上依次進行滑動,滑動方向從左到右,從上到下;每滑動一次,卷積核就與其滑窗位置對應的輸入圖片做一次點積計算並得到一個數值。介紹完了卷積層,接下來我們看看什麼是卷積神經網絡。

五、卷積核

卷積神經網絡是由一系列卷積層經過**來得到的。接下來我們看一種更爲通用的卷積形式,在4x4的輸入圖片周邊做1個像素的填充(pad=1),如圖所示,步長爲1,kernel爲2x2的卷積輸出的特徵層降維。

至此,卷積層的基本運算已介紹完畢,那麼卷積神經網絡和傳統神經網絡最大的不同就是kernel,並且卷積層的計算是含有空間信息的。

六、池化層

在卷積神經網絡還有一個重要概念就是池化層,池化是對圖片進行壓縮(降採樣)的一種方法,池化的方法有很多,如max pooling、average pooling等。例如,一個4x4的特徵層經過池化濾波器filter=2x2,步長stride=2的最大池化操作後可以得到一個2x2的特徵層。

池化層對原始特徵層的信息進行壓縮,是卷積神經網絡中很重要的一步。我們在後面會看到絕大多數情況下,卷積層、池化層、**層三者幾乎像一個整體一樣常常共同出現。

這些應用處理的模塊就像「積木」一樣,可以幫助我們構建出卷積神經網絡。然而「積木」的排列方法有很多種,如何設計出一個好的網絡結構纔是關鍵。

接下來,我們將介紹常見的卷積神經網絡結構,從中其實我們可以看到卷積神經網絡的發展歷程,並從現有的常見CNN結構中獲取到構建CNN的一些經驗。

七、常見的CNN結構-AlexNet

首先我們來看下AlexNet,該模型拿到了當年ImageNet競賽的冠軍並因此掀起了一波深度學習的熱潮。ImageNet是一個用於圖像識別的大型數據庫,裏面包含了超過1400萬張帶標記的圖片。2010年以來,ImageNet每年舉辦一次圖片分類和物體檢測的比賽——ILSVRC。

圖片分類比賽中有1000個不同類別的圖片,每個類別大約有200~1000張來自不同源的圖片。自ImageNet競賽舉辦開始,業界便將其視爲標準數據集,後續很多優秀的神經網絡結構都是從該比賽中誕生的。

回到AlexNet,我們先來看下它的網絡結構。AlexNet主要由5個卷積層和3個全連接層組成,最後一個全連接層通過**函數Softmax,最終產生的結果將作爲輸入圖片在1000個類別上的得分。(因爲ILSVRC圖片分類比賽有1000個類別)

上圖便是以輸入一個227x227x3的圖像爲例,即長和寬均爲227個像素的3通道彩色圖,第一層卷積的卷積核大小爲11x11x3,並且由96個卷積核組成。所有卷積核均以stride步長爲4滑過整張227x227x3的圖片,根據卷積輸出層分辨率計算公式(w+2xpad-kernel)/stride+1可以得到第一個卷積層輸出層的分辨率大小爲(227+2x0-11)/4+1=55.因此不難得到第一層卷積最終的輸出大小爲55x55x96.由於卷積層只有卷積核含有神經網絡的參數,因此第一層卷積參數總量爲(11x11x3)x96=35K。以此類推,我們可以根據AlexNet的網絡結構自行推導出對應輸出的大小以及相應的參數個數。

我們可以發現,前幾個卷積層的計算量很大,但參數量很小,只佔Alexnet總參數的很小一部分。這就是卷積層的優點!通過較小的參數量來提取有效的特徵。AlexNet是第一個使用卷積神經網絡在ILSVRC比賽中獲得冠軍的網絡結構,它有如下幾個特點。第一,相比其他的**函數,ReLU的收斂速度更快,在較深的網絡結構中的能力超過sigmoid函數。

第二,AlexNet有超過6000萬的參數,雖然ILSVRC比賽含有大量的訓練數據,但仍然很難完成對如此龐大參數的完全訓練,從而導致嚴重的過擬合問題,AlexNet很巧妙的對原始圖片做隨機裁剪,或者進行隨機地旋轉、平移、縮放等,避免因爲原始數據量的大小使得參數衆多的CNN陷入過擬閤中。以及使用dropout方法,忽略了一些神經元,屏蔽一些權重,使學習出更穩定的特徵。