热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VGG入门

转载自深度学习之基础模型-VGGVGG论文给出了一个非常振奋人心的结论:卷积神经网络的深度增加和小卷积核的使用对网络的最终分类识别效果有很大的作用。记得在AlexN

转载自深度学习之基础模型-VGG

VGG论文给出了一个非常振奋人心的结论:卷积神经网络的深度增加和小卷积核的使用对网络的最终分类识别效果有很大的作用。记得在AlexNet论文中,也做了最后指出了网络深度的对最终的分类结果有很大的作用。这篇论文则更加直接的论证了这一结论。

作者Karen Simonyan & Andrew Zisserman来自Visual Geometry Group, Department of Engineering Science, University of Oxford


网络结构

这里写图片描述
[图片来源]

论文指出:


  • VGG不仅在ILSVRC的分类和检测任务中取得了the state-of-the-art的精度
  • 在其他数据集上也具有很好的推广能力

结构Architecture


名称说明
输入图像大小224x224
预处理减去均值
卷积核3x3,1x1
padding1 for 3x3
Max-pooling2x2 s-2
激活函数ReLU

说明:

*1x1卷积核:降维,增加非线性性*3x3卷积核:多个卷积核叠加,增加空间感受野,减少参数

论文中,作者指出,虽然LRN(Local Response Normalisation)在AlexNet对最终结果起到了作用,但在VGG网络中没有效果,并且该操作会增加内存和计算,从而作者在更深的网络结构中,没有使用该操作。

VGG网络结构
这里写图片描述

VGG网络参数
这里写图片描述

Q1: 为什么3个3x3的卷积可以代替7x7的卷积?


  • 3个3x3的卷积,使用了3个非线性激活函数,增加了非线性表达能力,使得分割平面更具有可分性
  • 减少参数个数。对于C个通道的卷积核,7x7含有参数72C2,参数大大减少

Q2: 1x1卷积核的作用


  • 在不影响感受野的情况下,增加模型的非线性性
  • 1x1卷机相当于线性变换,非线性激活函数起到非线性作用

Q3: 网络深度对结果的影响(同年google也独立发布了深度为22层的网络GoogleNet)


  • VGG与GoogleNet模型都很深
  • 都采用了小卷积
  • VGG只采用3x3,而GoogleNet采用1x1, 3x3, 5x5,模型更加复杂(模型开始采用了很大的卷积核,来降低后面卷机层的计算)

模型框架

VGG采用了min-batch gradient descent去优化multinomial logistic regression objective


名称说明
batch size256
momentum0.9
learn rate102)
max iterations370K/74epochs

正则化方法:


  • 增加了对权重的正则化,5104||W||L2
  • 对FC全连接层进行dropout正则化,dropout ratio = 0.5

说明:虽然模型的参数和深度相比AlexNetyou 了很大的增加,但是模型的训练迭代次数却要求更少:a)正则化+小卷积核,b)特定层的预初始化

初始化策略:


  • 首先,随机初始化网络结构A(A的深度较浅)
  • 利用A的网络参数,给其他的模型进行初始化(初始化前4层卷积+全连接层,其他的层采用正态分布随机初始化,mean=0,var=102, biases = 0)最后证明,即使随机初始化所有的层,模型也能训练的很好

训练输入:
采用随机裁剪的方式,获取固定大小224x224的输入图像。并且采用了随机水平镜像和随机平移图像通道来丰富数据。

Training image size: 令S为图像的最小边,如果最小边S=224,那么做完224x224区域随机裁剪后,每张裁剪图,只能覆盖原图的一小部分内容。
注:因为训练数据的输入为224x224,从而图像的最小边S,不应该小于224

数据生成方式:首先对图像进行放缩变换,将图像的最小边缩放到S大小,然后


  • 方法1: 在S=224和S=384的尺度下,对图像进行224x224区域随机裁剪
  • 方法2: 令S随机的在[Smin,Smax])

预测方式:作者考虑了两种预测方式:


  • 方法1: multi-crop,即对图像进行多样本的随机裁剪,然后通过网络预测每一个样本的结构,最终对所有结果平均
  • 方法2: densely, 利用FCN的思想,将原图直接送到网络进行预测,将最后的全连接层改为1x1的卷积,这样最后可以得出一个预测的score map,再对结果求平均

上述两种方法分析:


  • Szegedy et al.在2014年得出multi-crops相对于FCN效果要好
  • multi-crops相当于对于dense evaluatio的补充,原因在于,两者在边界的处理方式不同:multi-crop相当于padding补充0值,而dense evaluation相当于padding补充了相邻的像素值,并且增大了感受野
  • multi-crop存在重复计算带来的效率的问题

While we believe that in practice the increased computation time of
multiple crops does not justify the potential gains in accuracy.
最终,作者认为相对于multi-crop的在精度上的提高并不能弥补其在计算量上的消耗,但作者最后还是对比了这两种方法的效果



效果分析


单尺度

这里写图片描述
结论:


  • 模型E(VGG19)的效果最好,即网络越深,效果越好
  • 同一种模型,随机scale jittering的效果好于固定S大小的256,384两种尺度,即scale jittering数据增强能更准确的提取图像多尺度信息

多尺度

这里写图片描述

结论:


  • 对比单尺度预测,多尺度综合预测,能够提升预测的精度
  • 同单尺度预测,多尺度预测也证明了scale jittering的作用

多尺度裁剪

这里写图片描述

结论:


  • 数据生成方式multi-crop效果略优于dense,但作者上文也提高,精度的提高不足以弥补计算上的损失
  • multi-crop于dense方法结合的效果最后,也证明了作者的猜想:multi-crop和dense两种方法互为补充

模型融合

这里写图片描述

结论:


  • 通过多种模型融合输出最终的预测结果,能达到the state-of-the-art的效果

对比

这里写图片描述
结论:


  • 与其他模型对比发现,VGG也能达到非常好的效果。

总结

作者指出,VGG模型不仅能够在大规模数据集上的分类效果很好,其在其他数据集上的推广能力也非常出色。


参考文献

[1].https://arxiv.org/pdf/1409.1556.pdf
[2].http://blog.csdn.net/wangsidadehao/article/details/54311282
[3].http://www.360doc.com/content/17/0624/10/10408243_666125650.shtml
[4].https://www.cs.toronto.edu/~frossard/post/vgg16/
[5].http://www.jianshu.com/p/9c6d90e4f20e


推荐阅读
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
author-avatar
丁扣其
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有