序言
ResNet在2015年由何大神(领衔在微软研究院的几位同道)提出,在ImageNet比赛图像分类任务上摘得桂冠,在ILSVRC2015竞赛中惊艳亮相,将错误率降到了3.57,毫无悬念地夺得了ILSVRC2015的第一名,干趴了VGG和GooLeNet,一时无限风光。
因为其形式与VGG类似,【精简干练而实用高效】,没有特别多的/令人眼花缭乱的tricks,没有复杂的、各种concat的枝枝叶叶,也没有1Xn/nX1/depthwise诸类技巧性的设计,特别适合工程化应用。之后很多方法的backbone都建立在ResNet50或者ResNet101的基础之上,detection,segmentation,recognition等任务领域都纷纷使用ResNet,GooLeNet Inceotion V4也使用了ResNet,可见ResNet表现之卓越。
故而,博文题目中称之为扛鼎之作,重剑无锋。
网络结构
图解
STRUCTURE OF VGG19 VS PLAIN-34 VS RESNET34
论文中一共提出了5种深度的ResNet,分别是18,34,50,101和152,每种CNN都有conv1,conv2_x,conv3_x,conv4_x,conv5_x五部分构成,其中数字层数当中的网络层仅仅指卷积或者全连接层,而激活层或者池化层并没有计算在内。
详解
【为什么要引入ResNet】由于CNN网络的加深会造成梯度爆炸和梯度消失的问题。之前的解决方案:归一化操作 >不完善之处:CNN网络进一步加深时失效。即论文图1说的情况
【何为残差】F(x)=H(x)-x
已知y=H(x)=F(x)+x)
【算法推导中的ShortCut基础版】
shortcut connection
【ResNet Block的两种设计形式】
ResNet18/34(左图)和ResNet50/101/152(右图);右图又称为”bottleneck design”;
【bottleneck design原因】降低维度,减少参数的数量。第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话就是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。
创新思想
核心点
ResNet go deeper
感悟点
理论上讲,当网络越来越深,模型不应该越来越差,至少可以获得浅些层的模型的表现能力。实际上的现实却是,当网络越来越深,模型表现差了不少。
梯度角度
F(x)研究一下可发论文。
映射角度
恒等映射(Identity mapping)
恒等映射,难;
因为经过太多的非线性激活,就很难再回到过去了;
一如我们的青春和爱情。
言归正传,H(x)=F(x)+x,那就让F(x)无限地趋近于0吧,那样的话H(X)->x,也就拥有了恒等映射的能力。不断学习残差F(x),不忘初心,方得始终。
参考论文
1.Deep Residual Learning for Image Recognition. by Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Microsoft Research
2.ResNet解析
3.你必须要知道CNN模型:ResNet
4.Kaiming He 何恺明