VGG网络结构(一)

刚开始接触深度学习、卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络:

本文思路:


一、我认为学习卷积神经网络必须知道的几个概念:

1、卷积过程:

  我们经常说卷积神经网络卷积神经网络,到底什么才是卷积?网络层卷积过程到底怎么实现?我们在这里借鉴了另一位博客大牛的动态图来给大家演示一下,

  图作者文章在此:http://blog.csdn.net/silence1214/article/details/11809947

我们可以看到,卷积过程其实还是基于一个固定的矩阵,在另外一个矩阵不断一格一格扫过去的到的数值的和,(注意:这里的一格一格非常重要,因为涉及后面的概念:步长→我们不妨想一想当固定矩阵不是一格一格前进的时候,会发生什么呢?)产生的一个新的矩阵,我们以作为比较会发现:粉红色矩阵和绿色矩阵在根本上有很大不一样,

第一,卷积之后的维数降低了;第二,我们要想想为什么降维了?(思考:降低维度到底有没有规律?)

  答案是有的:我们发现橙色的固定框为3*3,绿色是5*5,出来是三乘三;

  所以规律可以得到:粉红色最后的卷积结果矩阵维度=绿色矩阵维数-橙色矩阵维数+1

  (我们又应该思考:如果我不想最后减少维度,我只希望卷积,怎么办呢?)

2、两层之间的池化:

  我们依然延用博客大牛的另一个动图(再次点赞做的精细准确!)


我们可以发现其实跟之前没什么不一样:还是以三个矩阵之间的运算,但是我们很容易发现,它并不是一行一行扫过去的,橙色矩阵维度是黄色矩阵的整数倍,所以池化的最终的结论是要把原来的维度减少到1/n.这是池化最根本的原理(当然也有特殊情况。)

