ResNet所解决的问题:
深度学习网络在网络深度过高的时候,很容易出现梯度消失的问题。而当梯度消失时(即损失函数求导为0时),权值将不再会更新,对于网络性能也不会再有改善。
而后ResNet被提出,它利用了一个非常简单的思路,通过跳过一些网络层,而直接连接至比较初始的层,从而实现缓解梯度消失的问题。
ResNet34结构
ResNet的主体网络结构是来自VGG-19改进:
而ResNet的提出使得网络层数可以变得很高,而不同深度的网络结构基本一致(ResNet18、34与ResNet50、101、152有略微的差别),只是网络层数不一样而已,其结构对应层数如论文中所述:
ResNet34结构可视化
ResNet34输入的图片为(224, 224, 3)
(输入图片的长、输入图片的宽、输入通道(RGB)
),整体结构如下图所示:
输入的图片为224*224
尺寸的图片,然后先经过第一层卷积Conv1
,降维处理:
接着再经过一次maxpool
池化层,继续降维:
在图片从224→56
时(缩小了4倍),开始进行ResNet
处理,其中ResNet
网络实现思想如下:
先进行一轮卷积核为kernal=3
、padding=1
、stride=1
的卷积,输入输出保持不变:
然后继续重复这一结构,并且因为输入输出的维度保持不变,最后直接相加获得具有『深层网络』和『浅层网络』的特征输出:
ResNet34按照论文中,在Layer1
中有3
个这样的残差结构:
而在Layer1→Layer2
的过程中,维度是从56→28
,所应用在Layer2
中的残差结构也是包含了一个降维的卷积过程:
而其中的Shortcut
实现如下:
最终这一个含有降维的残差网络如下:
Layer2
实现如下:
Layer3
、Layer4
和Layer2
实现的方法一致:
接着后面需要再连接一个池化层,继续降维:
最后再经过全连接层+softmax
获得各种物体的预测概率:
ResNet34结构就完成啦~!