ResNet-50经过了4个Block,每一个Block中分别有3,4,6,3个Bottleneck
现在来看一下这个网络图,
- 首先输入的图片是3×224×224,也就是3个通道,图片尺寸为224×224;
- 进入第一个卷积层,卷积核大小为7*7,卷积核个数为64,步长为2,padding为3;所以输出应该是(224-7+2×3)/2+1=112.5,向下取整得到112,所以输出是 64 ×112 ×112;
- maxpool层会改变维度,但是不会影响个数
到此即将进入第一个实线方框中,图1中结构所示,第一个实线方框中本来应该有3个Bottleneck,图2作者只画出两个,其实每一个Bottleneck里面包含两种Block,第一种是Conv Block,另一种是Identity Block。
首先说说Conv Block,也就是第一个实线方框中虚线连接的三层:
可以看到,总体的思路是先通过1×1的卷积对特征图像进行降维,做一次3×3的卷积操作,最后再通过1×1卷积恢复维度,后面跟着BN和ReLU层;虚线处用256个1×1的卷积网络,将maxpool的输出降维到255×56×56。
再说Identity Block
也就是实线连接所示,不经过卷积网络降维,直接将输入加到最后的1×1卷积输出上。
经过后面的Block,经过平均池化和全连接,用softmax实现回归。