ResNet结构解读
ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域都纷纷使用ResNet,Alpha zero也使用了ResNet,所以可见ResNet确实很好用。
ResNet的意义:
随着网络的加深,出现了训练集准确率下降的现象,我们可以确定这不是由于Overfit过拟合造成的(过拟合的情况训练集应该准确率很高);所以作者针对这个问题提出了一种全新的网络,叫深度残差网络,它允许网络尽可能的加深。
残差是指什么?
其中ResNet提出了两种mapping:一种是identity mapping,指的就是上图中”弯弯的曲线”,另一种residual mapping,指的就是除了”弯弯的曲线“那部分,所以最后的输出是 y=F(x)+x
identity mapping顾名思义,就是指本身,也就是公式中的x,而residual mapping指的是“差”,也就是y−x,所以残差指的就是F(x)部分。
理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
ResNet的结构:
它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思。
bottleneck构建模块(说明:左图残差模块使用在resnet34上,有图使用在resnet50/101/152上):
目前ResNet系列有常见的resnet18、resnet34、resnet50、resnet101、resnet152等,这五种结构的具体网络层比较如下:
实际在resnet34、resnet50以及后续网络中会发现,在conv2_x、conv3_x、conv4_x、conv5_x模块的网络结构中第一个结构和bottleneck有差异,具体结构如下:
残差网络结构与朴素网络结构对比:
实际的基于ResNet101的Faster RCNN的结构图: