VGG网络结构(二)

深度学习论文随记(二)---VGGNet模型解读

 

Very Deep Convolutional Networks forLarge-Scale Image Recognition

Author: K Simonyan , A Zisserman

Year: 2014

 

1、  导引

VGGNet是2014年ILSVRC竞赛的第二名,没错你没听错它是第二名,第一名是GoogLeNet(真不是我打错google,是谷歌为了纪念LeNet,所以用的大写L).为什么先讲VGG,因为它这个模型在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。它的缺点在于,参数量有140M之多,需要更大的存储空间。但是这个模型很有研究价值。

为什么叫VGG?

是牛津大学 Visual Geometry Group(视觉几何组)的同志写的论文,所以叫VGG.

 

 

2、  模型解读

VGG中的16指的是conv和FC的总和。

 

这张图的意思是他们一共建了A, B, C, D, E, F  6个不同的网络进行效果的比对。

注:在你看这里的时候我已经假设你看懂了AlexNet,已经对神经网络的结构有了个大致的印象。

 

 

 

结构A:和AlexNet类似,卷积层分为了5个stage,全连接层还是3层。只不过卷积层用的都是3x3大小的filter,具体的细节我会在下文接着阐述。

结构A-LRN:保留AlexNet里面LRN操作,其他与结构A无区别。

结构B:在A的stage2和stage3分别增加一个3x3的卷积层,共有10个卷积层。

结构C:在B的基础上,stage3,stage4,stage5分别增加一个1x1的卷积层,有13个卷积层,总计16层。

结构D:在C的基础上,stage3,stage4,stage5分别增加一个3x3的卷积层,有13个卷积层,总计16层。

结构E:在D的基础上,stage3,stage4,stage5分别再增加一个3x3的卷积层,有16个卷积层,总计19层。

 

 

 

对比

·A与A-LRN比较:A-LRN结果没有A好,说明LRN作用不大。

·A与B, C, D, E比较,A是这当中layer最少的,相比之下A效果不如B,C,D,E,说明Layer越深越好;

·B与C比较:增加1x1filter,增加了额外的非线性提升效果;

·C与D比较:3x3 的filter(结构D)比1x1(结构C)的效果好

 

3特点分析:(我们以最终的结构E来进行分析)

 

 

 

 

①可以看到共有5个池化层,所以可以把卷积部分视为5个部分,和AlexNet一样,只不过每一个部分他用了不止一层卷积层

所有卷积层都是同样大小的filter!尺寸3x3,卷积步长Stirde = 1,填充Padding = 1

为什么这么搞?

A、3x3是最小的能够捕获左、右、上、下和中心概念的尺寸;

B两个3x3的卷积层连在一起可视为5x5的filter三个连在一起可视为一个7x7

   这是卷积的性质,受过#信号系统#这门课摧残的同学应该记忆犹新

C、多个3x3的卷积层比一个大尺寸的filter卷积层有更多的非线性,使得判决函数更加具有判断性。

D、多个3x3的卷积层笔一个大尺寸的filter具有更少的参数

 

卷积层变多了。结构E有16层卷积层,加上全连接层共19层。这也是对深度学习继续往深处走的一个推动。

实际上卷积层越多的话,图像的细节信息的就能得到更好的提取,可以想象成拿放大镜把细节放大再放大?我不知道我这个比喻是否恰当,但是便于理解。

 

4、  Multi-scale训练

首先对原始图片进行等比例缩放,使得短边要大于224,然后在图片上随机提取224x224窗口,进行训练。由于物体尺度变化多样,所以多尺度(Multi-scale)可以更好地识别物体。

方法1:在不同的尺度下,训练多个分类器:

参数S为短边长。训练S=256和S=384两个分类器,其中S=384的分类器用S=256的进行初始化,且将步长调为10e-3

方法2:直接训练一个分类器,每次数据输入的时候,每张图片被重新缩放,缩放的短边S随机从[256,512]中选择一个。

Multi-scale其实本身不是一个新概念,学过图像处理的同学都知道,图像处理中已经有这个概念了,我们学过图像金字塔,那就是一种多分辨率操作

只不过VGG网络第一次在神经网络的训练过程中提出也要来搞多尺寸。目的是为了提取更多的特征信息。像后来做分割的网络如DeepLab也采用了图像金字塔的操作。


转载自 https://blog.csdn.net/Teeyohuang/article/details/75214758

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

情人节用python写个贪吃蛇安慰自己

这几天除了吃就是睡(不知道为啥,吃饱就想睡),从大年三十到现在感觉啥都没做,写个代码安慰安慰自己吧哈哈哈哈。给大家分享几部最近看的电影(要学英语的一定要get起来)——《彩虹照耀》《罗宾逊漂…

【测试】用例设计思路-输入框类型功能

在我们的测试中,设计测试用例的质量,不仅与需求说明书有关,而且与测试人员的测试能力有关,今天我们通过一个典型的案例,总结一下对于输入框类型的功能,如何设计测试用例。 如图所示:我们需要测…

python 随机数

