VGGNet阅读笔记

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION


introduction

文章主要研究了卷积神经网络深度对于实际效果的影响,采用了一个3*3小尺寸卷积核,固定了其它参数,逐渐增加网络深度,在ILSVRC数据集上进行实验。

读完这篇论文应该明白以下几个问题:
1.为什么卷积网络中有时候会采用1*1的卷积?有什么作用?
2.大尺寸的卷积可以用小尺寸卷积替代吗?或者说大的感受野可以用几个较小感受野替代吗?
3.深度对于卷积神经网络的影响?如何设计卷积核大小?
4.LRN(from ALexNet)有没有起到作用?

一、why?

随着卷积神经网络的兴起,已经有人进行了采用较小感受野(receptive window size)和较小stride的研究,并且取得不错成果。
本文主要研究网络深度的影响,这一论文结果也基本奠定了以后网络的基本结构,给了我们很多设计上的启发,例如卷积核大小选取。

For instance, the best-performing submissions to the ILSVRC-
2013 (Zeiler & Fergus, 2013; Sermanet et al., 2014) utilised smaller receptive window size and smaller stride of the first convolutional layer。

二、overall Architecture

2.1 architecture

整个训练过程中输入大小是224224 RGB image, 唯一做的预处理就是每个像素减去了在训练集上得到RGB均值。经过了一大堆的卷积操作,使用了非常小的感受野33(which is the smallest size to capture the notion of left/right, up/down,center),在某一项配置中使用1*1卷积(可以看为输入通道的线性变换),增加padding保持卷积后空间分辨率不变,例如3x3卷积padding是1,池化使用最大池化(不是所有卷积后边都使用最大池化),最大池化采用2x2,stride为2.

卷积操作后是3个全连接层,前两个都拥有4096个通道,最后一个是1000(分类就是1000,当然包含1000个通道),最后一层是softmax 。

所有隐藏层使用Relu函数,值得注意得是作者提到在结构中只有一个使用了LRN,因为使用LRN在ILSVRC Dataset上表现并没有明显提升,反而增加了内存损耗和计算时间。作者又说在适用的情况下可以参考Alexnet。(踢皮球踢回去了,也没说到底有用没有)

2.2 configuration

如表格1所示,我们的参数配置从11 weight layers to 19 weight layers ,表格2展示了每一种配置对应的参数数目大小。

代码如下(示例):

深度变化图与参数图

2.3 Discussion

本文使用的卷积配置不同于以往使用的结构,以前都使用(e.g. 11×11 with stride 4 in (Krizhevsky et al., 2012), or 7×7 with stride 2 in (Zeiler & Fergus,
2013; Sermanet et al., 2014)),整个网络中都用33 的感受野,可以看到两个33 重叠卷积相当于一个55的卷积,3个33conv就相当于一个7*7的卷积(具体见附录),那么这么做有什么好处呢?

1.首先,这样做就可以有3个非线性整流单元(e.g Relu)而不是一个,可以大大增加模型的判别能力。

2. 减少模型参数(decrease the number of parameters):
assuming that both the input and the output of a three-layer 3 × 3 convolution stack has C channels, the stack is parametrised by 3 ( 3 2 C 2 ) = 27 C 2 3(3^{2}C^{2})=27C^{2} 3(32C2)=27C2 weights; at the same time, a single 7 × 7 conv. layer would require 7 2 C 2 = 49 C 2 7^{2}C^{2}=49C^{2} 72C2=49C2 parameters.

小尺寸卷积也被其他人使用过,要不就是比本文复杂(GoogLeNet (Szegedy et al., 2014)),要不就是没有本文性能好,深度也不如本文(Ciresan et al. (2011))。

三.总结

相比较而言,VGGNet的参数数量还是太多了,所以比较难以处理。但是,VGGNet提供了简单统一的网络结构标准,即所有的卷积核大小都是3x3的。而且MAxPooling都是每2(也有3次的)次卷积之后进行一次,卷积核的数量在每次maxpooling之后都翻一倍。此外,VGGNet最重要的贡献是证明了分类任务可以通过使用小的卷积核增加CNN的深度来提高精度。同时,作者公开了VGGNet的最好的两种权重配置,它的预训练结果被用来处理很多任务。也作为特征抽取的基准被很多研究对比使用。

这篇论文基于大规模图像识别对卷积网络深度进行了多达19层的研究,结果表明深度有利于提高图像分类精度,以及在ImageNet挑战数据集上的性能可以使用传统的ConvNet架构增加深度实现(LeCun等人,1989;Krizhevsky等人,2012)。文章还展示了模型可以很好地推广到广泛的任务和数据集中。

四.Appendix

receptive window

假设输入的size为n,那么kernel size :3x3, stride:1的conv扫描一次的结果是(n-3)/1+1 = n-2,再扫描一次就是(n-2-3)/1+1=n-4。如果卷积核是5x5,那么扫描一次就是(n-5)/1+1 = n-4。其结果是一样的。VGGNet思想就是用更小更深的卷积核代替大的卷积核。

