1. 导读

前面我们回顾了AlexNet,AlexNet的作者指出模型的深度很重要,而VGG最大的贡献就在于对网络模型深度的研究。

VGG原论文:《Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG模型是2014年ILSVRC竞赛的第二名,第一名是GoogLeNet。但是VGG其规律的设计、简洁可堆叠的卷积块,且在其他数据集上都有着很好的表现,从而被人们广泛应用,同时在多个迁移学习任务中的表现要优于googLeNet。而且,从图像中提取CNN特征,VGG模型是首选算法。

2. 网络结构

这是论文中作者给出的VGG的6种不同网络结构:

VGG-16示意图如下,整体来说整个网络可分为5个block,每个block由卷积+池化组成,然后进入3个全连接层再接softmax实现分类:

我们以VGG-16为例来解读其网络结构:

  • VGG-Block内的卷积层都是相同的结构,其中都是统一通过size为3×3的kernel size + stride1 + padding(same)实现,意味着输入和输出的尺寸一样,且卷积层可以堆叠复用。
  • MaxPool层统一的pool size=2,stride=2,起到的作用是将前面的卷积层的特征缩减一半,从224-112-56-28-14-7.
  • 输入层: 输入为224×224×3 三通道的图像。
  • Block1: 输入为224×224×3,2个卷积层分别经过64个kernel size为3x3×3的filter,stride = 1,padding=same卷积后得到shape为224×224×64;再经Max-pooling层:pool size=2,stride=2的减半池化后得到尺寸为112×112×64的池化层。
  • Block2:输入尺寸为112×112×64,2个卷积层分别经128个3×3×64的filter,stride = 1,padding=same卷积后得到shape为112×112×128;再经Max-pooling层:pool size=2,stride=2的减半池化后得到尺寸为56×56×128的池化层。
  • Block3:输入尺寸为56×56×128,3个卷积层分别经256个3×3×128的filter,stride = 1,padding=same卷积后得到shape为56×56×256;再经Max-pooling层:pool size=2,stride=2的减半池化后得到尺寸为28×28×256的池化层。
  • Block4:输入尺寸为28×28×256,3个卷积层分别经512个3×3×256的filter,stride = 1,padding=same卷积后得到shape为28×28×512;再经Max-pooling层:pool size=2,stride=2的减半池化后得到尺寸为14×14×512的池化层。
  • Block5:输入尺寸为14×14×512,3个卷积层分别经512个3×3×512的filter,stride = 1,padding=same卷积后得到shape为14×14×512;再经Max-pooling层:pool size=2,stride=2的减半池化后得到尺寸为7×7×512的池化层,该层后面还隐藏了flatten操作,通过展平得到7×7×512=25088个参数后与之后的全连接层相连。
  • FC:经过3个全连接层,神经元个数分别为4096,4096,1000。其中前两层在使用relu后还使用了Dropout对神经元随机失活,最后一层全连接层用softmax输出1000个分类。

3. 论文总结

  • 网络深度对模型分类性能有提高:作者做了实验,网络从11层19层,网络深度增加对top1和top5的错误率下降很明显。最佳模型:VGG-16

  • 多个小卷积核比单个大卷积核好:相较与AlexNet,VGG最大的改进或者说区别就是用小size的Filter代替大size的Filter。2个3x3的卷积层连接,就达到了5x5的效果,3个3x3的卷积层连接,就达到了7x7的效果;多个小卷积比单个大卷积好在两个方面:1:可以减少参数,例如使用3个3x3卷积参数个数:3(3x3xCxC),单个7x7卷积层参数个数,后者参数量大81%:7x7xCxC;2:这样做相当于进行了更多的非线性映射,可以增加网络的拟合和表达能力。

  • 删除了AlexNet中的LRN层:没有使用AlexNet中的LRN技术。这是因为后面的实验(如上图中的A和A-LRN)中证明了使用LRN对性能并没有提升作用,反而增加内存和时间消耗。

  • 图像预处理:在模型训练期间,作者所做的唯一预处理就是将输入的224×224×3通道的像素值,减去平均RGB值,为了增加数据集,和AlexNet一样,这里也采用了随机水平翻转和随机RGB色差进行数据扩增。对经过重新缩放的图片随机排序并进行随机剪裁得到固定尺寸大小为224×224的训练图像。

4. 代码实现

为了加深对VGG网络的理解,我基于pytorch框架使用了与我上一篇AlexNet博客中同样的数据集去对VGG16进行测试,其demo你可以点击这里在github上访问;

论文日记二:VGG的更多相关文章

  1. 论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification

    论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification 目前,阅读理解通常会给出 ...

  2. oracle入坑日记<二>认识oracle(含sqlplus基础使用)

    1.SID(数据库实例) 1.1. oracle安装的时候有一项叫[全局数据库名]的填写项,这个就是oracle的SID也是数据库的唯一标识符: 1.2.一个oracle数据库有且只有一个SID(一般 ...

  3. 【LaTeX排版】LaTeX论文排版<二>

    1.目录的生成     直接使用命令\tableofcontents即可.其默认格式如下: 我们会发现,这样的格式不一定是我们所期望的.比如说,我们也希望章标题与页码之间也有点连线,并且也希望将致谢. ...

  4. Linux学习日记(二)

    在linux上运行.Net程序 并安装Linux网站 一.环境 ubuntu14.10(桌面版 官网下载的最新版) jexus5.6.3 正式版 MonoDevloper (安装完后里面有个Ubunt ...

  5. AC日记——二叉堆练习3 codevs 3110

    3110 二叉堆练习3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给定N(N≤500,000)和N个整 ...

  6. 转:Google论文之二----Google文件系统(GFS)翻译学习

    文章来自于:http://www.cnblogs.com/geekma/archive/2013/06/09/3128372.html 摘要 我们设计并实现了Google文件系统,它是一个可扩展的分布 ...

  7. Linux管理日记(二)

    14  启动内网端口转发 ### 2. 查看IP以及网卡信息 # 可以发现, eth0 的地址 inet addr:10.144.7.195, 此为内网网卡 # 公网网卡, eth1 的地址 inet ...

  8. UnderWater+SDN论文之二

    ---- Software-defined underwater acoustic networking platform and its applications source: Ad Hoc Ne ...

  9. PS日记二(调色:色阶,曲线,色相/饱和度,色彩平衡,蒙板)

    基础知识一:在PS操作中为什么要复制图层(ctrl+J)? 答:复制图层主要是为了 备份原图层,在副本中进行操作 如果说你副本弄坏了,还有原来的PS复制图层一方面是保全原图.二是因为图层是ps操作的基 ...

  10. Python学习日记(二十八) hashlib模块、configparse模块、logging模块

    hashlib模块 主要提供字符加密算法功能,如md5.sha1.sha224.sha512.sha384等,这里的加密算法称为摘要算法.什么是摘要算法?它又称为哈希算法.散列算法,它通过一个函数把任 ...

随机推荐

  1. 【HALF】CSP-S2 2022 游记 - Dawn Eve?

    相册放在 NOIP2022 游记 了 Day -2 周三.折腾了好几天,考场从深圳换到广州最后换到东莞.疫情爆炸... 只是希望自己最后两场比赛不会受到影响. 下午是高二体锻课,结果我们得去做核酸.四 ...

  2. PyInstaller打包的文件闪退

    问题描述:使用PyInstaller打包的pycharm写的python程序,打包好后从windows上打开一直闪退 一.双击exe文件闪退,从cmd命令行中与加载程序,可以看到具体的报错 D:\di ...

  3. MySQL(四)用户与权限管理

    用户与权限管理 用户管理 MySQL用户分为普通用户和root用户,提供了许多语句来管理包括登录.退出MySQL服务器.创建用户.删除用户.密码管理和权限管理等内容. 登录MySQL服务器 mysql ...

  4. 学会提示-AI时代职场必修课

    作者:京东 何雨航 " 上个时代要学会提问,这个时代要学会提示." 引言 当你在写提数代码时,小张已经完成了数据分析:当你正在整理材料时,小王却在和对象逛环球影城:述职时,你发现小 ...

  5. 2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装

    目录 前景提示 windows 10 内置的linux系统 1.这个内置系统一定要在windows store里安装,否则,无法使用,这是重点.进入商店,搜索linux. 2.一般画圈这些都可以使用. ...

  6. 20-优化配置介绍、HMR

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 HMR 优化代码调试 source-map 生产环境性能优化 优化打包构建速度 oneOf babel缓 ...

  7. windows查看占用端口

    1. 查看占用 执行:netstat -ano 或者 netstat -aon|findstr 8080 2. 查看指定 PID 的进程 tasklist|findstr 3104 3. 结束进程 t ...

  8. python轻量级性能工具-Locust

    Locust基于python的协程机制,打破了线程进程的限制,可以能够在一台测试机上跑高并发 性能测试基础 1.快慢:衡量系统的处理效率:响应时间 2.多少:衡量系统的处理能力:单位时间内能处理多少个 ...

  9. Prism Sample 9 ChangeConvention

    上个例子跳过了ViewModelLocator,因是采用约定的方式最为方便. 如果有人要修改约定,自定义view和viewModel的默认自动定位方式,怎么办呢? 在app.xaml.cs重写以下方法 ...

  10. Win10系统Anaconda下tensorflow的GPU环境搭建

    我的环境:Win10 + Anaconda + tensorflow-gpu1.14 + CUDA10.0 + cuDNN7.6 + python3.6 注意:tensorflow版本.CUDA版本. ...