<style></style> <style></style> <style></style> <style></style>
1 引言¶
卷積神經網路(Convolutional Neural Networks),通常我們將之簡稱為ConvNets或者CNN,它是一種在影像識別和分類領域十分流行且行之有效的神經網路,目前,CNN網路已經作為一種非常重要且實用的工具成功應用于人臉識別、機器人和自動駕駛中的目標識別、信號燈識別等應用中,因此,學習卷積神經網路是以前十分有必要的事情,
然而,理解CNNs網路并且學會怎么使用CNN網路卻不是一件容易的事情,本篇博客正是作為入門篇,對CNN網路如何針對圖片進行作業展開介紹,不過,如果你剛開始接觸神經網路演算法,那我建議你還是先理解一下多層感知機是如何作業的,你可以參考這篇博客,
本文寫作的初衷是看了一篇關于CNN網路的外文博客,感覺寫的真的很不錯,但畢竟是外文,感覺思維方式,行文習慣看著別扭,于是就打算翻譯出來,在翻譯程序中添加了很多自己的理解,如有誤解,還請指出,
2 關于影像¶
從本質上說,每一張圖片都可以表示為像素值構成的矩陣:
通道是一個常規術語,用于指代影像的特定組成部分,一張標準的影像一般具有三個通道:紅色,綠色和藍色,所以,對于影像,我們可以將它們想象成三個彼此堆疊的2d矩陣(每種顏色一個),每個像素值的范圍為0到255,當然,如果是灰度影像,那么就只會有一個通道,也就只有一個2d矩陣,矩陣中每一個值元素值都在0到255之間,0代表黑色,255代表白色,
3 LeNet網路——最早的CNN網路¶
3.1 從LeNet開始¶
LeNet是最早提出的一類CNN網路,它的提出極大推進了深度學習的發展,1988年,經過多次迭代更新之后,LeNet的開拓者將他研究的這種神經網路結構命名為LeNet5,在那段時間,LeNet架構主要是被用來做字符識別,例如識別郵編和數字,
接下來,我們結合圖3來對LeNet網路結構如何進行影像識別進行分析,近幾年,有很多在LeNet結構基礎上優化改進而來的網路結構被相繼提出,這些網路的主要概念源自于LeNet,所以,理解LeNet網路是很有必要的,這將會使我們理解其他網路更加輕松,
圖1所展示的卷積神經網路結構與最初的LeNet網路結構非常相似,它可以將輸入的影像劃分為四類:狗、貓、船、鳥(最初的LeNet網路主要是用來完成字符識別),從圖2可以明顯看出,當輸入一張包含船的影像時,網路可以正確得進行分類(判斷為船的概率高達94%,其他3類概率就要低得多,概率總和為1),
圖1所示的CNN網路主要完成了4種操作:
(1)卷積
(2)非線性變化(relu))
(3)池化(或者說下采樣)
(4)分類
這四種操作是每一個CNN網路的基礎結構,所以,理解這四種操作對于整體理解CNN網路非常有必要,
3.2 卷積層¶
卷積層通過輸入的方塊資料對影像進行“掃描”,能夠在保留像素空間關系的同時對輸入影像展開學習,從而達到提取特征的目的,在上文中我們討論過,每一張影像都可以看做是像素值組成的矩陣,我們通常用$w \times h \times c$的方式來描述輸入矩陣size,其中$w$和$h$表示影像的長和寬,$c$表示通道數,有時候為了描述方便,當通道數為1時可以省略描述通道數,現在,假設有一張$5 \times 5 \times 1$的輸入影像,為方便介紹,我們姑且假設該影像像素值只取0或1,如圖3所示,
進行卷積運算時,需要初始化一個$n \times n \times c$的矩陣,這個矩陣稱為濾波器或者卷積核(本文以濾波器稱呼),如圖4所示為一個$3 \times 3 \times 1$的濾波器,在大多數情況下,濾波器的長和寬是相等的,這么設定的原因是為了描述方面,實作起來也更加簡單,另外,濾波器的通道數$c$必須與輸入影像的通道數對應,卷積程序中,輸入層有多少個通道,濾波器就要有多少個通道,但是濾波器的數量是任意的,濾波器的數量決定了卷積后特征圖的通道數,濾波器中的各引數值會在網路訓練程序中通過反向傳播演算法自行優化,
圖2中$5 \times 5 \times 1$的輸入影像與圖3所示的$3 \times 3 \times 1$濾波器進行卷積運算程序如下圖5影片所示,我們在綠色影像中滑動濾波器,每次滑動1像素的距離,這個距離我們稱之為步長(stride),每一次滑動后,都計算濾波器每個元素與對應所覆寫位置像素值的乘積,然后將獲得的9個乘積相加求和就是這一次滑動覆寫區域卷積運算的輸出,當濾波器滑動到最右側后,往下滑動一個步長,并回到最左側繼續從左往右滑動依次進行卷積運算,直到綠色影像中所有像素都被覆寫參與了卷積運算,最終,每一步的輸出共同組成了右側粉紅色的矩陣,這個粉色矩陣就是完成的卷積操作后提取到的特征,通常,我們稱之為特征圖,

如果影像存在多個通道,例如最常見的的3通道影像(RGB通道),濾波器也必須有3個通道與影像的3個通道對應地進行卷積運算,每個通道都將產生一個矩陣,將三個矩陣相加輸出才是最終的特征圖,
在整個卷積運算程序中,有必要注意一下卷積操作的兩大特征:區域連接和權值共享,
區域連接是指每一次卷積操作都只會對圖片的一小部磁區域區域進行卷積運算,這部磁區域的大小稱為感受野,感受野與濾波器大小是相對應的,例如用一個$3 \times 3 \times 1$的濾波器對一張$100 \times 100 \times 1$的圖片進行卷積,那么感受野就是$3 \times 3$,每次只會對圖片中的一個$3 \times 3$的區域進行卷積運算,
權值共享是指整張圖片的所有區域都使用同一個濾波器進行卷積運算去生成一個新的特征,例如用一個$3 \times 3 \times 1$的濾波器對一張$100 \times 100 \times 1$的圖片進行卷積,在圖片內任意一個3*3的區域內都使用既定的9個卷積權值,不會去改變,這就是權值共享,如果要生成不同的特征,則使用不同的濾波器即可,
區域連接和權值共享操作生成新的特征時很好的利用了圖片的區域相關性,同時也大大減少了引數量,降低過擬合風險,同時也提高了訓練速度——這也是為什么在影像識別、目標識別等應用中卷積神經網路會這么盛行的原因,
另外,需要注意的是,對同一張影像,經過使用不同的濾波器進行卷積運算后輸出的特征圖也是有差別的,例如如圖6所示的一張影像經過不同的濾波器進行卷積運算后的輸出大相徑庭:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/31222.html
標籤:其他
上一篇:人工神經網路實踐
下一篇:如何用Hexo搭建個人博客
