深度学习:ResNet网络,BN及迁移学习

ResNet(Residual Network)是一种深度卷积神经网络架构,用于图像识别和计算机视觉任务。它是由微软研究员提出的,并在2015年的一篇论文中首次提出。ResNet的主要特点是引入了残差连接(residual connections),允许神经网络在训练过程中更轻松地学习到深层特征表示。

⛅ResNet

ResNet性能
ResNet网络结构

  • 一般情况下卷积神经网络的层数并不是越深越好,因为存在梯度消失或梯度爆炸问题,如上图在使用ResNet网络之后,随着网络深度加深,模型效果能够得到进一步提升。
  • 网络的亮点:
  1. 超深的网络结构(1000+)
  2. 提出residual结构
  3. 使用Batch Normalization加速训练(不再需要dropout)

残差(residual)结构

残差结构

  • 如图,残差结构就是将主线和捷径相加进行输出,相当于输出和原本的输入进行相加。

  • 左边这种残差结构应用于网络深度小的网络,右边这种残差结构能节省更多的参数,用于更深的网络。

    参数数目=输入通道数×卷积核个数×长×宽

  • 观察ResNet网络图,其中捷径为虚线的残差结构,指的是如下图的结构,在捷径上新增一层卷积
    虚线代表的残差结构

⛅Batch Normalization

我们在图像预处理过程中通常会对图像进行标准化处理,这样能够加速网络的收敛,假设一个两层的卷积结构,对于第一层Conv来说输入的就是满足某一分布的特征矩阵,但对于第二次Conv而言输入的feature map就不一定满足某一分布规律了(注意这里所说满足某一分布规律并不是指某一feature map的数据要满足分布规律,理论上是指整个训练样本集所对应feature map的数据要满足分布规律)。而我们BatchNormalization的目的就是使我们的feature map满足均值为0,方差为1的分布规律
BN的计算公式
对于一个d维的输入x,我们将其每一个维度都进行标准化处理,如对于RGB图像,我们需要分别对三个通道都进行处理。运算公式如上图
标准化处理

  • 上图是一个例子,两个通道,两个feature(特征矩阵),分别计算整个channel1和channel2的均值和方差,得到的值带入公式运算得到标准化后的结果。

  • 使用BN时的注意事项:

  1. 训练时training设置为True,验证时设置为False(pytorch中通过创建模型model.train()和model.eval()进行更改);
  2. batch size尽可能大,因为一批次训练的越多,均值方差越接近于整个数据集;
  3. bn层放在卷积层和激活函数层之间,卷积层不设置偏置bias,因为会被消掉。

⛅迁移学习

使用他人预训练过的模型参数来训练,本质上可以认为是将一些浅层通用的特征直接拿来训练出自己需要的高层的特征识别能力,优势如下:

  1. 可以快速训练出理想结果
  2. 当数据集小时也能有理想结果

注意当使用他人的模型训练,也要注意采取和他人相同的数据预处理

常见方式:

  1. 载入权重后训练所有参数
  2. 载入权重后只训练最后几层参数
  3. 载入权重后在原网络基础上再添加一层全连接层,仅训练该全连接层
  • Copyrights © 2023-2025 LegendLeo Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信