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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VGG16网络结构

發(fā)布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VGG16网络结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

VGGNet模型有A-E五種結(jié)構(gòu)網(wǎng)絡(luò),深度分別為11,11,13,16,19,其中VGG16和VGG19較為典型。VGG網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。

VGG16介紹:

在卷積層1(conv3_64),卷積層2(conv3_128),卷積層3(conv3_256),卷積層4(conv3_512)

分別有64個,128個,256個,512個3X3卷積核,在每兩層之間有池化層stride為2的2X2池化矩陣(maxpool)。在卷積層5(conv3_512)后有全連接層,再之后是soft-max預(yù)測層。

(1)conv3-64 :是指第三層卷積后維度變成64,同樣地,conv3-128指的是第三層卷積后? ? ? ? ? ? ? 維度變成128;

(2)input(224X224 RGB image)指的是輸入圖像大小為224X224的彩色圖像,通道為3,? ? ? ? ? ? ?即224X224X3

(3)maxpool 是指最大池化,在VGG16中,pooling采用的是2x2的最大池化方法;

(4)FC-4096 指的是全連接層中有4096個節(jié)點,同樣地,FC-1000為該層全連接層有1000? ? ? ? ? ?個節(jié)點;

(5)padding指的是對矩陣在外邊填充n圈,padding=1即外邊緣填充1圈,5x5大小的矩? ? ? ? ? ? ? ? ? 陣,填充一圈后變成7x7大小; 在進行卷積操作的過程中,處于中間位置的數(shù)值容易? ? ? ? ? ? ? 被進行多次的提取,但是邊界數(shù)值的特征提取次數(shù)相對較少,為了能更好的把邊界數(shù)? ? ? ? ? ? ? 值也利用上,所以給原始數(shù)據(jù)矩陣的四周都補上一層0,這就是padding操作。

(6)vgg16每層卷積的滑動步長stride=1,padding=1。

?從上圖可以看出VGG16由13個卷積層+3個全連接層=16層構(gòu)成,過程為:

(1)輸入224*224*3的圖片

(2)conv1_1+conv1_2+pool1:經(jīng)過64個3*3卷積核的兩次卷積后,采用一次max pooling。? ? ? ? ? ?經(jīng)過第一次卷積后有3*3*3*64=1728個訓(xùn)練參數(shù);第二次卷積后有3*3*64*64=36864? ? ? ? ? ??? 個訓(xùn)練參數(shù),大小變?yōu)?12*112*64?(池化層采用尺寸為2X2,stride=2,max的池化方? ? ? ? ? 式,使得池化后的層尺寸長寬為未池化前的1/2)

(3)conv2_1+conv2_2+pool2:經(jīng)過兩次128個3*3卷積核卷積后,采用一次max pooling,? ? ? ? ? ? ?有3*3*128*128=147456個訓(xùn)練參數(shù),大小變?yōu)?6*56*128

(4)conv3_1+conv3_2+conv3_3+pool3:經(jīng)過三次256個3*3卷積核卷積后,采用一次max? ? ? ? ? ? ? pooling,有3*3*256*256=589824個訓(xùn)練參數(shù),大小變?yōu)?8*28*256

(5)conv4_1+conv4_2+conv4_3+pool4:經(jīng)過三次512個3*3卷積核卷積后,采用一次max

? ? ? ? ? pooling,有3*3*512*512=2359296個訓(xùn)練參數(shù),大小變?yōu)?4*14*512

(6)conv5_1+conv5_2+conv5_3+pool5:經(jīng)過三次512個3*3卷積核卷積后,采用一次max

? ? ? ? ? pooling,有3*3*512*512=2359296個訓(xùn)練參數(shù),大小變?yōu)?*7*512

(7)利用卷積的方式模擬全連接層,效果等同,輸出net為(1,1,4096)。共進行兩次。

(8)利用卷積的方式模擬全連接層,效果等同,輸出net為(1,1,1000)。

最后輸出的就是每個類的預(yù)測。

數(shù)據(jù)與訓(xùn)練

1.輸入處理

如果要使用224x224的圖作為訓(xùn)練的輸入,用S表示圖片最小邊的值,當(dāng)S=224時這個圖就直接使用,直接將多余的部分減掉;對于S遠大于224的,模型將對圖像進行單尺度和多尺度的剪裁,通過剪切這個圖片中包含object的子圖作為訓(xùn)練數(shù)據(jù)。

2.訓(xùn)練方式

采用帶動量的小批量梯度下降法,來優(yōu)化目標(biāo)函數(shù),并且當(dāng)學(xué)習(xí)效果較為滿意時,最初加入的學(xué)習(xí)率權(quán)重衰減系數(shù)會起作用,會減小學(xué)習(xí)率,緩慢達到最優(yōu)解。

3.初始化

若為淺層,則先隨機初始化后訓(xùn)練,深層采用淺層訓(xùn)練后的數(shù)據(jù)作為初始化數(shù)據(jù),中間層則隨機初始化。

特色