python中随机数的用法总结第一部分:numpy中的random模块numpy.random.randn(d0, d1, ..., dn)生成标准正态分布。括号里是生成的随机数的维度。将会得到一个ndarray or float,(括号里空着就会得到一个float)>>numpy.random.randn(3,4)array([[-0.64094426, -0…

RuntimeError: Working outside of request context. This typically means that you attempted to use fun

菜吃多了醉了一、报错情况二、解决办法一、报错情况 我在写装饰器的时候运行报错: RuntimeError: Working outside of request context.This typically means that you attempted to use functionality that needed an active HTTP request. Consult the documen…

【Python】读写文件的操作

编程语言中,我们经常会和文件和文件夹打交道,这篇文章主要讲的是Python中,读写文件的常用操作: 一、打开文件 openFile open(../Files/exampleFile.txt, a) 说明: 1. 第一个参数是文件名称,包括路径,可以是相对路径…

测试开发——flask视图函数与路由 实战重点

开头必须分享一个我的志玲姐姐,太可了!点击此处 flask视图函数与路由的关系一、视图函数与路由 实战重点1.1 一个视图函数可以绑定多个URL地址1.2 视图装饰器应该放到最外层1.3所实现的装饰器要返回视图函数的返回值二、动态路由1. 用url匹配2. 通过传参…

【Python】文件夹的常用操作

上一篇文章主要讲了Python中,读写文件的常用操作,今天这篇文章主要讲的是关于文件夹的一些常用操作: 关于文件的操作,需要导入包:import os 文件操作: #1.创建相对路径的空文件,如果已有文件…

Python 中的range(),arange()函数

1.range()返回的是range object,而np.arange()返回的是numpy.ndarray() range 尽可用于迭代,而 np.arange 作用远不止于此,它是一个序列,可被当做向量使用。 2.range()不支持步长为小数,np.arange()支持步长为小数 3.两…

SyntaxError: Non-UTF-8 code starting with ‘\xe2‘ 今天是小白上线的一天

打代码的时候第一行的utf-8注释居然空了个格 # coding utf-8估计是甜甜的恋爱想傻了,我居然还去查自己错哪里了,还说我的编码是对的鸭 正确输入: # codingutf-8

【Python爬虫】Python3+selenium环境配置

在我们爬虫爬网过程中,我们需要用到Python3selenium,Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等操作。对于一些JavaScript渲染的页面来说,这种抓取方式非常有效。 文章参考…

numpy 数组与矩阵的乘法理解

1. 当为array的时候,默认d*f就是对应元素的乘积,multiply也是对应元素的乘积,dot(d,f)会转化为矩阵的乘积, dot点乘意味着相加,而multiply只是对应元素相乘,不相加 2. 当为mat的时候…

(AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

bug简直难过报错情况:由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。最终解决办法心得体会https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这…

【数据库】Window环境安装MySQL Server 5.7.21

正常我们在mysql官网下载安装的MySQL比较大,因为它集成了好多东西,尽管方便,但是东西比较多,有些我们可能不想要,这时我们可以直接下载单个MySQL Server安装,所以这篇文章主要介绍的就是在window环境下安装…

产品经理:论项目计划有多重要?——软件项目管理

凡事预则立,不预则废前言一、论安迪特质与项目经理的共通性二、个人感想三、我的产品经理实习笔试前言 昨天杨老师上了一让我记忆很深刻的课,就是项目计划的重要性,以《肖申克的救赎 》为例: 《肖申克的救赎 》的背景是20世纪30年代&#xff…

Python开发中有可能遇到的套接字重复使用错误

PyCharm开发中有可能遇到的套接字重复使用错误 windows下在PyCharm中执行python代码,如果源文件被修改后,执行窗口中的运行状态会被终结,重启时有可能报如下的错误: OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/…

Android开发环境配置介绍

在我们进行AppiumAndroid进行自动化测试时,我们需要安装android_sdk环境,安装过程发现Android SDK,Android studio,AVD Manager,SDK Manager等名词,本篇文章主要介绍的就是Android开发环境的搭建&#xff0…

python3 struct.pack方法报错argument for 's' must be a bytes object

在python3下使用struct模块代码 fileHead struct.pack(128sl, os.path.basename(filePath),os.stat(filePath).st_size); 1 抛出异常: argument for s must be a bytes object必须要是字节类型。 1 解决办法: 把字符串的地方转为字节类型,还要要先转…

python——百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

学习《python程序设计教程》的时候,遇到了这个问题,觉得还蛮好玩的: 百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少…

以知乎为例子来说明MVC是个啥

记得当时了解Web开发的MVC(Model-View-Controller)模式后,有一种心血喷涌的感觉,觉得太有意思了(程序员别喷,我就是这么没见过世面)。我们以知乎为例子来说明MVC是个啥:每个人的主页…

C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人

Fighting!一、C/S概念1.1 什么是C/S1.2 C/S与B/S的区别二、主页面三、介绍四、特征五、jServer六、jMessenger七、使用代码7.1 导入项目后报错情况7.2 解决办法一、C/S概念 1.1 什么是C/S C/S分布式模式,是计算机用语。C是指Client,S是指Server&#xf…