首页 > 编程知识 正文

resnet152结构,resnet网络结构图

时间:2023-05-03 13:36:14 阅读:14850 作者:235

首先给出三个链接:

1. ResNet网络结构详细视频

使用Pytorch构建ResNet网络,并基于迁移学习培训

使用Tensorflow构建ResNet网络,并基于迁移学习培训

ResNet网络于2015年由微软研究所提出,在当时的ImageNet竞赛中获得分类任务第一,目标检查第一。 获得了COCO数据集的目标检测第一名、图像分割第一名。 下图是ResNet34层模型的示意性结构图。

ResNet网络具有以下亮点:

(1)提出residual结构(残差结构),构建超深度网络结构(突破1000层) )。

)2)使用Batch Normalization加速训练(放弃dropout ) () ) ) ) ) ) ) )。

在提出ResNet网络之前,传统的卷积神经网络是通过将一系列卷积层和下采样层进行叠加而得到的。 但是,网络深度一定时,会出现两个问题。 1 )坡度消失或坡度爆炸。 2 )退化问题(退化探针)。 ResNet论文提出,通过数据预处理和在网络中使用bn(batchnormalization )层可以解决梯度消失或梯度爆炸的问题。 在不知道BN层的情况下,对于这个链接,但是对于退化问题(随着网络层数的加深,效果变差,如下图所示),没有什么好的解决方案。

因此,在ResNet论文中,为了减轻劣化问题,提出了residual结构(残差结构)。 下图为使用residual结构的卷积网络,可见随着网络的加深,效果并不差,反而越好。

接下来,分析一下论文中的残差结构(residual )。 下图是论文中给出的两种残差结构。 左边的残差结构面向层数较少的网络,如ResNet18层和ResNet34层网络。 右侧面向网络分层较多的网络,如ResNet101、ResNet152等。 为什么深层网络要使用右边的残差结构呢? 之所以这么说,是因为右边的残差结构可以减少网络参数和运算量。 同样,如果channel输入和输出256个特征矩阵,则使用左侧残差结构需要约1170648个参数,而使用右侧残差结构只需要69632个参数。 在明显构建深层网络时,使用右侧残差结构更合适。

首先,针对ResNet18/34,分析左侧的残差结构。 如下图所示,该残差结构的主分支为2层3

由x3的卷积层构成,残差结构右侧的连接线是shortcut分支,也称为快捷分支。 (注意,为了能够将主分支上的输出矩阵与我们的快捷方式分支上的输出矩阵相加,需要确保这两个输出特征矩阵具有相同的shape )。 如果是刚仔细看过ResNet34网络结构图的同学,应该会发现图中有虚线的残差结构。 在原论文中,作者只是简单叙述了这些虚线残差结构具有降维的作用,在快捷分支中用1x1的卷积内核进行降维处理。 下图右侧显示了详细的虚线残差结构,注意下面每个卷积层的步长stride和快捷分支上卷积核的个数(与主分支上卷积核的个数相同)。

然后,分析ResNet50/101/152的残差结构,如下图所示。 在该残差结构中,主分支使用三个卷积层,第一个1x1卷积层用于压缩通道维度,第二个3x3卷积层,第三个1x1卷积层用于恢复通道维度(主要与该残差结构对应的虚线残差结构如下图右侧所示,同样在快捷分支中有1x1个卷积层,其卷积核的个数与主分支上的第三层卷积层的卷积核的个数相同。 注意每个卷积层的步长距离。 3358 www.Sina.com/https://NGC.NVIDIA.com/catalog/model-scripts/NVIDIA 3360 resnet _ 50 _ v1 _5_ for _ pyt tttt

下图是原论文所示的不同深度的ResNet网络结构的配置。 表中的残差结构表示主枝上的卷积核的大小和卷积核的个数,表中的xN表示将该残差结构重复n次。 那么,哪个残差结构是虚线的残差结构呢?

相对于我们ResNet18/34/50/101/152,与表中的conv3_x、conv4_x、conv5_x对应的一系列残差

结构的第一层残差结构都是虚线残差结构。因为这一系列残差结构的第一层都有调整输入特征矩阵shape的使命(将特征矩阵的高和宽缩减为原来的一半,将深度channel调整成下一层残差结构所需要的channel)。为了方便理解,下面给出了ResNet34的网络结构图,图中简单标注了一些信息。

对于我们ResNet50/101/152,其实在conv2_x所对应的一系列残差结构的第一层也是虚线残差结构。因为它需要调整输入特征矩阵的channel,根据表格可知通过3x3的max pool之后输出的特征矩阵shape应该是[56, 56, 64],但我们conv2_x所对应的一系列残差结构中的实线残差结构它们期望的输入特征矩阵shape是[56, 56, 256](因为这样才能保证输入输出特征矩阵shape相同,才能将捷径分支的输出与主分支的输出进行相加)。所以第一层残差结构需要将shape从[56, 56, 64] --> [56, 56, 256]。注意,这里只调整channel维度,高和宽不变(而conv3_x, conv4_x, conv5_x所对应的一系列残差结构的第一层虚线残差结构不仅要调整channel还要将高和宽缩减为原来的一半)。

关于模型的搭建与训练代码放在我的github中,大家可自行下载使用:

https://github.com/WZMIAOMIAO/deep-learning-for-image-processing

pytorch版本在pytorch_learning文件夹中,tensorflow版本在tensorflow_learning文件夹中.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。