?1、卷積層均采用相同的卷積核參數(shù),這樣就能夠使得每一個卷積層(張量)與前一層(張? ? ? ? ?量)保持相同的寬和高;

2、池化層均采用相同的池化核參數(shù),池化層采用尺寸為2X2,stride=2,max的池化方式,? ? ? ? 使得池化后的層尺寸長寬為未池化前的1/2;

3、利用小尺寸卷積核等效大尺寸卷積核,2個3X3卷積核的感受野與1個5X5卷積核相當(dāng),3? ? ? ? ? 個3X3卷積核與1個7X7卷積核相當(dāng),故在特征提取效果相當(dāng)時,多個小卷核與大卷積核? ? ? ? ? 相比,學(xué)習(xí)參數(shù)更少,計算量較小,訓(xùn)練更加快速,還能增加網(wǎng)絡(luò)的深度,提升模型性? ? ? ? ? 能。

卷積后的feature map大小為N:

N=(W-F+2P)/S+1

W:輸入圖片的大小W*W

F:Filter(濾波器)大小F*F ->=卷積核大小

S:步長

P:padding的像素數(shù)

假設(shè)feature map是28×28的,假設(shè)卷記的步長step=1,padding=0:
使用一層5X5卷積核
由(28?5)/1+1=24可得,輸出的feature map為24X24
使用兩層3X3卷積核
第一層,由(28?3)/1+1=26可得,輸出的feature map為26X26
第二層,由(26?3)/1+1=24可得,輸出的feature map為24X24
故最終尺寸結(jié)果相等,用3X3卷積核代替7X7卷積核同理。

VGG網(wǎng)絡(luò)搭建?

VGG網(wǎng)絡(luò)可以分為兩個部分:提取特征網(wǎng)絡(luò)結(jié)構(gòu)和分類網(wǎng)絡(luò)結(jié)構(gòu)

不同網(wǎng)絡(luò)結(jié)構(gòu)配置?

#cfgs字典文件,字典的每個key代表每個模型的配置文件 cfgs = {'vgg11': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], #列表中的數(shù)字代表卷積層卷積核的個數(shù),M代表池化層的結(jié)構(gòu)(maxpool)'vgg13': [64, 64, 'M', 128, 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'],'vgg16': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 'M', 512, 512, 512, 'M', 512, 512, 512, 'M'],'vgg19': [64, 64, 'M', 128, 128, 'M', 256, 256, 256, 256, 'M', 512, 512, 512, 512, 'M', 512, 512, 512, 512, 'M'], }

特征提取網(wǎng)絡(luò)

def make_features(cfg: list): #生成提取特征網(wǎng)絡(luò)(list類型)layers = [] #定義一個空列表用來盛放定義的每一層結(jié)構(gòu)in_channels = 3 #輸入的圖片是RGB圖像for v in cfg: #for循環(huán)來遍歷配置列表if v == "M": #如果配置元素是M,那么說明該層為最大池化層,那么就創(chuàng)建一個最大池化下采樣層layers += [nn.MaxPool2d(kernel_size=2, stride=2)]else: #否則該層為卷積層,則創(chuàng)建卷積操作conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1)layers += [conv2d, nn.ReLU(True)] #將定義的卷積層和ReLU激活函數(shù)拼接并添加到layers列表中in_channels = v #當(dāng)特征矩陣通過該層卷積后其輸出變成vreturn nn.Sequential(*layers) #將列表通過非關(guān)鍵字參數(shù)的形式傳入(*代表通過非關(guān)鍵字形式,sequential要求)

分類網(wǎng)絡(luò)

self.classifier = nn.Sequential( #生成分類網(wǎng)絡(luò)結(jié)構(gòu)nn.Linear(512*7*7, 4096), #展平處理nn.ReLU(True),nn.Dropout(p=0.5),nn.Linear(4096, 4096),nn.ReLU(True),nn.Dropout(p=0.5),nn.Linear(4096, num_classes))

參考:

(1條消息) VGG預(yù)訓(xùn)練模型網(wǎng)絡(luò)結(jié)構(gòu)詳解——以VGG16為例_飛天長虹的博客-CSDN博客_vgg16預(yù)訓(xùn)練模型https://blog.csdn.net/fan_weiqiang/article/details/116545559?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165061995916782248580763%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165061995916782248580763&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-116545559.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&utm_term=vgg16%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E8%AF%A6%E8%A7%A3&spm=1018.2226.3001.4187

(1條消息) VGG-16網(wǎng)絡(luò)結(jié)構(gòu)詳解_20Xx太空漫游的博客-CSDN博客_vgg16網(wǎng)絡(luò)結(jié)構(gòu)https://blog.csdn.net/qq_45998041/article/details/114626473?ops_request_misc=&request_id=&biz_id=102&utm_term=vgg16%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E8%AF%A6%E8%A7%A3&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-114626473.142%5Ev9%5Epc_search_result_control_group,157%5Ev4%5Econtrol&spm=1018.2226.3001.4187

總結(jié)

以上是生活随笔為你收集整理的VGG16网络结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。