ResNet50模型计算过程详解 resnet50结构分析( 二 )


接着经过一个kernel size=3,in_channel=128,out_channel=128的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=1,in_channel=128,out_channel=512的卷积,bn得到512x28x28的feature map:F7_1
将F7经过一个kernel size=1,in_channel_256,out_channel=512,stride=2的卷积,bn得到512x28x28的feature map:F7_2
F7_1+F7_2后,再经过激活函数relu得到512x28x28的feature map F8
F8经过第5个bottleneck residual block, 得到512x28x28的F9

详细如下:
F8经过kernel size = 1,in_channel=512,out_channel=128,stride=1的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=3,in_channel=128,out_channel=128的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=1,in_channel=128,out_channel=512的卷积,bn得到512x28x28的feature map:F8_1
F8_1+F8后,再经过激活函数relu得到512x28x28的 feature map F9
F9经过第6个bottleneck residual block, 得到512x28x28的F10
详细如下:
F9经过kernel size = 1,in_channel=512,out_channel=128,stride=1的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=3,in_channel=128,out_channel=128的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=1,in_channel=128,out_channel=512的卷积,bn得到512x28x28的feature map:F9_1
F9_1+F9后,再经过激活函数relu得到512x28x28的 feature map F10
F10经过第7个bottleneck residual block, 得到512x28x28的F11
详细如下:
F10经过kernel size = 1,in_channel=512,out_channel=128,stride=1的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=3,in_channel=128,out_channel=128的卷积,bn,relu,得到128x28x28的feature map.
接着经过一个kernel size=1,in_channel=128,out_channel=512的卷积,bn得到512x28x28的feature map:F8_1
F10_1+F10后,再经过激活函数relu得到512x28x28的 feature map F11
注意到,这4个bottleneck residula block中的3×3的卷积的in_channel=out_channel=128,由于这3个 bottleneck residula block中3×3卷积的channel数是一样的,我们通常把他们3个 block合称为resnet50的block2,或者conv3_x,或者layer2.
F11经过第8个bottleneck residual block, 得到1024x14x14的F12
详细如下:
F11经过kernel size = 1,in_channel=512,out_channel=256,stride=2的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=3,in_channel=256,out_channel=256的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=1,in_channel=256,out_channel=1024的卷积,bn得到1024x14x14的feature map:F11_1
将F11经过一个kernel size=1,in_channel=512,out_channel=1024,stride=2的卷积,bn得到1024x14x14的feature map:F11_2
F11_1+F11_2后,再经过激活函数relu得到1024x14x14的F12
F12经过第9个bottleneck residual block, 得到1024x14x14的F13
详细如下:
F12经过kernel size = 1,in_channel=1024,out_channel=256,stride=1的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=3,in_channel=256,out_channel=256的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=1,in_channel=256,out_channel=1024的卷积,bn得到1024x14x14的feature map:F12_1
F12_1+F12后,再经过激活函数relu得到1024x14x14的F13
F13经过第10个bottleneck residual block, 得到1024x14x14的F14
详细如下:
F13经过kernel size = 1,in_channel=1024,out_channel=256,stride=1的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=3,in_channel=256,out_channel=256的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=1,in_channel=256,out_channel=1024的卷积,bn得到1024x14x14的feature map:F13_1
F13_1+F13后,再经过激活函数relu得到1024x14x14的F14
F14经过第11个bottleneck residual block, 得到1024x14x14的F15
详细如下:
F14经过kernel size = 1,in_channel=1024,out_channel=256,stride=1的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=3,in_channel=256,out_channel=256的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=1,in_channel=256,out_channel=1024的卷积,bn得到1024x14x14的feature map:F14_1
F14_1+F14后,再经过激活函数relu得到1024x14x14的F15
F15经过第12个bottleneck residual block, 得到1024x14x14的F16
详细如下:
F15经过kernel size = 1,in_channel=1024,out_channel=256,stride=1的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=3,in_channel=256,out_channel=256的卷积,bn,relu,得到256x14x14的feature map.
接着经过一个kernel size=1,in_channel=256,out_channel=1024的卷积,bn得到1024x14x14的feature map:F15_1