close

大家好,我是紅色石頭!

說起深度學習目標檢測算法,就不得不提 LeNet- 5 網絡。LeNet-5由LeCun等人提出於1998年提出,是一種用於手寫體字符識別的非常高效的卷積神經網絡。出自論文《Gradient-Based Learning Applied to Document Recognition》

論文傳送門:

http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

一、網絡結構

LetNet-5是一個較簡單的卷積神經網絡。上圖顯示了其結構:輸入的二維圖像(單通道),先經過兩次卷積層到池化層,再經過全連接層,最後為輸出層。整體上是:input layer->convulational layer->pooling layer->activation function->convulational layer->pooling layer->activation function->convulational layer->fully connect layer->fully connect layer->output layer.

整個 LeNet-5 網絡總共包括7層(不含輸入層),分別是:C1、S2、C3、S4、C5、F6、OUTPUT。

幾個參數:

層編號特點:

英文字母+數字

英文字母代表以下一種:C→卷積層、S→下採樣層(池化)、F→全連接層

數字代表當前是第幾層,而非第幾卷積層(池化層.ec)

術語解釋:

參數→權重w與偏置b

連接數→連線數

參數計算:每個卷積核對應於一個偏置b,卷積核的大小對應於權重w的個數(特別注意通道數)

二、輸入層(Input Layer)

輸入層(INPUT)是 32x32 像素的圖像,注意通道數為1。

三、C1 層

C1 層是卷積層,使用 6 個 5×5 大小的卷積核,padding=0,stride=1進行卷積,得到 6 個 28×28 大小的特徵圖:32-5+1=28。

參數個數:(5*5+1)*6=156,其中5*5為卷積核的25個參數w,1為偏置項b。

連接數:156*28*28=122304,其中156為單次卷積過程連線數,28*28為輸出特徵層,每一個像素都由前面卷積得到,即總共經歷28*28次卷積。

四、S2 層

S2 層是降採樣層,使用 6 個 2×2 大小的卷積核進行池化,padding=0,stride=2,得到 6 個 14×14 大小的特徵圖:28/2=14。

S2 層其實相當於降採樣層+激活層。先是降採樣,然後激活函數 sigmoid 非線性輸出。先對 C1 層 2x2 的視野求和,然後進入激活函數,即:

參數個數:(1+1)*6=12,其中第一個 1 為池化對應的 2*2 感受野中最大的那個數的權重 w,第二個 1 為偏置 b。

連接數:(2*2+1)*6*14*14= 5880,雖然只選取 2*2 感受野之和,但也存在 2*2 的連接數,1 為偏置項的連接,14*14 為輸出特徵層,每一個像素都由前面卷積得到,即總共經歷 14*14 次卷積。

五、C3 層

C3 層是卷積層,使用 16 個 5×5xn 大小的卷積核,padding=0,stride=1 進行卷積,得到 16 個 10×10 大小的特徵圖:14-5+1=10。

16 個卷積核並不是都與 S2 的 6 個通道層進行卷積操作,如下圖所示,C3 的前六個特徵圖(0,1,2,3,4,5)由 S2 的相鄰三個特徵圖作為輸入,對應的卷積核尺寸為:5x5x3;接下來的 6 個特徵圖(6,7,8,9,10,11)由 S2 的相鄰四個特徵圖作為輸入對應的卷積核尺寸為:5x5x4;接下來的 3 個特徵圖(12,13,14)號特徵圖由 S2 間斷的四個特徵圖作為輸入對應的卷積核尺寸為:5x5x4;最後的 15 號特徵圖由 S2 全部(6 個)特徵圖作為輸入,對應的卷積核尺寸為:5x5x6。

值得注意的是,卷積核是 5×5 且具有 3 個通道,每個通道各不相同,這也是下面計算時 5*5 後面還要乘以3,4,6的原因。這是多通道卷積的計算方法。

參數個數:(5*5*3+1)*6+(5*5*4+1)*6+(5*5*4+1)*3+(5*5*6+1)*1=1516。

連接數:1516*10*10 = 151600。10*10為輸出特徵層,每一個像素都由前面卷積得到,即總共經歷10*10次卷積。

