caffe study- AlexNet 之結構篇

查志強發表於2015-07-28

【原文:http://blog.sina.com.cn/s/blog_eb3aea990102v47i.html

在2012年的時候,Geoffrey和他學生Alex為了迴應質疑者,在ImageNet的競賽中出手了,重新整理了image classification的記錄,一舉奠定了deep learning 在計算機視覺中的地位。後邊的故事大家都知道了,deep learning一統天下,所向披靡。

在這次競賽中Alex所用的結構被稱為作為AlexNet。本部分首先介AlexNet的基本的architecture,在後邊的學習中將分析其演算法的基本原理以及引數細節。


針對2012年的這組資料集caffe也定義了自己的結構,被稱為caffeNet,文件中說在迭代30多w次的的情況下精度大概提高了0.2個百分點。下面是兩個Net的結構圖,它們的區別在於norm1,pool1,以及norm2,pool2互換了順序。

caffe <wbr>study(5) <wbr>- <wbr>AlexNet <wbr>之結構篇


下面來看一下AlexNet的結構。在Alex的論文中,其基本結構為

caffe <wbr>study(5) <wbr>- <wbr>AlexNet <wbr>之結構篇


1. 基本結構

a. 共有8層,其中前5層convolutional,後邊3層full-connected ,最後的一個full-connected層的output是具有1000個輸出的softmax,最後的優化目標是最大化平均的multinomial logistic regression

b. 在第一層conv1和conv2之後直接跟的是Response-nomalization layer,也就是norm1,norm2層。

c. 在每一個conv層以及full-connected層後緊跟的操作是ReLU操作。

d. Max pooling操作是緊跟在第一個norm1,norm2,以及第5個conv層,也就是conv5

e.Dropout操作是在最後兩個full-connected層。

2. 操作流程

a. 在第一個conv層(conv1)中,AlexNet採用了96個11*11*3的kernel在stride為4的情況下對於224*224*3的影象進行了濾波。直白點就是採用了11*11的卷積模板在三個通道上,間隔為4個畫素的取樣頻率上對於影象進行了卷積操作。4個畫素是receptive field中心在kernel map上的距離,這是個經驗資料。

最初的輸入神經元的個數為224*224*3 = 150528個。對於每一個map來說,間隔為4,因此224/4 = 56,然後減去邊緣的一個為55個,也就是本層的map大小為55*55,然後神經元數目為55*55*96 = 290400(原文中是253440,這個不太理解,有知道的請告知)

得到基本的conv資料後,則進行一次ReLU(relu1)以及Norm(norm1)的變換後,然後進行pooling(pool1),作為輸出傳遞到下一層。

本層map數目為96.

b.第二個conv層(conv2)是第一個conv層(conv1)經過norm(norm1)以及pool(pool1)後,然後再apply 256個5*5的卷積模板卷積後的結果。

pool1後,map的size減半int(55/2)= 27,得到的本層的神經元數目為27*27*256 = 186642個。

本層map數目為256個。

c. 第三個conv層(conv3)的生成過程和第二層類似,不同的是這一層是apply 384個3*3的卷積模板得到的。

pool2後,map的size減半int(27/2) = 13,得到本層神經元數目為13*13*384 = 64896。

本層map數目為384個。

d. 第四個conv層(conv4)是第三個conv層(conv3)進行一次ReLU(relu3)後,然後直接apply 384個3*3的卷積模板得到的。

本層神經元的數目為13*13*384 = 64896。

本層map數目為384個,size還是13*13.

e. 第五個conv層(conv5)與第四個生成類似,只是對上層進行了一個ReLU(relu4)後生成的,不同之處在於此處apply的卷積模板為256個3*3的。

本層神經元的數目為13*13*256 = 43264。

本層map數目為256個,size還是13*13。

f. 第一個full-connected層(fc6)是上一個conv層(conv5)進行pooling(pool5)後的全連線。

pool5後,map的size減半int(13/2) = 6,上層基本連線為6*6*256,然後全連線後到4096個節點,本層最終節點為4096個。

g.第二個full-connected層(fc7)是上一個full-connected(fc6)進行ReLU(relu6)後,然後進行dropout(drop6)後再進行全連線的結果

本層節點數目為4096個。

h.最後一個full-connetcted層(fc8)則是上一個full-connected層(fc7)再次進行ReLU(relu7)以及dropout(drop7)後再進行全連線的結果。最後輸出為融合label的softmax loss。

本層節點數目為1000個,對應著1000類物件。

在下面將對於AlexNet的原理進行以及演算法的執行細節進行分析。

相關文章