ResNet50網(wǎng)絡(luò)結(jié)構(gòu)圖及結(jié)構(gòu)詳解

極市導(dǎo)讀
?本文詳細介紹了ResNet50的具體結(jié)構(gòu),附有自制超全結(jié)構(gòu)圖。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿
引言
之前我讀了ResNet的論文Deep Residual Learning for Image Recognition,也做了論文筆記(https://zhuanlan.zhihu.com/p/353228657),筆記里記錄了ResNet的理論基礎(chǔ)(核心思想、基本Block結(jié)構(gòu)、Bottleneck結(jié)構(gòu)、ResNet多個版本的大致結(jié)構(gòu)等等),看本文之間可以先看看打打理論基礎(chǔ)。
一個下午的時間,我用PPT純手工做了一張圖片詳細說明ResNet50的具體結(jié)構(gòu),本文將結(jié)合該圖片詳細介紹ResNet50。
這張圖和這篇文章估計全網(wǎng)最詳細了(狗頭)。
廢話不多說,先放圖片。(文末有無水印版圖片或PPT源文件的下載鏈接)

上圖(稱為本圖)可劃分為左、中、右3個部分,三者內(nèi)容分別如下
ResNet50整體結(jié)構(gòu) ResNet50各個Stage具體結(jié)構(gòu) Bottleneck具體結(jié)構(gòu)
接下來為正文內(nèi)容,本文先后介紹了本圖從左到右的3個部分,并對Bottleneck進行了簡要分析。
ResNet50整體結(jié)構(gòu)
首先需要聲明,這張圖的內(nèi)容是ResNet的Backbone部分(即圖中沒有ResNet中的全局平均池化層和全連接層)。
如本圖所示,輸入INPUT經(jīng)過ResNet50的5個階段(Stage 0、Stage 1、……)得到輸出OUTPUT。
下面附上ResNet原文展示的ResNet結(jié)構(gòu),大家可以結(jié)合著看,看不懂也沒關(guān)系,只看本文也可以無痛理解的。

上圖描述了ResNet多個版本的具體結(jié)構(gòu),本文描述的“ResNet50”中的50指有50個層。和上圖一樣,本圖描述的ResNet也分為5個階段。
ResNet各個Stage具體結(jié)構(gòu)
如本圖所示,ResNet分為5個stage(階段),其中Stage 0的結(jié)構(gòu)比較簡單,可以視其為對INPUT的預(yù)處理,后4個Stage都由Bottleneck組成,結(jié)構(gòu)較為相似。Stage 1包含3個Bottleneck,剩下的3個stage分別包括4、6、3個Bottleneck。
現(xiàn)在對Stage 0和Stage 1進行詳細描述,同理就可以理解后3個Stage。
Stage 0
(3,224,224)指輸入INPUT的通道數(shù)(channel)、高(height)和寬(width),即(C,H,W)。現(xiàn)假設(shè)輸入的高度和寬度相等,所以用(C,W,W)表示。該stage中第1層包括3個先后操作
CONVCONV是卷積(Convolution)的縮寫,7×7指卷積核大小,64指卷積核的數(shù)量(即該卷積層輸出的通道數(shù)),/2指卷積核的步長為2。BNBN是Batch Normalization的縮寫,即常說的BN層。RELURELU指ReLU激活函數(shù)。
該stage中第2層為 MAXPOOL,即最大池化層,其kernel大小為3×3、步長為2。(64,56,56)是該stage輸出的通道數(shù)(channel)、高(height)和寬(width),其中64等于該stage第1層卷積層中卷積核的數(shù)量,56等于224/2/2(步長為2會使輸入尺寸減半)。
總體來講,在_Stage 0_中,形狀為(3,224,224)的輸入先后經(jīng)過卷積層、BN層、ReLU激活函數(shù)、MaxPooling層得到了形狀為(64,56,56)的輸出。
Stage 1
在理解了Stage 0以及熟悉圖中各種符號的含義之后,可以很容易地理解Stage 1。理解了Stage 1之后,剩下的3個stage就不用我講啦,你自己就能看懂。
Stage 1的輸入的形狀為(64,56,56),輸出的形狀為(64,56,56)。
下面介紹Bottleneck的具體結(jié)構(gòu)(難點),把Bottleneck搞懂后,你就懂Stage 1了。
Bottleneck具體結(jié)構(gòu)
現(xiàn)在讓我們把目光放在本圖最右側(cè),最右側(cè)介紹了2種Bottleneck的結(jié)構(gòu)。
“BTNK”是BottleNeck的縮寫(本文自創(chuàng),請謹慎使用)。
2種Bottleneck分別對應(yīng)了2種情況:輸入與輸出通道數(shù)相同(BTNK2)、輸入與輸出通道數(shù)不同(BTNK1),這一點可以結(jié)合ResNet原文去看喔。
BTNK2
我們首先來講BTNK2。
BTNK2有2個可變的參數(shù)C和W,即輸入的形狀(C,W,W)中的c和W。
令形狀為(C,W,W)的輸入為,令BTNK2左側(cè)的3個卷積塊(以及相關(guān)BN和RELU)為函數(shù),兩者相加()后再經(jīng)過1個ReLU激活函數(shù),就得到了BTNK2的輸出,該輸出的形狀仍為(C,W,W),即上文所說的BTNK2對應(yīng)輸入與輸出通道數(shù)相同的情況。
BTNK1
BTNK1有4個可變的參數(shù)C、W、C1和S。
與BTNK2相比,BTNK1多了1個右側(cè)的卷積層,令其為函數(shù)。BTNK1對應(yīng)了輸入與輸出通道數(shù)不同的情況,也正是這個添加的卷積層將變?yōu)?span style="cursor: pointer;">,起到匹配輸入與輸出維度差異的作用(和通道數(shù)相同),進而可以進行求和。
簡要分析
可知,ResNet后4個stage中都有BTNK1和BTNK2。
4個stage中 BTNK2參數(shù)規(guī)律相同
4個stage中BTNK2的參數(shù)全都是1個模式和規(guī)律,只是輸入的形狀(C,W,W)不同。Stage 1中 BTNK1參數(shù)的規(guī)律與后3個stage不同
然而,4個stage中BTNK1的參數(shù)的模式并非全都一樣。具體來講,后3個stage中BTNK1的參數(shù)模式一致,Stage 1中BTNK1的模式與后3個stage的不一樣,這表現(xiàn)在以下2個方面:
參數(shù) S:BTNK1左右兩個1×1卷積層是否下采樣
Stage 1中的BTNK1:步長S為1,沒有進行下采樣,輸入尺寸和輸出尺寸相等。
后3個stage的BTNK1:步長S為2,進行了下采樣,輸入尺寸是輸出尺寸的2倍。參數(shù) C和C1:BTNK1左側(cè)第一個1×1卷積層是否減少通道數(shù)
Stage 1中的BTNK1:輸入通道數(shù)C和左側(cè)1×1卷積層通道數(shù)C1相等(C=C1=64),即左側(cè)1×1卷積層沒有減少通道數(shù)。
后3個stage的BTNK1:輸入通道數(shù)C和左側(cè)1×1卷積層通道數(shù)C1不相等(C=2*C1),左側(cè)1×1卷積層有減少通道數(shù)。
為什么Stage 1中
BTNK1參數(shù)的規(guī)律與后3個stage不同?(個人觀點)關(guān)于 BTNK1左右兩個1×1卷積層是否下采樣
因為Stage 0中剛剛對網(wǎng)絡(luò)輸入進行了卷積和最大池化,還沒有進行殘差學(xué)習(xí),此時直接下采樣會損失大量信息;而后3個stage直接進行下采樣時,前面的網(wǎng)絡(luò)已經(jīng)進行過殘差學(xué)習(xí)了,所以可以直接進行下采樣。關(guān)于 BTNK1左側(cè)第一個1×1卷積層是否減少通道數(shù)
根據(jù)ResNet原文可知,Bottleneck左側(cè)兩個1×1卷積層的主要作用分別是減少通道數(shù)和恢復(fù)通道數(shù),這樣就可以使它們中間的3×3卷積層的輸入和輸出的通道數(shù)都較小,因此效率更高。
Stage 1中BTNK1的輸入通道數(shù)C為64,它本來就比較小,因此沒有必要通過左側(cè)第一個1×1卷積層減少通道數(shù)。
鏈接:https://pan.baidu.com/s/1cX0OUNQO4pgX9H8-xtx7oQ
提取碼:9y0v
https://www.bilibili.com/read/cv2051292
https://arxiv.org/abs/1512.03385
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復(fù)“transformer”獲取最新Transformer綜述論文下載~

#?CV技術(shù)社群邀請函?#

備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)
即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

