笔记更新中 ---------------------
目录
ResNet 分为 resnet18、resnet34、resnet50、resnet101、resnet152
把他们分为两种,其中( resnet18、resnet34 )是一组;(resnet50、resnet101、resnet152 )是一组。
两个不同的组分别使用下面两种不同的残差块(ResNet block),分别为两层的 basicblock 结构和三层的 bottleneck 结构。
其中深层次时 bottleneck 使用的参数远远少于 basicblock ,故50往上的结构都用 bottleneck 的 block。
两种结构



-
虚线残差结构:会改变输入的c或者h、w再往下拼贴。 - 实线残差结构:只是原封不动地把输入拼贴下来
block细节

- resnet34以下:conv2接收到的是正常的,所以除了conv2,后面每个conv的第一个block都会使用虚线残差结构。因为在主分支里面已经通过卷积翻倍了c,所以在通过不同的conv层时通过捷径分支翻倍c升高维度与正常输出维度相同,以同维度拼贴(逐个元素相加,不改变任一维度)。
- resnet50以上:每个bottleneck会把c翻4倍,所以连conv2的第一个残差结构捷径分支输出直接去和主分支的输出相加都是维度不匹配的。所以conv2开始第一个block就要用虚线结构(这是和34不同的地方),但是这里捷径分支只调整channel维度,高和宽不变(而conv3_x, conv4_x, conv5_x所对应的一系列残差结构的第一层虚线残差结构不仅要调整channel还要将高和宽缩减为原来的一半,和34的一样)。
另外:在50以上的block中最后一个卷积把c扩大四倍,通过这种设计,虽然在中间层(1x1和3x3卷积)通道数可能较少,但最终输出的特征图有更多的通道。这种结构有助于网络在特征学习过程中捕捉到更多的信息。
expansion = 4
的设计允许Bottleneck结构在保留计算效率的同时,增强模型的特征表达能力,使得深层网络能够学习到更丰富和复杂的特征。