ResNet入门

举报
qinggedada 发表于 2020/08/24 11:36:27 2020/08/24
【摘要】 这一篇,我只讲知识点。后续有精力会展开深度学习网络发展史~欢迎关注,求点赞求分享!ResNet深度残差学习网络,主要针对更深的神经网络训练效果不好的现象进行解决,核心观念为深层次表征信息是很多视觉任务的核心点。那么这是如何解决更深的神经网络训练效果不好的现象?答:采用了上述的(Residual Learning)残差学习提高信息流效率,下面便围绕ResNet展开。网络深度加深后,效果提升明显...

这一篇,我只讲知识点。后续有精力会展开深度学习网络发展史~欢迎关注,求点赞求分享!

ResNet深度残差学习网络,主要针对更深的神经网络训练效果不好的现象进行解决,核心观念为深层次表征信息是很多视觉任务的核心点。

那么这是如何解决更深的神经网络训练效果不好的现象?

答:采用了上述的(Residual Learning)残差学习提高信息流效率,下面便围绕ResNet展开。

网络深度加深后,效果提升明显:

  • 集成浅层、中层和深层特征

  • VGG、GoogleNet

  • 在识别、检测等任务中均有很好的效果

简单的叠加更多神经网络层就可以吗?

现象:

  • 明显的梯度消失/爆炸问题,难以收敛——利用正则化解决

  • 模型退化问题凸显,准确率饱和——?

  • 模型退化问题并非过拟合导致,增加深度导致训练集错误率提升

  • 深层网络不能比浅层网络错误率更高——特征映射

ResNet结构示意图:

1.png

跳跃连接的详细介绍:

深度残差学习:

2.png

我们知道深度神经网络可以拟合高维非线性函数

  • 可以拟合H(x),也可以你和H(x)-x

  • 令F(x)=H(x)-x,则H(x)=F(x)+x

  • 网络学习的难易程度不同

  • 解决梯度消失问题,增加的网络层学习成恒等映射,则不会提升训练误差

跳层的恒等映射:

残差块:y = F( x , {W_i} )+x

3.png

残差网络:

1.两个简单的设计原则:

  • 具有相同输出特征图大小的网络层卷积数量相同

  • 特征图大小减半,则卷积核数量加一倍,保证时间复杂度

2.基于普通网络,插入跳跃连接

3.维度增加时:

  • 增加零输出

  • 1*1卷积改变维度

4.png

下图总结了ResNet的主要创新点:

5.png

理论知道的差不多了,那么下面自然是论文代码复现,首先是标准学习流程图:

6.png

1.准备工作:

a.源代码地址:https://github.com/tensorflow/models/tree/master/official/vision/image_classification

b.环境配置:python3.5+Tensorflow1.14+cpu/gpu

2.数据预处理

a.数据来源:ImageNet官方http://image-net.org/

b.预处理:

图像尺寸:224*224,3通道RGB

均值:R:123.68、G:116.78、B:103.94

类别数:1001种

数据预处理流程:

a.对训练集:

解码JPEG图像

剪切和水平镜像——数据增强手段

缩放到224*224

b.对测试集:

解码JPEG图像

保持长宽比缩放图像

中心剪切224*224

c.对所有图像:减除RGB通道均值

3.模型定义

定义恒等模块:

获取卷积核数量

定义图像数据的通道顺序

定义神经网络层名称模式

定义恒等模块网络层,包括卷积、BN和激活

最后将输入直接与卷积部分做叠加

4.模型训练:

输入数据流(训练数据和验证数据)

定义学习率和优化器

编译模型

训练和验证模型


PS:最近时间很赶,只能把大致思路和资源放出来让大家自己来尝试复现,不久之后我将会在ModelArts上将此模型搭建起来供大家参考。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。