知乎小白的第一篇文章,最近在做一个比赛,用到了Deeplabv3,顺便看了一下源码,记录一下。
# 预备知识
本文提到的output_stride来源于deeplabv3论文,指的是(输入图像的分辨率/特征图的分辨率),可以看出,output_stride越大,说明特征图越小,越高层。
# ResNet50
ResNet50包括一个Init Block和四个stage,以及最后的Avgpool和fc。下采样了32倍。(一般的分类网络都是下采样32倍)图1 ResNet的结构图
1. Init Block
由一个7×7的卷积层+一个maxpooling层组成,其中卷积层的stride为2,因此经过Init block后的输出尺寸降了4倍。 Init Block输出为64通道。
2. stage1-4
stage1-4的残差块个数依次为[3,4,6,3].stage1
stage1由三个unit(残差单元)构成,都是1×1或3×3的小卷积,且stride都为1,因此经过stage1后的输出尺寸相对于原图还是降了4倍(与Init block的输出尺寸相同),stage1输出为256通道。stage2
stage2由四个unit组成,其中unit1的3×3卷积核stride为2,因此,经过stage2后的输出尺寸相对于原图降了8倍,stage2输出为512通道。stage3
stage3由六个unit组成,其中unit1的3×3卷积核stride为2,因此,经过stage3后的输出尺寸相对于原图降了16倍