六、S4 層

S4 層與 S2 一樣也是降採樣層,使用 16 個 2×2 大小的卷積核進行池化,padding=0,stride=2,得到 16 個 5×5 大小的特徵圖:10/2=5。

參數個數:(1+1)*16=32。

連接數:(2*2+1)*16*5*5= 2000。

七、C5 層

C5 層是卷積層,使用 120 個 5×5x16 大小的卷積核,padding=0,stride=1進行卷積,得到 120 個 1×1 大小的特徵圖:5-5+1=1。即相當於 120 個神經元的全連接層。

值得注意的是,與C3層不同,這裡120個卷積核都與S4的16個通道層進行卷積操作。

參數個數:(5*5*16+1)*120=48120。

連接數:48120*1*1=48120。

八、F6層

F6 是全連接層,共有 84 個神經元,與 C5 層進行全連接,即每個神經元都與 C5 層的 120 個特徵圖相連。計算輸入向量和權重向量之間的點積,再加上一個偏置,結果通過 sigmoid 函數輸出。

F6 層有 84 個節點,對應於一個 7x12 的比特圖,-1 表示白色,1 表示黑色,這樣每個符號的比特圖的黑白色就對應於一個編碼。該層的訓練參數和連接數是(120 + 1)x84=10164。ASCII 編碼圖如下:

參數個數:(120+1)*84=10164。

連接數:(120+1)*84=10164。

九、OUTPUT層

最後的 Output 層也是全連接層,是 Gaussian Connections,採用了 RBF 函數(即徑向歐式距離函數),計算輸入向量和參數向量之間的歐式距離(目前已經被Softmax 取代)。

Output 層共有 10 個節點,分別代表數字 0 到 9。假設x是上一層的輸入,y 是 RBF的輸出,則 RBF 輸出的計算方式是:

上式中 i 取值從 0 到 9,j 取值從 0 到 7*12-1,w 為參數。RBF 輸出的值越接近於 0,則越接近於 i,即越接近於 i 的 ASCII 編碼圖,表示當前網絡輸入的識別結果是字符 i。

下圖是數字 3 的識別過程:

參數個數:84*10=840。

連接數:84*10=840。

十、可視化網址

http://yann.lecun.com/exdb/lenet/a35.html

http://scs.ryerson.ca/~aharley/vis/conv/flat.html

http://scs.ryerson.ca/~aharley/vis/conv/

總結

LeNet-5 與現在通用的卷積神經網絡在某些細節結構上還是有差異的,例如 LeNet-5 採用的激活函數是 sigmoid,而目前圖像一般用 tanh,relu,leakly relu 較多;LeNet-5 池化層處理與現在也不同;多分類最後的輸出層一般用 softmax,與 LeNet-5 不太相同。

LeNet-5 是一種用於手寫體字符識別的非常高效的卷積神經網絡。CNN 能夠得出原始圖像的有效表徵,這使得 CNN 能夠直接從原始像素中,經過極少的預處理,識別視覺上面的規律。然而,由於當時缺乏大規模訓練數據,計算機的計算能力也跟不上,LeNet-5 對於複雜問題的處理結果並不理想。

最後,紅色石頭給大家準備好了LeCun的這篇 LeNet-5 的 46頁論文《Gradient-Based Learning Applied to Document Recognition》,需要的可以在本公眾號後台回復【lenet5】,獲取!

下一篇我將使用 PyTorch 復現LeNet-5 網絡,並介紹完整的 demo 實例,下期見!

推薦閱讀

(點擊標題可跳轉閱讀)

乾貨 | 公眾號歷史文章精選

我的深度學習入門路線

我的機器學習入門路線圖

重磅!

AI有道年度技術文章電子版PDF來啦!

掃描下方二維碼,添加AI有道小助手微信,可申請入群,並獲得2020完整技術文章合集PDF(一定要備註:入群+ 地點 + 學校/公司。例如:入群+上海+復旦。

長按掃碼,申請入群

(添加人數較多,請耐心等待)

感謝你的分享,點讚,在看三連

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()