深度残差网络ResNet解析
ResNet在2015年被提出,在ImageNet比賽classification任務(wù)上獲得第一名,因?yàn)樗昂?jiǎn)單與實(shí)用”并存,之后很多方法都建立在ResNet50或者ResNet101的基礎(chǔ)上完成的,檢測(cè),分割,識(shí)別等領(lǐng)域都紛紛使用ResNet,Alpha zero也使用了ResNet,所以可見ResNet確實(shí)很好用。?
下面我們從實(shí)用的角度去看看ResNet。
1.ResNet意義
隨著網(wǎng)絡(luò)的加深,出現(xiàn)了訓(xùn)練集準(zhǔn)確率下降的現(xiàn)象,我們可以確定這不是由于Overfit過(guò)擬合造成的(過(guò)擬合的情況訓(xùn)練集應(yīng)該準(zhǔn)確率很高);所以作者針對(duì)這個(gè)問(wèn)題提出了一種全新的網(wǎng)絡(luò),叫深度殘差網(wǎng)絡(luò),它允許網(wǎng)絡(luò)盡可能的加深,其中引入了全新的結(jié)構(gòu)如圖1;?
這里問(wèn)大家一個(gè)問(wèn)題?
殘差指的是什么??
其中ResNet提出了兩種mapping:一種是identity mapping,指的就是圖1中”彎彎的曲線”,另一種residual mapping,指的就是除了”彎彎的曲線“那部分,所以最后的輸出是 y=F(x)+xy=F(x)+x?
identity mapping顧名思義,就是指本身,也就是公式中的xx,而residual mapping指的是“差”,也就是y?xy?x,所以殘差指的就是F(x)F(x)部分。?
為什么ResNet可以解決“隨著網(wǎng)絡(luò)加深,準(zhǔn)確率不下降”的問(wèn)題??
除了實(shí)驗(yàn)證明外:?
表1,Resnet在ImageNet上的結(jié)果?
理論上,對(duì)于“隨著網(wǎng)絡(luò)加深,準(zhǔn)確率下降”的問(wèn)題,Resnet提供了兩種選擇方式,也就是identity mapping和residual mapping,如果網(wǎng)絡(luò)已經(jīng)到達(dá)最優(yōu),繼續(xù)加深網(wǎng)絡(luò),residual mapping將被push為0,只剩下identity mapping,這樣理論上網(wǎng)絡(luò)一直處于最優(yōu)狀態(tài)了,網(wǎng)絡(luò)的性能也就不會(huì)隨著深度增加而降低了。
2.ResNet結(jié)構(gòu)
它使用了一種連接方式叫做“shortcut connection”,顧名思義,shortcut就是“抄近道”的意思,看下圖我們就能大致理解:?
圖1 Shortcut Connection?
這是文章里面的圖,我們可以看到一個(gè)“彎彎的弧線“這個(gè)就是所謂的”shortcut connection“,也是文中提到identity mapping,這張圖也詮釋了ResNet的真諦,當(dāng)然大家可以放心,真正在使用的ResNet模塊并不是這么單一,文章中就提出了兩種方式:?
圖2 兩種ResNet設(shè)計(jì) 【ResNet34(左圖)和ResNet50/101/152(右圖)】
這兩種結(jié)構(gòu)分別針對(duì)ResNet34(左圖)和ResNet50/101/152(右圖),一般稱整個(gè)結(jié)構(gòu)為一個(gè)”building block“。其中右圖又稱為”bottleneck design”,目的一目了然,就是為了降低參數(shù)的數(shù)目,第一個(gè)1x1的卷積把256維channel降到64維,然后在最后通過(guò)1x1卷積恢復(fù),整體上用的參數(shù)數(shù)目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的話就是兩個(gè)3x3x256的卷積,參數(shù)數(shù)目: 3x3x256x256x2 = 1179648,差了16.94倍。?
對(duì)于常規(guī)ResNet,可以用于34層或者更少的網(wǎng)絡(luò)中,對(duì)于Bottleneck Design的ResNet通常用于更深的如101這樣的網(wǎng)絡(luò)中,目的是減少計(jì)算和參數(shù)量(實(shí)用目的)。
問(wèn)大家一個(gè)問(wèn)題:?
如圖1所示,如果F(x)和x的channel個(gè)數(shù)不同怎么辦,因?yàn)镕(x)和x是按照channel維度相加的,channel不同怎么相加呢??
針對(duì)channel個(gè)數(shù)是否相同,要分成兩種情況考慮,如下圖:?
?
圖3 兩種Shortcut Connection方式?
如圖3所示,我們可以清楚的”實(shí)線“和”虛線“兩種連接方式,?
實(shí)線的的Connection部分(”第一個(gè)粉色矩形和第三個(gè)粉色矩形“)都是執(zhí)行3x3x64的卷積,他們的channel個(gè)數(shù)一致,所以采用計(jì)算方式:?
y=F(x)+xy=F(x)+x?
虛線的的Connection部分(”第一個(gè)綠色矩形和第三個(gè)綠色矩形“)分別是3x3x64和3x3x128的卷積操作,他們的channel個(gè)數(shù)不同(64和128),所以采用計(jì)算方式:?
y=F(x)+Wxy=F(x)+Wx?
其中W是卷積操作,用來(lái)調(diào)整x的channel維度的;?
下面我們看看兩個(gè)實(shí)例:?
?
圖4 兩種Shortcut Connection方式實(shí)例(左圖channel一致,右圖channel不一樣)
3.ResNet50和ResNet101
這里把ResNet50和ResNet101特別提出,主要因?yàn)樗鼈兊某鲧R率很高,所以需要做特別的說(shuō)明。給出了它們具體的結(jié)構(gòu):?
表2,Resnet不同的結(jié)構(gòu)?
首先我們看一下表2,上面一共提出了5中深度的ResNet,分別是18,34,50,101和152,首先看表2最左側(cè),我們發(fā)現(xiàn)所有的網(wǎng)絡(luò)都分成5部分,分別是:conv1,conv2_x,conv3_x,conv4_x,conv5_x,之后的其他論文也會(huì)專門用這個(gè)稱呼指代ResNet50或者101的每部分。?
拿101-layer那列,我們先看看101-layer是不是真的是101層網(wǎng)絡(luò),首先有個(gè)輸入7x7x64的卷積,然后經(jīng)過(guò)3 + 4 + 23 + 3 = 33個(gè)building block,每個(gè)block為3層,所以有33 x 3 = 99層,最后有個(gè)fc層(用于分類),所以1 + 99 + 1 = 101層,確實(shí)有101層網(wǎng)絡(luò);?
注:101層網(wǎng)絡(luò)僅僅指卷積或者全連接層,而激活層或者Pooling層并沒有計(jì)算在內(nèi);?
這里我們關(guān)注50-layer和101-layer這兩列,可以發(fā)現(xiàn),它們唯一的不同在于conv4_x,ResNet50有6個(gè)block,而ResNet101有23個(gè)block,查了17個(gè)block,也就是17 x 3 = 51層。
4.基于ResNet101的Faster RCNN
文章中把ResNet101應(yīng)用在Faster RCNN上取得了更好的結(jié)果,結(jié)果如下:?
表3,Resnet101 Faster RCNN在Pascal VOC07/12 以及COCO上的結(jié)果?
這里有個(gè)問(wèn)題:?
Faster RCNN中RPN和Fast RCNN的共享特征圖用的是conv5_x的輸出么??
針對(duì)這個(gè)問(wèn)題我們看看實(shí)際的基于ResNet101的Faster RCNN的結(jié)構(gòu)圖:?
圖5 基于ResNet101的Faster RCNN?
圖5展示了整個(gè)Faster RCNN的架構(gòu),其中藍(lán)色的部分為ResNet101,可以發(fā)現(xiàn)conv4_x的最后的輸出為RPN和RoI Pooling共享的部分,而conv5_x(共9層網(wǎng)絡(luò))都作用于RoI Pooling之后的一堆特征圖(14 x 14 x 1024),特征圖的大小維度也剛好符合原本的ResNet101中conv5_x的輸入;?
最后大家一定要記得最后要接一個(gè)average pooling,得到2048維特征,分別用于分類和框回歸。
---------------------?
作者:懶人元?
來(lái)源:CSDN?
原文:https://blog.csdn.net/lanran2/article/details/79057994?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
==========================================================================================
ResNet介紹
1 簡(jiǎn)要概括
????ResNet(Residual Neural Network)由微軟研究院的Kaiming He等四名華人提出,通過(guò)使用ResNet Unit成功訓(xùn)練出了152層的神經(jīng)網(wǎng)絡(luò),并在ILSVRC2015比賽中取得冠軍,在top5上的錯(cuò)誤率為3.57%,同時(shí)參數(shù)量比VGGNet低,效果非常突出。ResNet的結(jié)構(gòu)可以極快的加速神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,模型的準(zhǔn)確率也有比較大的提升。同時(shí)ResNet的推廣性非常好,甚至可以直接用到InceptionNet網(wǎng)絡(luò)中。
????ResNet的主要思想是在網(wǎng)絡(luò)中增加了直連通道,即Highway Network的思想。此前的網(wǎng)絡(luò)結(jié)構(gòu)是性能輸入做一個(gè)非線性變換,而Highway Network則允許保留之前網(wǎng)絡(luò)層的一定比例的輸出。ResNet的思想和Highway Network的思想也非常類似,允許原始輸入信息直接傳到后面的層中,如下圖所示。
????這樣的話這一層的神經(jīng)網(wǎng)絡(luò)可以不用學(xué)習(xí)整個(gè)的輸出,而是學(xué)習(xí)上一個(gè)網(wǎng)絡(luò)輸出的殘差,因此ResNet又叫做殘差網(wǎng)絡(luò)。
2 創(chuàng)新點(diǎn)
????提出殘差學(xué)習(xí)的思想。傳統(tǒng)的卷積網(wǎng)絡(luò)或者全連接網(wǎng)絡(luò)在信息傳遞的時(shí)候或多或少會(huì)存在信息丟失,損耗等問(wèn)題,同時(shí)還有導(dǎo)致梯度消失或者梯度爆炸,導(dǎo)致很深的網(wǎng)絡(luò)無(wú)法訓(xùn)練。ResNet在一定程度上解決了這個(gè)問(wèn)題,通過(guò)直接將輸入信息繞道傳到輸出,保護(hù)信息的完整性,整個(gè)網(wǎng)絡(luò)只需要學(xué)習(xí)輸入、輸出差別的那一部分,簡(jiǎn)化學(xué)習(xí)目標(biāo)和難度。VGGNet和ResNet的對(duì)比如下圖所示。ResNet最大的區(qū)別在于有很多的旁路將輸入直接連接到后面的層,這種結(jié)構(gòu)也被稱為shortcut或者skip connections。
3 網(wǎng)絡(luò)結(jié)構(gòu)
????在ResNet網(wǎng)絡(luò)結(jié)構(gòu)中會(huì)用到兩種殘差模塊,一種是以兩個(gè)3*3的卷積網(wǎng)絡(luò)串接在一起作為一個(gè)殘差模塊,另外一種是1*1、3*3、1*1的3個(gè)卷積網(wǎng)絡(luò)串接在一起作為一個(gè)殘差模塊。他們?nèi)缦聢D所示。
????ResNet有不同的網(wǎng)絡(luò)層數(shù),比較常用的是50-layer,101-layer,152-layer。他們都是由上述的殘差模塊堆疊在一起實(shí)現(xiàn)的。
---------------------?
作者:dayL_W?
來(lái)源:CSDN?
原文:https://blog.csdn.net/u013181595/article/details/80990930?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的深度残差网络ResNet解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 乌班图系统部署jdk
- 下一篇: 华为HCIA(HCNA)笔记,还不快快收