参考1点击获取介绍–感受野与重叠
参考2VGGNet简介

热门文章

暂无图片
编程学习 ·

exe4j详细使用教程(附下载安装链接)

一、exe4j介绍 ​ exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏…
暂无图片
编程学习 ·

AUTOSAR从入门到精通100讲(126)-浅谈车载充电系统通信方案

01 引言 本文深入研究车载充电系统策略,设计出一套基于电动汽车电池管理系统与车载充电机的CAN通信协议,可供电动汽车设计人员参考借鉴。 02 电动汽车充电系统通讯网络 电动汽车整车控制系统中采用的是CAN总线通信方式,由一个整车内部高速CAN网络、内部低速CAN网络和一个充电…
暂无图片
编程学习 ·

CMake(九):生成器表达式

当运行CMake时,开发人员倾向于认为它是一个简单的步骤,需要读取项目的CMakeLists.txt文件,并生成相关的特定于生成器的项目文件集(例如Visual Studio解决方案和项目文件,Xcode项目,Unix Makefiles或Ninja输入文件)。然…
暂无图片
编程学习 ·

47.第十章 网络协议和管理配置 -- 网络配置(八)

4.3.3 route 命令 路由表管理命令 路由表主要构成: Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低Genmask:目标网络对应的netmaskIface: 到达对应网络,应该从当前主机哪个网卡发送出来Gateway: 到达非直连的网络,…
暂无图片
编程学习 ·

元宇宙技术基础

请看图: 1、通过AR、VR等交互技术提升游戏的沉浸感 回顾游戏的发展历程,沉浸感的提升一直是技术突破的主要方向。从《愤怒的小鸟》到CSGO,游戏建模方式从2D到3D的提升使游戏中的物体呈现立体感。玩家在游戏中可以只有切换视角,进而提升沉浸…
暂无图片
编程学习 ·

flink的伪分布式搭建

一 flink的伪分布式搭建 1.1 执行架构图 1.Flink程序需要提交给 Job Client2.Job Client将作业提交给 Job Manager3.Job Manager负责协调资源分配和作业执行。 资源分配完成后,任务将提交给相应的 Task Manage。4.Task Manager启动一个线程以开始执行。Task Manage…
暂无图片
编程学习 ·

十进制正整数与二进制字符串的转换(C++)

Function one: //十进制数字转成二进制字符串 string Binary(int x) {string s "";while(x){if(x % 2 0) s 0 s;else s 1 s;x / 2;}return s; } Function two: //二进制字符串变为十进制数字 int Decimal(string s) {int num 0, …
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统: 微信小程序——辩论管理前台涉及技术:WXML 和 WXS…
暂无图片
编程学习 ·

树莓派驱动DHT11温湿度传感器

1,直接使用python库 代码如下 import RPi.GPIO as GPIO import dht11 import time import datetimeGPIO.setwarnings(True) GPIO.setmode(GPIO.BCM)instance dht11.DHT11(pin14)try:while True:result instance.read()if result.is_valid():print(ok)print(&quo…
暂无图片
编程学习 ·

ELK简介

ELK简介 ELK是三个开源软件的缩写,Elasticsearch、Logstash、Kibana。它们都是开源软件。不过现在还新增了一个 Beats,它是一个轻量级的日志收集处理工具(Agent),Beats 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstas…
暂无图片
编程学习 ·

Linux 基础

通常大数据框架都部署在 Linux 服务器上,所以需要具备一定的 Linux 知识。Linux 书籍当中比较著名的是 《鸟哥私房菜》系列,这个系列很全面也很经典。但如果你希望能够快速地入门,这里推荐《Linux 就该这么学》,其网站上有免费的电…
暂无图片
编程学习 ·

Windows2022 无线网卡装不上驱动

想来 Windows2022 和 windows10/11 的驱动应该差不多通用的,但是死活装不上呢? 搜一下,有人提到 “默认安装时‘无线LAN服务’是关闭的,如果需要开启,只需要在“添加角色和功能”中,选择开启“无线LAN服务…
暂无图片
编程学习 ·

【嵌入式面试宝典】版本控制工具Git常用命令总结

目录 创建仓库 查看信息 版本回退 版本检出 远程库 Git 创建仓库 git initgit add <file> 可反复多次使用&#xff0c;添加多个文件git commit -m <message> 查看信息 git status 仓库当前的状态git diff 差异对比git log 历史记录&#xff0c;提交日志--pret…
暂无图片
编程学习 ·

用Postman生成测试报告

newman newman是一款基于nodejs开发的可以运行postman脚本的工具&#xff0c;使用Newman&#xff0c;可以直接从命令运行和测试postman集合。 安装nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 选择自己系统相对应的版本内容进行下载&#xff0c;然后傻瓜式安…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…