天天看點

CNN卷積神經網絡入門整合(科普向)

這是一篇關于CNN入門知識的部落格,基本手法是抄、删、改、查,就算是自己的一個筆記吧,以後忘了多看看。   1.邊界檢測示例

假如你有一張如下的圖像,你想讓計算機搞清楚圖像上有什麼物體,你可以做的事情是檢測圖像的垂直邊緣和水準邊緣。

CNN卷積神經網絡入門整合(科普向)

卷積計算可以得到圖像的邊緣,下圖0表示圖像暗色區域,10為圖像比較亮的區域,同樣用一個3*3過濾器,對圖像進行卷積,得到的圖像中間亮,兩邊暗,亮色區域就對應圖像邊緣。

CNN卷積神經網絡入門整合(科普向)

    通過以下的水準過濾器和垂直過濾器,可以實作圖像水準和垂直邊緣檢測:

CNN卷積神經網絡入門整合(科普向)

  在卷積神經網絡中把這些過濾器當成我們要學習的參數,卷積神經網絡訓練的目标就是去了解過濾器的參數。 常用的過濾器:  

CNN卷積神經網絡入門整合(科普向)

2. padding

在上部分中,通過一個3*3的過濾器來對6*6的圖像進行卷積,得到了一幅4*4的圖像,假設輸出圖像大小為n*n與過濾器大小為f*f,輸出圖像大小則為(n−f+1)∗(n−f+1)

這樣做卷積運算的缺點是,卷積圖像的大小會不斷縮小,另外圖像的左上角的元素隻被一個輸出所使用,是以在圖像邊緣的像素在輸出中采用較少,也就意味着你丢掉了很多圖像邊緣的資訊,為了解決這兩個問題,就引入了padding操作,也就是在圖像卷積操作之前,沿着圖像邊緣用0進行圖像填充。

對于3*3的過濾器,我們填充寬度為1時(加了一圈),就可以保證輸出圖像和輸入圖像一樣大。6+1+1-3+1=6:

CNN卷積神經網絡入門整合(科普向)

same padding 在平面外部補0 若且步長是1的話圖檔大小與原來相同。

valid padding不會超出平面外部。是以比原來圖檔要小

池化層是在卷積層之後的,會降維,減少特征數   3.卷積步長

卷積步長是指過濾器在圖像上滑動的距離,上兩部分步長都預設為1,如果卷積步長為2,卷積運算過程為:  

CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)

  4.彩色圖像的卷積

以上講述的卷積都是灰階圖像的,如果想要在RGB圖像上進行卷積,過濾器的大小不在是3*3而是有3*3*3,最後的3對應為通道數(channels),卷積生成圖像中每個像素值為3*3*3過濾器對應位置和圖像對應位置相乘累加,過濾器依次在RGB圖像上滑動,最終生成圖像大小為4*4。

CNN卷積神經網絡入門整合(科普向)

另外一個問題是,如果我們在不僅僅在圖像總檢測一種類型的特征,而是要同時檢測垂直邊緣、水準邊緣、45度邊緣等等,也就是多個過濾器的問題。如果有兩個過濾器,最終生成圖像為4*4*2的立方體,這裡的2來源于我們采用了兩個過濾器。如果有10個過濾器那麼輸出圖像就是4*4*10的立方體。

CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)

  5.單層卷積網絡

通過上一節的講述,圖像通過兩個過濾器得到了兩個4*4的矩陣,在兩個矩陣上分别加入偏差b1和b2,然後對加入偏差的矩陣做非線性的Relu變換,得到一個新的4*4矩陣,這就是單層卷積網絡的完整計算過程。用公式表示:

CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)

  如果有10個過濾器參數個數有多少個呢?

--每個過濾器都有3*3*3+1=28個參數,3*3*3為過濾器大小,1是偏差系數,10個過濾器參數個數就是28*10=280個。不論輸入圖像大小參數個數是不會發生改變的  

CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)

  第L-1層:輸入圖形通道數=輸入圖像的層數=過濾器層數

第L層:輸出圖像通道數=過濾器個數=第L+1層輸入圖像層數...(不管輸入和過濾層多少層,圖像輸入與每個過濾器卷積過後都是一層矩陣,影響輸出層數的隻有過濾器的個數)   6.簡單磁碟區積網絡示例  

CNN卷積神經網絡入門整合(科普向)
CNN卷積神經網絡入門整合(科普向)

卷積神經網絡層的類型:

⦁ 卷積層(convolution,conv)

⦁ 池化層(pooling,pool)

⦁ 全連接配接層(Fully connected,FC)   7.池化層

最大池化(Max pooling)

最大池化思想很簡單,以下圖為例,把4*4的圖像分割成4個不同的區域,然後輸出每個區域的最大值,這就是最大池化所做的事情。其實這裡我們選擇了2*2的過濾器,步長為2。在一幅真正的圖像中提取最大值可能意味着提取了某些特定特征,比如垂直邊緣、一隻眼睛等等

CNN卷積神經網絡入門整合(科普向)

以下是一個過濾器大小為3*3,步長為1的池化過程,具體計算和上面相同,最大池化中輸出圖像的大小計算方式和卷積網絡中計算方法一緻,如果有多個通道需要做池化操作,那麼就分通道計算池化操作。

CNN卷積神經網絡入門整合(科普向)

平均池化和最大池化唯一的不同是,它計算的是區域内的平均值而最大池化計算的是最大值。在日常應用使用最多的還是最大池化。

CNN卷積神經網絡入門整合(科普向)

 池化的超參數:步長、過濾器大小、池化類型最大池化or平均池化   8.卷積神經網絡示例

以下是一個完整的卷積神經網絡,用于手寫字識别,這并不是一個LeNet-5網絡,但是設計令該來自于LeNet-5。

CNN卷積神經網絡入門整合(科普向)

網絡各層參數個數表:

CNN卷積神經網絡入門整合(科普向)

         博文借鑒:https://blog.csdn.net/ice_actor/article/details/78648780

轉載于:https://www.cnblogs.com/yh-blog/p/10052543.html

繼續閱讀