文章目录

  • 前言
  • 第1页
    • 摘要与引言
  • 第2页
    • 文献综述
  • 第3-4页
  • 第4-5页
    • inception模块细节
  • 第5-7页
    • GoogLeNet
  • 第8页
    • 训练细节
  • 第8-10页
    • ILSVRC 2014

inception系列:

  • inceptionV1 & GoogleNet 精读
  • inceptionV2 & BN 精读
  • inceptionV3 精读
  • inceptionV4 精读
  • xception 精读

前言

论文题目: Going Deeper with Convolutions

Googlenet论文原文地址:https://arxiv.org/pdf/1409.4842.pdf

之前看过VGG的论文(VGG精读直达)。当时VGG获得了 2014 ILSVRC 图像分类的第二名,今天来看一下第一名,也就是大名鼎鼎的 Googlenet,,并且这篇论文还是后续各种神经网络模型改版的基础,比如inception V2V3V4,inception-resnet,xception等等。

Googlenet的错误率都达到了人类的水平,5%-10%的错误率。

在查资料的时候,发现一个彩蛋,论文原名 GoogLeNet LN都是大写 最后是LeNet,据说是为了向LeNet致敬?
还有一个彩蛋就是 这篇论文的关键点 inception,其灵感来源于NiN网络 和 盗梦空间(inception) 并且引用了其中的台词,可以在参考文献的第一个条目中看到这个表情包:

第1页

摘要与引言

摘要提出了这篇论文的核心 inception,定义为一个特殊网络的代号。并说了一下主要特点是提高了网络内部计算资源的利用率,在增加了网络的深度和宽度的情况下使网络计算资源不变(或减少)。

GoogLeNet 是作者在 2014年ILSVRC 提交中应用的一个特例。

GoogLeNet 网络深度达到22层,加上池化有27层,算上inception内部 有100层。

虽然层数比VGG多了很多,但是参数量却变少了, GoogLeNet 500万个(5M),VGG16参数是138M,AlexNet参数大约60M。

摘要中有一句话 the architectural decisions were based on the Hebbian principle and the intuition of multi-scale processing.

这里的 Hebbian principle (赫布理论) :神经科学上的概念,简单讲就是 神经元突触的‘用进废退’,两个神经元,如果总是同时兴奋,就会形成一个组合,其中一个神经元的兴奋会出尽另一个的兴奋。反映在inception上就是把相关性强的特征汇聚的一起。

还有一个词: multi-scale processing (多尺度处理): 不同尺度卷积核并行处理。

引言的最后夸了夸自己,· on which it significantly outperforms the current state of the art. 我吊打你们

第2页

文献综述

作者简单的介绍了一下他设计出的inception的灵感来源,一个是从前人的研究内容(一系列固定的不同大小的卷积核来处理多尺度)。

还有一个灵感来源是 从NiN网络中的 1 * 1卷积核,这个卷积核之前在VGG里详细的理解了一下,在这作用是降维,增加网络深度,减少运算量(但是在VGG里没有升降维的作用,仅增加深度作用)。

第三个灵感是从R-CNN中,改进了R-CNN的两阶段方法(1.框出候选区域,2.每个区域卷积) 运用到自己的模型中了。

第3-4页

说了一下训练网络的问题,一个是数据不好准备(and 数据量过大造成的过拟合问题),还有一个是精度和计算效率之间的平衡问题。
解决这些问题的一个重要手段: 用稀疏连接代替密集连接
其中两点:

  • 第一点就是开头提到的那个赫布理论,开头已经说到过了,就是汇总同时或者强关联激活的各部分。在神经网络中,比如有只狗。当识别出来这是只狗的时候,一定是狗的腿啊眼睛啊身体啊这些部位一起组合识别的,也就是这些特征一起激活 融合判断。
  • 第二点就是 GPU和CPU都是密集计算优势,通过赫布学习法则用稀疏代替密集,如何又利用硬件的密集计算优势,又能设计稀疏的模型结构呢?

论文中给了一张图,用来说明数据标注是很麻烦的事:
就是这两狗。我一看,好家伙这不是俩二哈吗?哈哈

用知云翻译了一下, 左边:西伯利亚雪橇犬 。右边:爱斯基摩狗

这种图片一般人难以分辨,需要找对应领域专家的话,天天去标注这个玩意,确实是比较麻烦的事。

第4-5页

inception模块细节

inception的结构主要设计思想是: 用密集模块去近似局部稀疏结构 ,聚合高相关性的特征输入到下一层。这样既达到了稀疏连接 又可以一定程度上的利用硬件计算优势。

设计出了最初的inception版本:

可以看到,最初的版本由 11卷积,33卷积,55卷积,33最大池化组成,特征图先被复制成4份并分别被传至接下来的4个部分,然后利用大小不同的卷积核实现不同尺度的感知,最后进行融合。

在对上面这四个小块进行融合的时候,要保证输出的长和宽都是一样的,这样才方便融合,用padding就行了。

四个途径的池化结果合并后会导致特征通道数变大,数据量逐层大量增加。为了减少参数量,作者在NiN里受到启发,使用了 1 * 1的卷积核进行卷积,达到降维,减少参数的作用,于是有了后续版本。

使用 1 * 1 卷积核的思想 也称为Pointwise Conv,简称PW。

改进后的inception:

相比于最初的版本就是增加了一层 1 * 1卷积核,降低一波参数。

inception的位置: 网络开始使用普通卷积层,之后再堆叠inception模块,因为使用了改进版, 加入了 1 * 1卷积,所以并没有使参数爆炸,这样就达到了多尺度并行信息处理再融合的目的。

第5-7页

GoogLeNet

开头第一句就是呼应LeNet的那个彩蛋。

作者使用了inception的组合堆叠 开发出了一个新的网络,就叫Googlenet。

给出了Googlenet的详细图:

最左侧可以看到,Googlenet的结构:

卷积 -> 池化 ->卷积 ->池化 -> 9个inception堆叠 (中间两个池化) -> 池化 -> dropout -> 线性层 -> softamx

  • 其中所有的卷积和1 * 1 之后都使用Relu作为激活函数。

  • 将fully-connected layer用avg pooling layer代替后,top-1 accuracy 提高了大约0.6%,之前的VGG Alex等这里都是三个全连接层。

  • 最后一层依旧使用dropout防止过拟合。

  • 为了在浅层使特征更加有区分性,增加了两个辅助分类器 L=L(最后)+0.3xL(辅1)+0.3xL(辅2),测试阶段去掉辅助分类器。

整体结构图比较大我就不截图上来了,我选取了带辅助分类器的那一小部分:

左边枝干就是一个又一个的 inception,右边我框出来的那一块就是辅助分类器,会得到一个预先的分类,按照上面的公式加权获得最终结果。

第8页

训练细节

这里说了两段参数设置还有预处理的方法。

第六节部分,最后作者说 so we could not tell definitely whether the final results were affected positively by their use.

看过沐神的都知道,这一部分叫:玄学调参 哈哈。

他说的具体数到后面代码复现的时候再说把,这段略了略了。

第8-10页

ILSVRC 2014

这部分主要说了一下 ILSVRC 2014 的细节。

训练使用了7个模型融合。每个模型使用相同的初始化方法甚至相同的初始值,相同的学习率策略,仅在图像采样和输入顺序有区别。

数据增强方面,将一张图变成144张图进行训练。将原图缩放为短边长度256,288,320,352的四个尺度,每个尺度裁出左中右(或上中下)三张小图,每张小图取四个角和中央的五张224x224的patch以及每张小图缩放至224x224,一共是六个patch,同时取其镜像。综上一共4x3x6x2=144个。最后结果取平均。

然后给了一张结果图:

可以看到 模型集成越多,图片剪裁-数据增强的越多,计算量越大,准确率越高,不过作者也说了如此激进的方法在平常并不适用,只不过作者在比赛。。。

最后说了一下检测标准。

评判标准:如果算法给出的框分类正确且与正确标签框的交并比IOU(Jaccard相似度)>0.5,就认为这个框预测正确

使用map(所有ap求平均值)作为模型评估指标,每个类别不同阈值下precison-recall曲线围成的面积–AP(0-100,越高越好)

Jaccard相似度:

Jaccard相似系数 ( Jaccard similarity coefficient )又称 Jaccard系数 ( Jaccar Index )。 两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的Jaccard相似系数,用符号J (A,B)表示。

这里的集合就是检测的时候画的那个框框的重合度。

论文已经完了,明天没事的话代码复现一下吧,不过感觉这个网络的代码复现比之前的VGG或者ZF要麻烦一点(对于本菜来说),多了辅助分类器还有inception模块。

后续:CNN基础论文 精读+复现----GoolgeNet & InceptionV1 (二)

CNN基础论文 精读+复现----GoogleNet InceptionV1 (一)相关推荐

  1. CNN基础论文 精读+复现----VGG(一)

    文章目录 前言 第1页 第2-3页 第四页 第五页 前言 原文Github地址:https://github.com/shitbro6/paper/blob/main/VGG.pdf 原文arxiv地 ...

  2. CNN基础论文 精读+复现---- ResNet(二)

    文章目录 准备工作 BasicBlock块 ResNet-18.34网络结构 完整代码: 小总结 准备工作 昨天把论文读完了,CNN基础论文 精读+复现---- ResNet(一) ,今天用pytor ...

  3. CNN基础论文 精读+复现----LeNet5 (二)

    文章目录 复现准备 数据部分 搭建网络结构 C1层: S2层: C3层: S4层: C5层: F6层: Output层: 损失函数与优化器: 复现准备 论文开头的一些概念和思想已经分析完.没看过的可以 ...

  4. 进阶必备:CNN经典论文代码复现 | 附下载链接

    经常会看到类似的广告<面试算法岗,你被要求复现论文了吗?>不好意思,我真的被问过这个问题.当然也不是所有面试官都会问,究其原因,其实也很好理解.企业肯定是希望自己的产品是有竞争力,有卖点的 ...

  5. 经典神经网络论文超详细解读(三)——GoogLeNet InceptionV1学习笔记(翻译+精读+代码复现)

    前言 在上一期中介绍了VGG,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而今天要介绍的就是同年分类任务的第一名--GoogLeNet . 作为2014年Ima ...

  6. 卷积神经网络学习—Resnet50(论文精读+pytorch代码复现)

    前言 一.Resnet论文精读 引入残差 残差块 ResNet50模型基本构成 BN层 Resnet50总体结构 二.Resnet50代码复现 完整代码 前言 如果说在CNN领域一定要学习一个卷积神经 ...

  7. DL之GoogleNet:GoogleNet(InceptionV1)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之GoogleNet:GoogleNet(InceptionV1)算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 GoogleNet算法的简介 GoogleNet算法的架构详 ...

  8. 零基础多图详解图神经网络(GNN/GCN)【论文精读】

    视频链接:零基础多图详解图神经网络(GNN/GCN)[论文精读] - 哔哩哔哩 (bilibili.com) 博客链接:A Gentle Introduction to Graph Neural Ne ...

  9. 李沐论文精读系列五:DALL·E2(生成模型串讲,从GANs、VE/VAE/VQ-VAE/DALL·E到扩散模型DDPM/ADM)

    文章目录 一. 前言 1.1 DALL·E简介 1.2 DALL·E2简介 1.3 文生图模型进展 二. 引言 2.1 摘要 2.2 引言&模型结构 三. 算法铺垫 3.1 GANs 3.2 ...

最新文章

  1. 计算程序运行时间(time_t, clock_t)
  2. Java Web Model2实战
  3. 数字签名、数字证书、对称加密算法、非对称加密算法、单向加密(散列算法)
  4. Java 技术篇-IntelliJ IDEA 导入数据库驱动jar包实例演示
  5. html中表格布局还是div布局,Table布局 VS Div+CSS布局,选哪个?
  6. arm开发板嵌入式 linux 修改开机启动logo,ARM开发板 嵌入式Linux 修改开机启动LOGO...
  7. 计算机网络—体系结构相关真题练习(二)
  8. Yii2学习笔记002---Yii2的控制器和视图
  9. 嵌入式linux系统运行程序,嵌入式Linux系统启动过程
  10. 【推荐】四款数据库可视化操作工具
  11. 用CSS+HTML代码制作的3D动态旋转相册
  12. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理? | 实操课103
  13. sqlserver with ties
  14. phpstorm官方下载地址
  15. 各类编程开发网址分享
  16. android 8.1 wifi提示“已连接 但无法访问互联网“的解决办法
  17. python自动生成统计表_python处理Excel自动统计表
  18. Matlab实践课心得体会,实验心得体会4篇
  19. php获取哔哩哔哩追番_自己拥有一台服务器可以做哪些很酷的事情?
  20. 关于XUtils的View 注入解析

热门文章

  1. 解析:微软收购诺基亚硬件或为Asha
  2. 百度地图实现只显示某一个城市的地图,周边不显示
  3. 手机爱奇艺html5,爱奇艺手机会员能在电视上用吗?解决的两种方法
  4. 抖音机器人,在抖音上找到漂亮小姐姐
  5. 最简单的方法快速生成抖音风格文字——使用HTML和CSS代码
  6. 清空input file中的值
  7. 被女友吐槽不细心不关心她?教你用Python感知女友的情绪变化(连节日祝福都帮你自动发送)
  8. 我在京东做研发丨京东物流仓储效率提升AI算法大揭秘
  9. @Retention元注解的使用
  10. 使用思科模拟器配置静态路由