深度学习——VGG16模型详解
1、網絡結構
VGG16模型很好的適用于分類和定位任務,其名稱來自牛津大學幾何組(Visual Geometry Group)的縮寫。
根據卷積核的大小核卷積層數,VGG共有6種配置,分別為A、A-LRN、B、C、D、E,其中D和E兩種是最為常用的VGG16和VGG19。
介紹結構圖:
- conv3-64 :是指第三層卷積后維度變成64,同樣地,conv3-128指的是第三層卷積后維度變成128;
- input(224x224 RGB image) :指的是輸入圖片大小為224244的彩色圖像,通道為3,即224224*3;
- maxpool :是指最大池化,在vgg16中,pooling采用的是2*2的最大池化方法(如果不懂最大池化,下面有解釋);
- FC-4096 :指的是全連接層中有4096個節點,同樣地,FC-1000為該層全連接層有1000個節點;
- padding:指的是對矩陣在外邊填充n圈,padding=1即填充1圈,5X5大小的矩陣,填充一圈后變成7X7大小;
- 最后補充,vgg16每層卷積的滑動步長stride=1,padding=1,卷積核大小為333;
?
如上圖VGG16的網絡結構為,VGG由5層卷積層、3層全連接層、softmax輸出層構成,層與層之間使用max-pooling(最大化池)分開,所有隱層的激活單元都采用ReLU函數。具體信息如下:
- 卷積-卷積-池化-卷積-卷積-池化-卷積-卷積-卷積-池化-卷積-卷積-卷積-池化-卷積-卷積-卷積-池化-全連接-全連接-全連接
- ?通道數分別為64,128,512,512,512,4096,4096,1000。卷積層通道數翻倍,直到512時不再增加。通道數的增加,使更多的信息被提取出來。全連接的4096是經驗值,當然也可以是別的數,但是不要小于最后的類別。1000表示要分類的類別數。
- 用池化層作為分界,VGG16共有6個塊結構,每個塊結構中的通道數相同。因為卷積層和全連接層都有權重系數,也被稱為權重層,其中卷積層13層,全連接3層,池化層不涉及權重。所以共有13+3=16層。
- 對于VGG16卷積神經網絡而言,其13層卷積層和5層池化層負責進行特征的提取,最后的3層全連接層負責完成分類任務。
2、VGG16的卷積核
- VGG使用多個較小卷積核(3x3)的卷積層代替一個卷積核較大的卷積層,一方面可以減少參數,另一方面相當于進行了更多的非線性映射,可以增加網絡的擬合/表達能力。
- 卷積層全部都是3*3的卷積核,用上圖中conv3-xxx表示,xxx表示通道數。其步長為1,用padding=same填充。
- 池化層的池化核為2*2
3、卷積計算
具體的過程:
從上面的過程可以看出VGG網絡結構還是挺簡潔的,都是由小卷積核、小池化核、ReLU組合而成。其簡化圖如下(以VGG16為例):
?4、權重參數(不考慮偏置)
1)輸入層有0個參數,所需存儲容量為224x224x3=150k
2)對于第一層卷積,由于輸入圖的通道數是3,網絡必須要有通道數為3的的卷積核,這樣的卷積核有64個,因此總共有(3x3x3)x64 = 1728個參數。
所需存儲容量為224x224x64=3.2M
計算量為:輸入圖像224×224×3,輸出224×224×64,卷積核大小3×3。
所以Times=224×224×3x3×3×64=8.7×107
3)池化層有0個參數,所需存儲容量為 圖像尺寸x圖像尺寸x通道數=xxx k
4)全連接層的權重參數數目的計算方法為:前一層節點數×本層的節點數。因此,全連接層的參數分別為:
7x7x512x4096 = 1027,645,444
4096x4096 = 16,781,321
4096x1000 = 4096000
按上述步驟計算的VGG16整個網絡總共所占的存儲容量為24M*4bytes=96MB/image 。
所有參數為138M
VGG16具有如此之大的參數數目,可以預期它具有很高的擬合能力;
但同時缺點也很明顯:
即訓練時間過長,調參難度大。
需要的存儲容量大,不利于部署。
5、VGG模型所需要的內存容量
借鑒一下大佬的圖:
?6、總結
- 通過增加深度能有效地提升性能;
- VGG16是最佳的模型,從頭到尾只有3x3卷積與2x2池化,簡潔優美;
- 卷積可代替全連接,可適應各種尺寸的圖片。
總結
以上是生活随笔為你收集整理的深度学习——VGG16模型详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小规模纳税人季度申报流程指导
- 下一篇: android安卓技能进阶篇