從驗證碼破解談卷積神經網絡

大家先別急着看,我還沒有寫完,抱歉今天很忙,後面一定會更新。

卷積神經網絡(CNN)是一種在計算機視覺領域應用非常廣的深度學習框架,我前前後後大概花了一個禮拜的時間,基本上搞懂了CNN的原理,在這裏做個記錄,也算是分享一下自己的見解。

一 基礎知識

1 關於圖像

這裏說的驗證碼指的是驗證碼所在的圖片,計算機中的圖片都是由一個一個的像素點構成,可以

把像素點看成是組成圖片的最小單位,右鍵windows中的圖片,選擇屬性->詳細信息,就可以看到圖片的像素信息:

 比如這張圖片是600x402個像素點構成,每一個像素點有三個具體的值,值的範圍是0到255,值越大該點越亮,三個值指的是紅綠藍三個維度,比如某個像素點值是(255,0,0)表示該點是純紅色。通過公式Rx0.299+Gx0.587+BX0.114可以把三個值映射到一個值,這樣構成的圖片是灰度圖,就是黑白電視機呈現的圖片。

三個顏色維度又叫做三通道(channel),爲了簡便,下面所有內容基於灰度圖,即單通道。

2 卷積

卷積是CNN的核心部分。

上圖中黃圈內的像素值如下(矩陣M1)

0 255 0 0
255 0 0 0
255 0 0 0
255 0 0 0

注意到255集中在一個區域,構成的形狀和黃色圈中的形狀相似。再看一個矩陣M2:

0 1 0 0
1 0 0 0
1 0 0 0
1 0 0 0

把M1和M2做一個矩陣乘法,得到的結果是M3:

255 0 0 0
0 255 0 0
0 255 0 0
0 255 0 0

M2和M1非常相似,M2被稱爲卷積核(或者濾波器),如果M1不是圖中黃色圈內的像素,很可能M1乘以M2的結果非常小。也就是說,卷積核只有和自己非常相似的矩陣相乘,才能得到一個有很多大數字的矩陣,這就是所謂的特徵提取。試想一下,把上面的圖片分割成很多4x4的像素矩陣,然後分別與M2相乘,只有那些長得和黃色圈內相似的像素矩陣,得到的結果纔會是很多大的數字,這樣,我們就提取除了所有和黃色圈內圖形相同的區域。注意這裏,我們用的詞還是矩陣相乘,那麼什麼是卷積呢?

上面是矩陣M3,我們把視角移到這個矩陣的左上角的4x4的子矩陣M4。所謂的卷積,就是把M4和M2(卷積核)相乘,把得到的結果矩陣中的所有元素累加,最終得到一個數字a1。第二步,把M4右邊的子矩陣M5和M2相乘,和上面一樣處理得到數字a2,後面的步驟就是把這個子矩陣的邊框不斷右移,然後下移,最終得到的結果矩陣是M6:

a1 a2 a3
a4 a5 a6
a7 a8 a9

我們把整個的過程叫做卷積,即M3和M2卷積得到了矩陣M6,其中的每一次矩陣乘法的區域(M4和M5)又叫做感受野,而卷積的結果M6叫做feature map。

先更新到這裏。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章