人工智慧-卷積神經網路基礎

在計算機視覺一個主要問題是輸入數據可能變得很大。假設圖像的尺寸為68 X 68 X3。輸入要素尺寸將變為12,288。如果我們有更大的圖像(例如,尺寸為720 X 720 X 3),則尺寸會更大。現在,如果我們將如此大的輸入傳遞給神經網絡,則參數的數量將激增至HUGE數量(取決於隱藏層和隱藏單位的數量)。這將導致更多的計算和內存需求,這是我們大多數人無法應付的。

以下介紹CNN的專有名詞與基本動作,這些的目的在於,將圖片變成計算機可以接受的方式進行輸入,進而做運算與識別圖片。

邊緣檢測示例

我們將重點介紹如何從圖像中檢測邊緣。假設我們得到下圖。

                                                                                                                                                         
                                                                                                                                                                        圖1 一般image

圖像中有許多垂直和水平邊緣。首先要做的是檢測這些邊緣:
                                                                                                                   
                                                                                                                                                                 圖2 垂直和水平邊緣

但是我們如何檢測這些邊緣?為了說明這一點,讓我們拍攝一張6 X 6灰度圖像(即僅一個通道):
                                                                                                                                                     
                                                                                                                                                                   圖3 6x6 灰度矩陣

接下來,我們將這個6 X 6矩陣與3 X 3濾鏡進行卷積:
                                                                                                                        
                                                                                                                                                               圖4 image 與 filter進行卷積

卷積後,我們將得到一個4 X 4的圖像。 4 X 4矩陣的第一個元素將計算為:
                                                                                                                                                           
                                                                                                                                                                     圖5卷積後的結果

       因此,我們從6 X 6圖像中獲取第一個3 X 3矩陣,並將其與濾波器相乘。現在,4 X 4輸出的第一個元素將是這些值的按元素乘積的總和,即3 * 1 + 0 + 1 * -1 + 1 * 1 + 5 * 0 + 8 * -1 + 2 * 1 + 7 * 0 + 2 * -1 = -5。要計算4 X 4輸出的第二個元素,我們將過濾器向右移動一級,然後再次獲得按元素乘積的總和:
                                                                                                                                                         


                                                                                                                                                                         圖6 卷積的結果

同樣,我們將對整個圖像進行卷積,並得到4 X 4的輸出:
                                                                                                                                                               
                                                                                                                                                                      圖7 卷積後最終結果

因此,將6 X 6輸入與3 X 3濾波器進行卷積得到的輸出為4 X4。再考慮一個示例:
                                                                                   
                                                                                                                                                                                                    圖8 例子

更多邊緣檢測

我們選擇的過濾器類型有助於檢測垂直或水平邊緣。 我們可以使用以下過濾器來檢測不同的邊緣:
                                                                                                                                                 
                                                                                                                                                                                 圖 9 垂直或水平過濾器

一些常用的過濾器是:
                                                                                                                                                           
                                                                                                                                                                                      圖10 常用過濾器

Sobel濾鏡將更多的權重放在中央像素上。

Padding(填充):

將6 X 6維的輸入與3 X 3濾波器進行卷積會得到4 X 4輸出。可以概括一下,說如果輸入為n X n且過濾器大小為f X f,則輸出大小將為(n-f + 1)X(n-f + 1):

 

輸入:n X n

過濾器尺寸:f X f

輸出:(n-f + 1)X(n-f + 1)

這裡主要有兩個缺點:

  • 每次我們進行卷積運算時,圖像的大小都會縮小
  • 與中心像素相比,卷積期間在圖像角落出現的像素僅使用了幾次。因此,我們不會過分關注角落,因為這可能導致信息丟失

為了克服這些問題,我們可以在圖像上附加邊框,即在邊緣周圍添加一個像素。這意味著輸入將是8 X 8矩陣(而不是6 X 6矩陣)。在其上應用3 X 3的捲積將得到6 X 6矩陣,該矩陣是圖像的原始形狀。這是填充最重要的地方:

輸入:n X n

填充:p

過濾器尺寸:f X f

輸出:(n + 2p-f + 1)X(n + 2p-f + 1)

 

有兩種常見的填充選項:

Valid:

這意味著沒有填充。如果我們使用有效的填充,則輸出為(n-f + 1)X(n-f + 1)

Same:

在這裡,我們應用填充,以便輸出大小與輸入大小相同,即

n + 2p-f + 1 = n因此,p =(f-1)/ 2

現在我們知道瞭如何使用填充卷積。這樣我們就不會丟失很多信息,圖像也不會縮小。接下來,我們將研究如何實現跨步卷積。

 

Strided Convolutions:

假設我們選擇strided為2。因此,在對圖像進行卷積時,我們將採取兩個步驟-分別在水平和垂直方向上。 步幅s的尺寸為:

  • 輸入:n X n
  • 填充:p
  • 步幅:s
  • 過濾器尺寸:f X f
  • 輸出:[(n + 2p-f)/ s + 1] X [(n + 2p-f)/ s + 1]

步幅有助於減小圖像的大小,這是一項特別有用的功能。

以上是CNN 主要會用的步驟,與這些步驟所要進行的行為,希望對大家有些幫助。


 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論