天天看點

ResNet50的初步認知和複現連結

下文是自己學習和了解到的,可能比較淺顯,也可能比較散,主要作用還是幫自己記錄,友善日後檢視,是以很多東西都給出了連結,但願對讀者有所幫助,主要學習來源

文章目錄

    • 一、前言
    • 二、存在問題
    • 三、殘差塊
    • 四、殘差塊的優點
    • 五、網絡結構
    • 六、網絡的參數
    • 七、複現

一、前言

在2015年的Imagenet比賽中五項都是第一,錯誤率降低到了3.6%,超出了人眼的識别精度

論文:Deep Residual Learning for Image Recognition

回顧之前的網絡:

LeNet:5層

AlexNet:8層

VGG:19層

GoogLeNet:22層

ResNet:152層

神經網絡層數越深,越可以提取更多層次的特征,對特征進行融合,可以提升模型表現,但具有兩面性

二、存在問題

Problem of Deep Network

(存在的問題)

Vanishing gradients:梯度消失

Exploding gradients:梯度爆炸

Solution:

(解決方法)

Normalized initialization 歸一化

Intermediate normalization layers(BatchNorm) 中間層歸一化

當然對于梯度消失可以通過改變激活函數來解決,梯度爆炸可以通過梯度裁剪(clip)來解決

當神經網絡的層數增加時,容易引發神經網絡的退化(峰型)

ResNet50的初步認知和複現連結

伴随着網絡深度的增加,精度飽和,然後迅速退化,于是發現神經網絡退化才是神經網絡難以訓練的原因,而不是梯度消失和梯度爆炸,于是提出了ResNet網絡

三、殘差塊

介紹殘差塊之前,先看下面是一個簡單的模型介紹,右邊模型相較于左邊多一個網絡,正常來說B模型比A模型的效果好,如果B的網絡為恒等因式,那麼A模型的解其實是B模型解的子空間

ResNet50的初步認知和複現連結

恒等因式

:輸出與輸入相同,後來何凱明也寫了一篇關于恒等因式的論文,下面圖檔下方的*号是論文名稱,有興趣可以看看

ResNet50的初步認知和複現連結

殘差塊

:F(x)就是殘差,整個網絡被稱為殘差網絡

ResNet50的初步認知和複現連結

輸入是x,如果使用恒等因式,那麼輸出為H(x)—>y = x;但如果使用跨層連接配接,那麼最終的輸出就會變成F(x)+x;使用F(x)+x減去H(x)就可以得到F(x),他就是殘差,作者認為這樣訓練出的網絡相對于對x進行修正,F(x)就是修正的幅度。

四、殘差塊的優點

ResNet50的初步認知和複現連結

1.沒有增加任何的額外參數和計算複雜度

2.可以通過随機梯度下降進行反向傳播

3.依賴現有架構實作,實作簡單(tensorflow,pytorch)

五、網絡結構

在網絡結構過程中block會出現次元不一樣的情況,可以用兩種方法(具體可以檢視完整的網絡結構圖)

1.仍然執行恒等因式,額外填充0來增加次元,保證前後次元一樣

2.用1×1的卷積維持次元的變化

ResNet50的初步認知和複現連結

ResNet50完整的網絡結構圖,網絡圖太大,可點選連結進去檢視,也是借鑒的他人部落格。

六、網絡的參數

ResNet50的初步認知和複現連結

Conv1的7×7,64,stride 2:表示7*7的卷積核,64個通道,兩個步長的卷積

七、複現

ResNet50的複現暫時沒有細研究,可以移步該連結,代碼和細節可以檢視該連結,自己找到的比較好的資源,推薦有興趣的可以看看。

繼續閱讀