文章目录
1 介绍ResNet网络
ResNet在2015年由微软实验室提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集目标检测第一名,图像分割第一名。
网络中的亮点:
(1)超深的网络结构(突破1000层)
(2)提出residual模块
(3)使用 Batch Normalization加速训练(丢弃dropout)
-
考虑到随着网络层数加深,会有:梯度消失(梯度爆炸)现象;退化问题(degradation problem) 但是ResNet可以解决这一问题!
-
这里左边的结构,用右边的结构代替了
-
实线的残差结构的shape前后是一致的,可以直接进行相加。
-
注意,这里的stride变化了
2 介绍 Batch Normalization
- BN 是2015年提出来的,通过BN 可以加速网络收敛,提升准确率~
- 使得每一个feature map,也就是每一个维度(channel),满足均值为0,方差为1的分布规律。
2.1 什么是feature map
在CNN中,数据格式是 b*c*w*h
的,可以看做是c个二维图片堆叠在一起,每一个都是一个feature map
-
比如说,红色、绿色和蓝色就分别是3个
feature map
-
卷积之后的
feature map
:
层与曾之间会有若干个卷积核(kernel)(也是过滤器),比如说最常用的3×3, 64
, 表示有 64个 3×3大小的卷积核。
有N个卷积核,那么下层就会产生N个feature map
2.2 BN 的过程
- 首先是对数据进行预处理(preprocessing), 调整到满足某一分布规律,这样就能加速了。
- 但是在conv1 之后,每一个feature map就不满足刚刚的分布规律了,此时就用用到
Batch Normalization
来使得每一个feature map 满足均值为0 方差为1
2.3 解读论文:Normalization via Mini-Batch Statistics
- 论文给出了标准化处理的公式:
- 举个例子:
2.4 使用BN时需要注意的问题
- 训练时:
training=True
, 在验证时training=False
在pytorch 中可以在model.train()
和model.eval()
方法控制。 - batch size 需要尽量大一点,设置太小表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差
- 建议将BN层,放在卷积层和激活层之间,且卷积层不要设置偏置bias,因为没有用。
3 迁移学习
优势:
(1)能够快速的训练处一个理想的结果
(2)当数据集较小时也能训练处理想的效果
注意:使用别人与训练模型参数时,要注意别人的预处理方式。
- 下一篇文章讲的是,如何使用pytorch搭建ResNet网络~~有兴趣的小伙伴可以点击下方链接!
https://blog.youkuaiyun.com/weixin_42521185/article/details/124542423
- 最后再次感谢b站up主的分享!为你投币点赞转发,做你的野生代言人~~
https://www.bilibili.com/video/BV14E411H7Uw/?spm_id_from=pageDriver