HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    resnet參數(shù)量(resnet參數(shù)量計算)

    發(fā)布時間:2023-05-23 19:53:55     稿源: 創(chuàng)意嶺    閱讀: 129        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于resnet參數(shù)量的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    問友Ai官網(wǎng):https://ai.de1919.com。tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    本文目錄:tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    resnet參數(shù)量(resnet參數(shù)量計算)tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    resnet數(shù)據(jù)尺寸為單數(shù)tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    ResNet論文:
    https://arxiv.org/abs/1512.03385
    本文主要參考視頻:https://www.bilibili.com/video/BV1T7411T7wa
    https://www.bilibili.com/video/BV14E411H7Uw
    結(jié)構(gòu)概況
    ResNet的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖所示:
    這是ResNet不同層數(shù)的網(wǎng)絡(luò) 結(jié)構(gòu)圖。
    可以看到,結(jié)構(gòu)大差不差。不論是18層、34層、50層、還是101層、152層。
    上來都是一個7x7的卷積層,然后是一個3x3的最大池化下采樣。
    然后就是按照圖中的conv2_x、conv3_x、conv4_x、conv5_x中的殘差結(jié)構(gòu)。
    最后再跟一個平均池化下采樣,和全連接層,sofmax輸出。
    conv1與池化層
    我們先看一下前兩層。
    首先呢,ResNet使用ImagesNet數(shù)據(jù)集,采用的默認輸入尺寸是224x224,RGB圖像,三通道
    按照表中,我們可以看到,圖片輸入之后,首先是一個7x7,64,stride 2
    也就是一個卷積層,卷積核大小為7x7,輸出通道為64(也就是卷積核個數(shù)),stride=2。
    沒說padding,我們需要自己算一下,表里寫了這一層的輸出是112x112
    補充一點知識:
    假設(shè)輸入圖片為 W x W 卷積核大小為F x F,步長stride=S,padding=P(填充的像素數(shù))
    則輸出圖像的大小 W2 =(W - F +2P)/S +1
    可以注意到這個公式中有除法,一般我們做卷積時除不盡的時候都向下取整
    可以參考pytorch官方文檔:https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d
    但是我們做池化的時候,也可以采用向上取整
    參看pytorch官方文檔:https://pytorch.org/docs/stable/generated/torch.nn.MaxPool2d.html#torch.nn.MaxPool2d
    有一個參數(shù)ceil_mode,默認是floor是向下取整,可以設(shè)置為True,向上取整
    ceil_mode – when True, will use ceil instead of floor to compute the output shape
    有的時候池化會選擇向上取整(最大池化和平均池化有時取整方式不同)
    那就是說 112 = (224 - 7 + 2P)/ 2 + 1
    化簡后就是 111 = (217 + 2P)/2 = 108.5+P
    所以P=3 所以Padding是3
    所以我們輸入圖片進來,第一層是in_channel=3,out_channel=64,kernel_size=7,stride=2,padding=3
    沒有偏置bias。經(jīng)過這一層我們會得到大小為112x112的尺寸,通道數(shù)為64
    然后經(jīng)過一個3x3的最大池化下采樣,stride=2
    W o u t = ( W i n − F + 2 P ) / S + 1 W_{out}= (W_{in} - F + 2P)/S + 1 W
    out

    =(W
    in

    −F+2P)/S+1
    池化層也采用向下取整。所以 56=(112 - 3 + 2P)/2 +1 計算出來P=1
    所以第二層池化層是in_channel=64,out_channel=64,kernel_size=3,stride=2,padding=1
    經(jīng)過池化層,我們會得到一個56x56,64通道的輸出,緊接著就是conv2_x中對應(yīng)的一系列殘差結(jié)構(gòu)
    殘差結(jié)構(gòu)
    經(jīng)過前面兩層,我們得到一個56x56,64通道的輸出
    緊接著是conv2_x
    這就是殘差塊,殘差塊大致有兩種類型,一種是兩層卷積的,一種的三層卷積的,就是途中紅框畫的。
    比如如果是ResNet34,那么池化層之后,就是兩個3x3,64的卷積層,這兩個組成一個殘差塊。
    如果是ResNet50,那么池化層之后就是1x1,64的卷積層 + 3x3,64的卷積層 + 1x1,256的卷積層,三個組成一個殘差塊。
    后面寫的x3就代表有三個這樣的殘差塊連接一起
    如下圖所示,關(guān)于殘差結(jié)構(gòu)的原理,不多說了,這里主要講實現(xiàn)。
    有幾個點需要注意:
    以ResNet34為例,按照表格里面寫的,池化之后,我們的大小是56x56x64,那么經(jīng)過conv2_x之后我們的輸出還是56x56x64
    輸入和輸出特征矩陣的大小一樣,那么就說明stride=1,padding=1
    因為公式 W o u t = ( W i n − F + 2 P ) / S + 1 W_{out}= (W_{in} - F + 2P)/S + 1 W
    out

    =(W
    in

    −F+2P)/S+1
    要保證一樣,那就S=1,不然的話,大于1就沒法一樣,然后計算padding可知,也是1
    所以經(jīng)過這兩層之后呢,得到的還是56x56x64的特征圖,可以直接與殘差塊那個分支相加。
    但是呢這里需要注意,我們看conv3_x,是3x3,128通道,也就是說經(jīng)過conv2_x后得到的56x56,64通道
    到conv3_x里面升維了,并且大小也變了,變成28x28了
    這時候要注意一個問題,分支與主分支的結(jié)果就無法相加了,大小不一致,維度不一致啊
    怎么辦呢,所以還有一種虛線連接的殘差塊,如圖
    在分支里面做了一個1x1的卷積層,1x1的卷積層主要是用來升維和降維的。同時通過設(shè)置stride可以改變尺寸
    所以就通過這個卷積層得到了28x28,128通道的特征圖,可以與主分支直接相加了
    并且我們通過計算可以算出來,殘差塊主分支padding=1,右邊的分支padding=2
    對于ResNet50和101,深層次的ResNet也是按照這樣的方法處理的
    但是注意啊,這種虛線結(jié)構(gòu)只是為了解決尺寸不一樣無法相加的情況
    什么情況下需要用這個呢?
    對于ResNet18和ResNet34而言,conv3_x,conv4_x和conv5_x的第一層才需要虛線結(jié)構(gòu)。
    可以看到表里面,ResNet34的conv3_x的第一層會輸出28x28,128通道的,但是輸入是56x56,64通道的,所以需要虛線結(jié)構(gòu),而conv2_x不需要,因為輸入輸出是一樣的。
    而對于ResNet50和ResNet101,ResNet152而言,conv2_x和conv3_x,conv4_x和conv5_x的第一層都需要虛線結(jié)構(gòu)
    因為ResNet50從conv2_x開始,輸入56x56,64通道,輸出是56x56,256通道的,所以conv2_x也需要虛線結(jié)構(gòu),不過這個虛線結(jié)構(gòu)只調(diào)整通道數(shù)即可。
    所以,我們根據(jù)表格可以看到ResNet50中,conv3_x有四個殘差塊,這其中只有第一個會遇到尺寸不一樣的問題,需要用虛線結(jié)構(gòu),別的都不需要。
    同樣的,conv4_x和conv5_x的第一層也需要
    另外再注意一個改進:
    Batch Normalization
    Batch Normalization的目的是使我們的一批(Batch)feature map滿足均值為0,方差為1的分布規(guī)律。
    這里關(guān)于BN層的原理就不寫了,可以看這個視頻和博客
    https://www.bilibili.com/video/BV1T7411T7wa
    https://blog.csdn.net/qq_37541097/article/details/104434557
    我們需要知道的是
    建議將bn層放在卷積層(Conv)和激活層(例如Relu)之間,且卷積層不要使用偏置bias
    所以說,我們實際上的殘差網(wǎng)絡(luò)塊應(yīng)該是如圖,這個樣子的
    總結(jié)
    至此,整個ResNet的網(wǎng)絡(luò)結(jié)構(gòu)就清晰了。其中需要注意的點主要就是:
    計算卷積過程中的參數(shù) W o u t = ( W i n − F + 2 P ) / S + 1 W_{out}= (W_{in} - F + 2P)/S + 1 W
    out

    =(W
    in

    −F+2P)/S+1
    ResNet18層和34層conv3_x、conv4_x、conv5_x中的第一層需要用虛線結(jié)構(gòu)
    ResNet50層、101層和152層中的conv2_x、conv3_x、conv4_x、conv5_x中的第一層都需要用虛線結(jié)構(gòu)
    BN層放在卷積層(Conv)和Relu之間,且卷積層不要使用偏置bias

    resnet參數(shù)量(resnet參數(shù)量計算)tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司

    以上就是關(guān)于resnet參數(shù)量相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。tAz創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計、營銷策劃公司


    推薦閱讀:

    Called翻譯(are called翻譯)

    wordpress修改數(shù)據(jù)庫關(guān)聯(lián)(wordpress更換數(shù)據(jù)庫)

    怎么用coreldraw設(shè)計vi(怎么用coreldraw設(shè)計logo)

    視頻號視頻幾分鐘(視頻號 幾分鐘)

    如何為企業(yè)進行營銷策劃(如何為企業(yè)進行營銷策劃工作)