经典网络GoogLeNet介绍
經(jīng)典網(wǎng)絡(luò)GoogLeNet由Christian Szegedy等于2014年提出,論文名為《Going deeper with convolutions》,論文見(jiàn):https://arxiv.org/pdf/1409.4842v1.pdf
GoogLeNet網(wǎng)絡(luò)用到了Inception-v1模塊,關(guān)于Inception模塊的介紹可以參考:https://blog.csdn.net/fengbingchun/article/details/113482036
假如輸入圖像大小為n*n,過(guò)濾器(filter)為f*f,padding為p,步長(zhǎng)(stride)為s,則輸出大小為:計(jì)算卷積層大小,如果商不是整數(shù),向下取整,即floor函數(shù);計(jì)算池化層大小,如果商不是整數(shù),向上取整,即ceil函數(shù)。參考:https://blog.csdn.net/fengbingchun/article/details/80262495 ??
GoogLeNet網(wǎng)絡(luò):
(1).使用了1*1卷積核,減少feature map數(shù)。
(2).采用了模塊化的結(jié)構(gòu)(Inception-v1模塊),方便增添和修改。
(3).網(wǎng)絡(luò)最后采用全局平均池化(global average pooling)+全連接層+Softmax,而VGG和AlexNet最后使用連續(xù)3個(gè)全連接層+Softmax。
(4).為避免梯度消失,訓(xùn)練網(wǎng)絡(luò)時(shí)額外增加了2個(gè)輔助分類(lèi)器,輔助分類(lèi)器是將中間某一層的輸出用作分類(lèi),并按一個(gè)較小的權(quán)重加到最終分類(lèi)結(jié)果中。
GoogLeNet測(cè)試樣本處理:
(1).對(duì)于每個(gè)測(cè)試樣本,將圖像的短邊縮放到四種尺寸,分別為256、288、320、352;
(2).從每種縮放后的尺寸的測(cè)試樣本中,截取圖像的左、中、右方形區(qū)域(在肖像圖像中截取上、中、下方形區(qū)域);
(3).對(duì)于截取后的每個(gè)方形區(qū)域,從4個(gè)角和中心分別截取一個(gè)224*224區(qū)域,再將此方形區(qū)域縮小到224*224;
(4).將每個(gè)獲取的224*224圖像進(jìn)行水平翻轉(zhuǎn);
這樣每個(gè)原始測(cè)試樣本共得到4*3*6*2=144張圖像。
GoogLeNet訓(xùn)練網(wǎng)絡(luò)時(shí)架構(gòu)(有22+5層),論文截圖如下:
Caffe中GoogLeNet網(wǎng)絡(luò)相關(guān)文件見(jiàn):https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
GoogLeNet推理網(wǎng)絡(luò)架構(gòu):總共包含有9個(gè)Inception-v1模塊,blvc_googlenet中deploy.prototxt,輸入層shape為[10,3,224,224],即batch為10,這里調(diào)整為1
(1).輸入層(Input):圖像大小224*224*3。
(2).卷積層1+ReLU:使用64個(gè)7*7的filter,stride為2,padding為3,輸出為112*112*64,64個(gè)feature maps。
(3).最大池化層1+LRN:filter為3*3,stride為2,padding為0,輸出為56*56*64,64個(gè)feature maps。
(4).卷積層2+ReLU:使用64個(gè)1*1的filter,stride為1,padding為0,輸出為56*56*64,64個(gè)feature maps。
(5).卷積層3+ReLU+LRN:使用192個(gè)3*3的filter,stride為1,padding為1,輸出為56*56*192,192個(gè)feature maps。
(6).最大池化層2:filter為3*3,stride為2,padding為0,輸出為28*28*192,192個(gè)feature maps。
(7).Inception-1:由左往右,最終輸出并拼接為28*28*256,feature maps總數(shù)為64+128+32+32=256。
A.卷積+ReLU:使用64個(gè)1*1的filter,stride為1,padding為0,輸出為28*28*64。
B.卷積+ReLU:使用96個(gè)1*1的filter,stride為1,padding為0,輸出為28*28*96。然后再一次卷積+ReLU:使用128個(gè)3*3的filter,stride為1,padding為1,最終輸出為28*28*128。
C. 卷積+ReLU:使用16個(gè)1*1的filter,stride為1,padding為0,輸出為28*28*16。然后再一次卷積+ReLU:使用32個(gè)5*5的filter,stride為1,padding為2,最終輸出為28*28*32。
D.最大池化:filter為3*3,stride為1,padding為1,輸出為28*28*192。然后再卷積+ReLU:使用32個(gè)1*1的filter,stride為1,padding為0,最終輸出為28*28*32。
(8).Inception-2:由左往右,最終輸出并拼接為28*28*480,feature maps總數(shù)為128+192+96+64=480。
(9).最大池化層3:filter為3*3,stride為2,padding為0,輸出為14*14*480,480個(gè)feature maps。
(10).Inception-3:由左往右,最終輸出并拼接為14*14*512,feature maps總數(shù)為192+208+48+64=512。
(11).Inception-4:由左往右,最終輸出并拼接為14*14*512,feature maps總數(shù)為160+224+64+64=512。
(12).Inception-5:由左往右,最終輸出并拼接為14*14*512,feature maps總數(shù)為128+256+64+64=512。
(13).Inception-6:由左往右,最終輸出并拼接為14*14*528,feature maps總數(shù)為112+288+64+64=528。
(14).Inception-7:由左往右,最終輸出并拼接為14*14*832,feature maps總數(shù)為256+320+128+128=832。
(15).最大池化層4:filter為3*3,stride為2,padding為0,輸出為7*7*832,832個(gè)feature maps。
(16).Inception-8:由左往右,最終輸出并拼接為7*7*832,feature maps總數(shù)為256+320+128+128=832。
(17).Inception-9:由左往右,最終輸出并拼接為14*14*1024,feature maps總數(shù)為384+384+128+128=1024。
(18).平均池化層5+Dropout:filter為7*7,stride為1,padding為0,輸出為1*1*1024,1024個(gè)feature maps。
(19).全連接層:有1000個(gè)神經(jīng)元或1000個(gè)feature maps。
(20).輸出層(Softmax):輸出分類(lèi)結(jié)果,看它究竟是1000個(gè)可能類(lèi)別中的哪一個(gè)。
可視化結(jié)果如下圖所示:
GitHub:https://github.com/fengbingchun/NN_Test
總結(jié)
以上是生活随笔為你收集整理的经典网络GoogLeNet介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度神经网络中的Inception模块介
- 下一篇: 深度神经网络中Inception-Res