日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【深度学习】全面理解VGG16模型

發布時間:2023/12/31 pytorch 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【深度学习】全面理解VGG16模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全面理解VGG16模型

  • VGG16的結構層次
    • 介紹結構圖
    • VGG16模型所需要的內存容量
    • 介紹卷積中的基本概念
    • 1.從input到conv1:
    • 2.從conv1到conv2之間的過渡:
    • 3.conv2到conv3:
    • 4.進入conv3:
    • 5.從conv3到conv4之間的過渡:
    • 6.最后到三層全連接FC層
    • 結論

VGG16的結構層次

vgg16總共有16層,13個卷積層和3個全連接層,第一次經過64個卷積核的兩次卷積后,采用一次pooling,第二次經過兩次128個卷積核卷積后,再采用pooling,再重復兩次三個512個卷積核卷積后,再pooling,最后經過三次全連接。附上,官方的vgg16網絡結構圖:

介紹結構圖

首先需要看懂上圖中的一些式子含義,如conv3-64,conv3-125

  • 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模型所需要的內存容量

    此處引用大佬的一張圖片來說明:

    上圖,非常清晰地展示了每經過一次卷積或pooling后,所需要占用的內存,以及需要傳送的權重值個數。

    介紹卷積中的基本概念

    什么是卷積? 最直觀的解釋,直接上圖(引用網上最火的圖片)

    image為需要進行卷積的圖片,而convolved feature為卷積后得到的特征圖;那么什么是卷積的過濾器也就是filter呢?圖中黃色矩陣即為filter,image為5X5大小的一維圖像,filter為3X3大小的一維矩陣;卷積過程是:filter與image對應位置相乘再相加之和,得到此時中心位置的值,填入第一行第一列,然后在移動一個格子(stride=1),繼續與下一個位置卷積…最后得到是3X3X1的矩陣。
    ——這里需要注明:卷積后的結果矩陣維度=(image矩陣維數-filter矩陣維數+2xpad)/2+1,對應上圖即寬width:3=(5-3+2x0)/1+1,高height:3=(5-3+2x0)/1+1;
    如果還不懂,請接著看下圖(為博主自己手寫的卷積過程圖)

    在這里補充經過padding填充,那么卷積后圖片大小不會發生改變,如5X5的圖像大小,padding=1變成7X7,再用3X3的filter進行卷積,那么卷積后的寬高為(7-3+2x1)/1+1=7。

    什么是maxpool? 最大池化就是取filter對應區域內最大像素值替代該像素點值,其作用是降維。在這里,池化使用的濾波器都是2*2大小,因此池化后得到的圖像大小為原來的1/2。下圖為最大池化過程:

    介紹完基本概念之后,就開始進入到理解VGG16的網絡模型了

    1.從input到conv1:

    由于224不太好計算,那么這里使用input圖片大小為300x300x3舉例:
    圖片:
    首先兩個黃色的是卷積層,是VGG16網絡結構十六層當中的第一層(Conv1_1)和第二層(Conv1_2),合稱為Conv1。

    那么,第一層怎么將300x300x3的矩陣變成一個300x300x64的呢??


    假設RGB圖像為藍色框,橙色方塊為3x3x3的卷積核(即filter),那么卷積后得到的圖像應為298x298x1(此處沒有進行padding,步長為1),但是經過填充一圈的矩陣,所以得到的結果為300x300x1,在這層中有64個卷積核,那么原來的300x300x1就變成了300x300x64。

    2.從conv1到conv2之間的過渡:

    在上面的結構圖可以看到,第一層卷積后要經過pooling,才到第二層,那么:

    這層,pooling使用的filter是2x2x64,且步長為2,那么得到的矩陣維數剛好為原來的一半,第三個維度64不改變,因為那個指的是filter個數。

    3.conv2到conv3:

    我們從上面的過程中知道了,input為300x300x3的圖片,經過第一層之后變成150x150x64,那么第二層里面有128個卷積核,可以推出經過第二層后得到是75x75x128。

    4.進入conv3:


    可知,第三層有256個卷積核,那么得到就是75x75x256

    5.從conv3到conv4之間的過渡:


    這里75是奇數,經過pad之后變成偶數76,那么就得到結果為38x38x256
    其余的過程與上述一樣,最終得到10x10x512。

    6.最后到三層全連接FC層

    在全連接層中的每一個節點都與上一層每個節點連接,把前一層的輸出特征都綜合起來。在VGG16中,第一個全連接層FC1有4096個節點,上一層pool之后得到是10x10x512=51200個節點,同樣第二個全連接層FC2也有4096個節點,最后一個FC3有1000個節點。

    結論

    上述對VGG16進行了初步深入的理解,還有很多知識點沒寫,不足之處請多多原諒。另外本博文也參考了其他文章,圖片來源于網絡。

    參考文章:

    [1]: (https://blog.csdn.net/gbyy42299/article/details/78969261]
    [2]: [http://mini.eastday.com/mobile/180329080222874.html#]
    [3]: https://www.jianshu.com/p/a4b8b0fc7d21

    總結

    以上是生活随笔為你收集整理的【深度学习】全面理解VGG16模型的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。