(思考点:我们想象一下如果一个19*19的矩阵做池化,会是一种什么样的体验呢?我们不可以缩小整数倍!!答案会在后面的VGG16里面讲清楚,不急不急吐舌头吐舌头吐舌头


3、第三个知识点是步长的概念:

  卷积核(后面讲到VGG16会介绍)移动的步长(stride)小于卷积核的边长(一般为正方行)时,变会出现卷积核与原始输入矩阵作用范围在区域上的重叠(overlap),卷积核移动的步长(stride)与卷积核的边长相一致时,不会出现重叠现象。

  通俗一点其实就是:刚刚说的那个粉红色矩阵,他每一次移动多少格,格子就是步长!!

4、卷积核:

  一个听起来很高大上的词语,我们依然用之前的基础来解释:通俗易懂:就是粉红色矩阵的个数!!因为有时候我们要提取的特征非常多非常广泛,所以需要我们用更多的矩阵来扫(多扫几遍),那么粉红色矩阵的个数就是卷积核个数。

5、Padding:

  这个应该是最抽象的概念了:但是也不会特别难呢,就是我们在之前讲到第一点:卷积的时候,我抛下了一个问题:

 (我们又应该思考:如果我不想最后减少维度,我只希望卷积,怎么办呢?)(现在知道括号的重要性了吧哈哈?骂人骂人骂人

  现在我们来解决这个问题:比如:我们需要做一个300*300的原始矩阵,用一个3*3卷积核(粉红色矩阵)来扫,扫出来,按照之前公式,结果的矩阵应该是:298*298的矩阵,但是这样很难计算,减得也不多,反而增加我计算难度,还不如池化(pooling)来得干脆是吧!那我们就在300*300矩阵外面周围加一圈“0”,记住,是在外面外包一层“0”

重点是:这样的300*300就变成了302*302的矩阵,这样就可以完全避开卷积后那两层的抵消。

6、还有一个就是通道的概念:这个不算知识点,仅仅是一个常识词语,比如一张图片,有RGB三种颜色,对应三个灰度级别,也就是三个通道了:

更加抽象的图可以参照下面的结构:


二、等待已久的VGG16:

VGG16分为16层,我们主要讲前面的前几层(越详细越好吧,后面是一样的)

——首先教会大家一个看其他神经网络也是用的办法:官方数据表格:


看懂一些式子表达:

Conv3-512   →    第三层卷积后维度变成512;

Conv3_2 s=2     →     第三层卷积层里面的第二子层,滑动步长等于2(每次移动两个格子)

好了,我们有了以上的知识可以考试剖析VGG16卷积神经网络了


三、利用之前的基本概念来解释深层的VGG16卷及网络;

【1、从INPUT到Conv1:】


首先两个黄色的是卷积层,是VGG16网络结构十六层当中的第一层(Conv1_1)和第二层Conv1_2,他们合称为Conv1。

我们主要讲述第一个,也就是第一层(Conv1_1),它怎么把一个300*300*3的矩阵变成一个300*300*64的矩阵?


我们假设蓝色框是一个RGB图像,橙色是一个3*3*3的卷积核,我们对一个三维的27个数求和,然后扫过去,按照第一部分算的得出来的是一维的298*298的矩阵(因为卷积核也是三维所以结果是一维);

然后回想一下什么是Padding、前面也讲过它的概念了;所以不了一圈的圆,回到了300*300*1;

然后,VGG16这一层安置有64个卷积核,那么,原来的300*300*1变成300*300*64

于是我们的到了想要的东西;最后的绿色框;

【1、从Conv1到Conv2之间的过度:】


这一步用的Pooling是:2*2*64 s=2;

也就是说,步长是二,滑动的矩阵本身没有重叠;刚好减半,第三维度64不变;

【3、顺利来到Conv2并且结构完全一样进入Conv3:】

我们知道原来INPUT是300*300*3过了第一层出来时150*150*64

那么第二层仍然有池化有128个卷积核,联想推理:

出来的应该是75*75*128;这一步没有问题,我们继续往下分析:

【4、进入Conv3的推演:】


可以知道第三层有256个卷积核,包含三层小的卷基层:

【5、从Conv3到Conv4之间的过度:】


池化没有问题,但是这里75不是一个偶数怎么弄,还记得我们第一部分前面的括号吗?

就是这样,我们在75这里相加了一个一,使之成为76,变成一个偶数,还有一种方法是通过步长的设置这里先不展开来讲了;

【6、后续的步骤】

  后面的方法很简单,根据我给的那个VGG16的表格查找每一层里面有什么卷积核?多少个?池化的大小?步长多少?是否需要Padding?解决这些问题,你的VGG16就已经完全可以从头到尾说清楚了!!!

【7、Faster Rcnn的例子】

http://blog.csdn.net/errors_in_life/article/details/70916583
转载自https://blog.csdn.net/Errors_In_Life/article/details/65950699

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

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

相关文章

测试开发——flask快速入门小基础

这几天看群里面的大佬基本上个个被逼相亲,可爱小娟娟还一天相四次(简直了),我们程序员也是很帅的很美的,其实我们的头发也挺多的哈哈哈哈(至少我身边的程序员挺多头发的,当然我linux老师头发有点…

【文章】鱼那么信任水, 水却煮了鱼!

鱼那么信任水, 水却煮了鱼。 叶子那么信任风, 风却吹落了叶。 人心的冷暖, 总是一直变幻。 熟悉的陌生了, 陌生的走远了。 人与人之间, 全靠一颗心, 情与情之间, 全凭一寸真。 落叶知秋…

VGG网络结构(二)

深度学习论文随记(二)---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K Simonyan , A Zisserman Year: 2014 1、 导引 VGGNet是2014年ILSVRC竞赛的第二名,没错你没听错它是第…

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

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

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

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

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…

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

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

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…

Android开发环境配置介绍

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

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…

【文章】浅相遇,薄相知,淡相守,终难忘

浅相遇 人生犹如一场戏,在每一个转折点,总有意想不到的邂逅。 有的相遇成歌,注定了在这绻绻红尘中,相携而去。有的转身为念,注定了行色匆匆,独自而行。 其实,上苍是公平的。在为我们关上一扇…

学习python 正则表达式——与你同行!

正则表达式定义 又称为规则表达式,是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个‘规则’,检查一个字符串是否与这种规则匹配来实现对字符的检索、过滤、匹配、替换。正则表达式需要用到re模块,该模块…

python 编译procto错误处理

运行:python -m grpc_tools.protoc --proto_path. --python_out. --grpc_python_out. helloworld.proto 出现如下错误: helloworld.proto: No such file or directory 解决方案: 解决方法一: cd 到helloworld.proto 的根目录 …