ResNet注意细节

ResNet-50,101网络结构详解

针对当前最常使用的backbone网络,有时候总是忘记一些详细的细节部分,这里特别记录一下。

BottleNect结构

这个是resnet的一个基本结构,resnet基本就是用这个结构堆叠起来的。
ResNet注意细节

ResNet的结构

整个ResNet是由多个BottleNect的结构堆叠起来,可以看到有四个stage,每个stage过后,特征图的输出大小宽和高都会变成原来的一半。
ResNet注意细节
可以看到,图中的每个block都是由一个1x1,3x3,1x1卷积堆叠而成,对应上面的bottlenect结构,这里有一个细节部分要注意的是,第一个stage(conv2x)中完成下采样用的是maxpool,下面的三个bottlenect中的卷积stride都是1。而且还有一点,就是其中第一个bottlenect的输入通道数in_channel=64,输出通道是out_channel=256,这里在做shortcut的时候,需要用一个1x1的卷积把输入的通道上升到和输出的通道数一样后才能相加。
ResNet注意细节
在后面的三个stage中,同样需要下采样,但是这里不再使用pool,而是使用带步长的卷积,这个stride=2的卷积使用在每个stage的第一个bottlenect中。例如stage2(Conv3x):
ResNet注意细节
这里有一点说名下,就是上图当中stride=2的卷积用在了1x1的卷积上,而后面有些优化后是用在了3x3的卷积上面。而且第一个bottlenect输入和输出的通道数和特征图大小也不相同,在shortcut的时候同样需要使用带步长的1x1卷积,使得最后相加的输入和输出特征图的大小和通道数保持一致。

上面就是个人觉得需要注意的一些细节部分。