首页 > 编程知识 正文

网络经典流行语句,resnet网络结构详解

时间:2023-05-06 11:20:23 阅读:14898 作者:4107

经典网络resnet(residualnetworks )由Kaiming He等人于2015年提交,论文名称见《Deep Residual Learning for Image Recognition》,论文见https://arxiv.org/pdf/1512.03385.pdf

ResNet需要解决的是深度神经网络的“退化”(degradation )问题。 使用浅层直接堆积到深层网络中,不仅难以利用深层网络强大的特征提取能力,而且准确率下降。 这种退化不是过度拟合造成的。

ResNet也称为残差网络。 ResNet是用残差块(Residual Building Block )构建的,论文截图如下。 识别映射)是指右侧带有x的曲线; residual mapping (残差映射)是指残差是f ) x )的部分。 最后的输出是f(x ) x。 f(x ) x的实现可以通过具有“shortcut connections”的前馈神经网络来实现。 shortcut connections是一个跳过一个或多个层的连接。 图中的“weight layer”是指卷积操作。 如果网络达到最佳并继续加深网络,则重建映射将为0,只剩下identity映射。 这在理论上使网络始终处于最佳状态,网络性能也不会随着深度的增加而下降。

残差块由多个级联卷积层和一个shortcut connections组成,将两者的输出值相加后,通过ReLU激活层得到残差块的输出。 多个残差块可以被连接以实现更深的网络。

残差块有两种设计方式,论文截图如下。 左图以ResNet-18/34等浅网络为对象; 右图旨在减少深度网络(也称为“Bottleneck”构建块)的参数,如ResNet-50/101/152。

论文给出了5种不同层数的ResNet。 论文截图如下。 可见,ResNet-18/34是进行两层卷积的残差,ResNet-50/101/152是进行三层卷积的残差,分别对应于上图中残差块的两种设计方案。 与ResNet-18/34对应的每个残差块的卷积内核大小按照3*3、3*3的顺序,与ResNet-50/101/152对应的每个残差块的卷积内核大小为1*1、3*3、

十八、三十四楼等数字怎么计算? 以34级为例,一个卷积(conv1 ) 3残差块(两个卷积) conv2_x (四个残差块)两个卷积(conv3_x ) 6个残差块) 2。此处的层是卷积

论文给出了层数为34的ResNet网络结构。 论文截图如下。 左侧为VGG-19网络结构。 中间是34楼的普通网络结构; 在此基础上,层与层间加入shortcut connections,即可将普通网络转换为相应的ResNet网络,即右侧的网络结构。 与上表中的ResNet-34一致。

在右侧的ResNet网络中,曲线有实线和虚线两种。 虚线表示恒等映射x输出的特征映射数、width、height和残差f(x )的输出不一致时,最终执行f ) x )和x,因此x需要进行卷积核大小为1*1的运算操作。 谷歌网络使用Concat操作。

当输入图像尺寸为n*n、滤波器(过滤器)为f*f、填充为p并且步长为s时,输出尺寸计算卷积层的尺寸,并且当商不是整数时,在下面取整数。 即,floor函数; 计算池化层的大小,如果商不是整数,向上舍入。 也就是说,是ceil函数。 参考: https://blog.csdn.net/fengbing chun/article/details/80262495

https://github.com/fengbing chun/caffe _ test/tree/master/test _ data/net/Resnet中与论文中的resnet相对应的18、34、50、1000

tyle="text-indent:33px;">这里描述下ResNet-50架构:与上表中”50-layer”一致

(1).输入层(Input):图像大小为224*224*3。

(2).卷积层conv1+BatchNorm+Scale+ReLU:使用64个7*7的filter,stride为2,padding为3,输出为112*112*64,64个feature maps。

(3).卷积层conv2_x:输出为56*56*256,256个feature maps。

A.最大池化层:filter为3*3,stride为2,padding为0,输出为56*56*64,64个feature maps。

B.连续3个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为64、64、256,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为56*56*256,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(4).卷积层conv3_x:输出为28*28*512,512个feature maps。

连续4个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为128、128、512,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为28*28*512,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(5).卷积层conv4_x:输出为14*14*1024,1024个feature maps。

连续6个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为256、256、1024,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为14*14*1024,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(6).卷积层conv5_x:输出为7*7*2048,2048个feature maps。

连续3个残差块,每个残差块,包含3层卷积,卷积kernel大小依次为1*1、3*3、1*1,feature maps数依次为512、512、2048,第1、2层卷积做Convolution+BatchNorm+Scale+ReLU,第3层卷积做Convolution+BatchNorm+Scale。第1个残差块的identity mapping需做卷积kernel大小为1*1+BatchNorm+Scale运算,使其输出调整为7*7*2048,便于做Eltwise操作。每个残差块后做Eltwise+ReLU操作。

(7).平均池化层:filter为7*7,stride为1,padding为0,输出为1*1*2048,2048个feature maps。

(8).全连接层:有1000个神经元或输出1000个feature maps。

(9).输出层(Softmax):输出分类结果,看它究竟是1000个可能类别中的哪一个。

可视化结果如下图所示:

GitHub:https://github.com/fengbingchun/NN_Test

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。