卷積神經網絡對圖片分類-上

咱們來看看在圖像處理領域如何使用卷積神經網絡來對圖片進行分類。html

 

1 讓計算機作圖片分類:git

圖片分類就是輸入一張圖片,輸出該圖片對應的類別(狗,貓,船,鳥),或者說輸出該圖片屬於哪一種分類的可能性最大。github

人類看到一張圖片立刻就能分辨出裏面的內容,可是計算機分辨一張圖片就徹底不同了。同一張圖片,數組

人類看到的是這樣:網絡


計算機看到的是這樣:ide


一個充滿像素值的數組。大數據

 

因此給計算機一張圖片讓它對圖片進行分類,就是向計算機輸入一個充滿像素值的數組如上圖所示,數組裏的每個數字範圍都是0-255,表明該點上的像素值。讓它返回這個數組對應的可能分類機率(狗0.01,貓0.04,船0.94,鳥0.02)。ui

 

人類分辨一張船的圖片多是經過圖片裏船的邊緣,線條等等特徵。相似的計算機分辨一張船的圖片也是經過這些底層特徵來進行判斷,好比圖片裏的圖像邊緣和圖像輪廓,而後經過卷積神經網絡創建更抽象的概念。3d

 

2 卷積神經網絡結構htm


你有一張圖片(28X28),把它丟給卷積神經網絡裏面一系列處理層,卷積層(convolutional layer),池層(pooling),全鏈接層(Fully connected layer也就是上圖的sigmoid neurons),最後在輸出層獲得結果(neuron output layer)。正如以前所說,輸出多是一個分類或者可能的分類對應的機率。接着咱們須要理解每一個一層具體作了什麼事情。

 

3 第一層卷積層(convolutional layer)

卷積神經網絡裏第一層老是卷積層。正如前面所說,咱們輸入到卷積層裏的是一個充滿像素值的數組 ,假如是一個28X28X3的數組(3是RGB值)。你能夠把卷積層想象成一道光束,照在一張圖片上面。這道光束叫作過濾器,被光束照耀的地方叫作感覺區。假設這道光束照亮的範圍是一個5X5的方形區域。如今讓這道光束從左到右,從上到下掃過圖片的每個區域。


當全部移動完畢時,你會發現獲得了一個24X24X3的數組。咱們叫這個數組爲特徵圖像。

 

這個過濾器是一個數字類型的數組(裏面的數字就是一些權重值)。過濾器的深度和輸入的深度同樣。因此過濾器的維度就是5X5X3。咱們使用5X5X3過濾器,就能夠獲得輸出數組24X24X3。若是使用更多的過濾器,咱們就能夠獲得更多的特徵圖像。這就是卷積層裏發生的事情。

 

4 具體如何卷積

假設咱們有一張老鼠的圖片:


還有一個7X7X3的過濾器,它有一些權重值, 是一個曲線過濾器:


如今咱們讓過濾器在圖片的左上角:


當過濾器掃或者卷積整個圖片時,把過濾器裏面的權重值和真實圖片裏面對應的像素值相乘,最後把全部結果加和,獲得一個加和值。而後重複這個過程,掃描整個輸入圖片,(下一步把過濾器向右移動一個單元,而後在向右移動一步,如此),每一步均可以獲得一個值。

下面是過濾器在圖片左上角所獲得的值:

Multiplication and Summation = (50 * 30)+(50 * 30)+(50 * 30)+(20 * 30) + (50 * 30) = 6600

 

能夠發現卷積的過程當中,若是圖片裏有一個形狀與該過濾器表示的形狀類似,就會與過濾器產生激勵效果,那麼所獲得的乘積結果加和值將就會是一個很大的數,接着讓咱們把過濾器移到圖片的右上角看看結果是什麼。

Multiplication and Summation = 0

 

能夠看到這個值很小是0,這是由於一點都不像,沒有與過濾器產生任何激勵效果。這裏咱們只使用了一個過濾器,你也能夠增長其餘的過濾器來檢測圖片的邊緣和顏色等等。過濾器越多,特徵圖就越多,從輸入數據裏獲取到的信息就越豐富。

 

(未完待續)

 

參考:

http://neuralnetworksanddeeplearning.com/chap6.html#convolutional_neural_networks_in_practice

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

 

                    關注大數據尖端技術發展,關注奇點大數據
                       

相關文章
相關標籤/搜索