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


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

 

1 讓計算機做圖片分類:

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

人類看到一張圖片馬上就能分辨出里面的內容,但是計算機分辨一張圖片就完全不一樣了。同一張圖片,

人類看到的是這樣:


計算機看到的是這樣:


一個充滿像素值的數組。

 

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

 

人類分辨一張船的圖片可能是通過圖片里船的邊緣,線條等等特征。類似的計算機分辨一張船的圖片也是通過這些底層特征來進行判斷,比如圖片里的圖像邊緣和圖像輪廓,然后通過卷積神經網絡建立更抽象的概念。

 

2 卷積神經網絡結構


你有一張圖片(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/

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM