CNN基础知识(2)
這里不再重復什么是CNN,參考了兩篇博文,總結記錄了在學習CNN過程中的幾點疑惑。
CNN做的就是下面3件事:
1. 讀取圖片:
把由一個個像素點組成的圖片轉換為計算機能讀懂的0~255數字組成矩陣圖。
2. 提取特征:
這是最關鍵的一步:此過程是由幾個卷積核組成的卷積過程。這里需要解釋下,在卷積的過程中,會不止一個過濾器(也叫卷積核),因為每個過濾器的參數不同,提取的特征也不同(而大小和個數由人為指定)。但是有以下幾點需要注意:
(1)提取的過程可以簡單看成如下的動態圖:
綠色矩形框是圖片矩陣;橘色矩形框是過濾器;右邊的粉色矩形框就是得到的特征圖。
這里要注意的是:在“卷積”過程中,這種對應數值相乘、再相加的計算,僅僅是“線性”計算;而在現實世界中,很多很多的數據,都是“非線性”的。所以,在“卷積”處理的后面,我們常常引入一個“非線性”的計算,來使得數據更加接近真實世界。具體到圖片計算,ReLU相當于將“特征圖片”中,像素值小于0的部分,全部變為0,因為圖片的像素值是不存在負值的。如下:
所以在“卷積”的后面,再加上一步“ReLU計算”,但是如果得到的特征圖的數值絕大多數均為正數,所以,經由ReLU處理后的圖片可能并沒有太大的改變。
(2)在人的眼睛中看到的提取特征后的圖像應該是:
圖像變小(從矩形圖的大小可以看出矩形由原來的5x5,變為了3x3),并且圖像變得模糊(但主要特征都被提取出來了)。
(3)同時要注意的是不同的過濾器提取得到的特征圖是不同的:
比如提取得到的圖:輪廓圖、銳化圖、浮雕圖等
(4)過濾器中的值是怎么確定的?
這里就是算法要學習的其中一部分,不需要人為設定。而需要設定的參數有:
① 過濾器的大小(用字母“F”表示),需要注意的是:過濾器的尺寸越大,得到的圖像細節就越少,最終得到的特征圖的尺寸也更小。
②過濾器滑動的步幅數(用字母“S”表示)
③過濾器的個數(用字母“K”表示)。如下:
從上面的例子我們能夠看到,“卷積”輸出的結果,是包含“寬、高、深”3個維度的,而這個“深度”,等于過濾器的個數,也就是得到幾種特征圖。上面我們采用了4種過濾器,所以這里的深度是4。
④設置是否補零(用字母“P”表示),來看看“補零”后的效果:
這樣得到的特征圖大小就和原圖一樣大了。
如何確定“補零”的圈數,才能保證圖片大小一致?這里有一個關系式:
假設原始圖片的大小為W,當我們設置了過濾器的大小(F)、滑動的步幅數(S)、以及補零的圈數(P)。實際上,得到的特征圖片大小為:
(5)如果得到的特征圖片的尺寸很大的話,你還可以進一步添加“池化”的操作。所謂“池化”,就是在保留圖片主要信息的前提下,將圖片的尺寸縮小。
但是池化的操作是在ReLU處理后加入的。
池化的操作與“卷積”類似,需要我們設置2個超參數:過濾器大小(F)和 滑動的步幅數(S) 。
整個的特征提取過程如下:輸入圖片 → 卷積 → ReLU → 池化(可選)
但大部分的時候,我們會進行多次卷積和池化。
關于池化層和卷積層的幾點區別:
① “池化”層使用的過濾器,與“卷積”層使用的過濾器有所不同:
“池化”層的過濾器,其內部沒有數值,因為“池化”層的過濾器,其功能只是將圖片縮小,故其內部沒有參數。
在“池化”層中,僅有1個過濾器;而在“卷積”層中,可以設置多個過濾器:
因為“卷積”層的過濾器,其功能是提取圖片的特征,因而,我們使用不同的過濾器,可以提取不同的圖片細節。而“池化”層的過濾器,僅僅是為了縮小圖片的尺寸,因而,使用一種過濾器,就可以達到這一目標,無需設置多個。
② 經過“卷積”處理后,得到的圖片張數(即“圖片深度”),應該等于該卷積層的過濾器個數;而經過“池化”處理后,得到的圖片張數(即“圖片深度”),仍等于上一層的圖片張數。
當要處理的圖片是彩色圖片時:
和黑白圖像的區別是灰度圖的深度僅為1,而彩色圖的深度為3(彩色圖片包含紅R、綠G、藍B,三種通道)。
所以,彩色圖片在進行第一層“卷積”時,需要同時處理3張圖片(即“紅、綠、藍”)。
前面我們在處理灰白圖片時,因為輸入的圖片其深度為1,所以我們采用的是大小為3*3,但是,深度為1的過濾器。而在處理彩色圖片時,我們的過濾器,其深度增加為3。如下:
所以如果我們設置過濾器的個數為2個,也就是說提取原圖的兩種不同特征。此時的兩個過濾器的形式為:
也就是說每個過濾器的有三種不同的取值矩形框,分別過濾原圖每個通道上的特征:
當過濾器在圖片上滑動時,
過濾器的“紅色”層,負責提取原始圖片“紅色”通道的特征;
過濾器的“綠色”層,負責提取原始圖片“綠色”通道的特征;
過濾器的“藍色”層,負責提取原始圖片“藍色”通道的特征。
之后,將“紅、綠、藍”3層提取出的特征值相加,得到的最終值,就是“卷積”層輸出的圖片像素。
例如:假設我們有一張寬、高、深為4*4*3的彩色圖片。并且,我們在“卷積層”,設置了2個過濾器,如下圖:
提取過程:
注意此時最后得到的特征圖仍然是兩張,既是和過濾器的個數是一樣的。這里的彩色圖只是增加了過濾器和計算的復雜度,而得到的特征圖個數不會改變。
這里要注意的是:
① 經過“卷積”后,輸出的特征圖片,其深度等于使用的過濾器個數。
② 推廣到更一般的情況,無論是灰度圖片,還是彩色圖片,當我們構建的模型中,有多個“卷積”層時,都要遵循“彩色案例”中的步驟,即“在做‘卷積’處理時,如果上一層圖片是多層,那么,本層過濾器在遍歷完多層圖片后,需要將結果值相加“。
3. 圖片分類:
經過上面一系列的處理,此時得到的圖片,已經可以被視為一串串簡單的數字(即像素值)。然后將這一個個的像素值,帶入模型:
就可以得到分類了。
這里要注意的是:
(1)首先需要將特征提取后得到的圖片像素值展開
(2)在模型的最后,我們需要讓計算機努力找到x-y之間的關系。而尋找的辦法,就需要依靠“全連接神經網絡”。
這里需要注意:
① “全連接神經網絡”可以幫助我們學習到參數θ。
② 模型得到的最終結果,表示“圖片為某種類別的概率”。注意:這里的概率之和,永遠為1。
總結:
在構建模型時,需要我們設置的超參數有:
(1)卷積層: 過濾器的大小(F)、滑動的步幅數(S),以及過濾器的個數(K)
(2)池化層:過濾器的大小(F)
在算法運行時,計算機會自己學習的參數有:
(1)卷積層: 過濾器中的具體數值。
(2)全連接層: 神經元的參數 θ
參考:
http://mp.weixin.qq.com/s/fdBpynmAdcnjUW9DF2DQRg
https://mp.weixin.qq.com/s?__biz=MzI1NjczMjEwNw==&mid=2247483921&idx=1&sn=90250512a4b8d369955672c7b720eca0&scene=21#wechat_redirect
總結
以上是生活随笔為你收集整理的CNN基础知识(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow 改进的MNIST手
- 下一篇: 初级管理会计师考试内容介绍,难度怎么样?