GoogleNet

news2024/11/28 0:45:46

Introduction

得益于深度学习的优势和更强大的卷积神经网络的出现,图像分类和目标检测的准确率发生了令人意想不到的进步。在2014年的ILSVRC比赛中,GoogLeNet取得了第一名的成绩,所用模型参数不足AlexNet(2012年冠军)的1/12。论文题目《Going deeper with convolutions》中的deeper有两层含义,一是指本文引入了一种新的结构“Inception module”,二就是其直接含义——网络深度(depth)的增加。

Relative work

相比传统的网络架构设计——由多个卷积层堆积,选择性的使用Normalization和maxpool,然后经过一层或多层的全连接层输出,由于模型参数主要集中在全连接层,可选择在全连接层使用dropout来降低过拟合的风险。

但是Maxpool可能会导致空间信息的损失,降低神经网络的表现力。为了解决这个问题,Lin等人在2013年提出了inception——“Network in Network”的想法。在卷积网络中的实现方法就是添加一个额外的1X1卷积层,使用Relu作为激活函数。其主要作用是降维(dimension reduction),在不牺牲模型表现的前提下,可以大量减少计算量,有利用训练更深更广的网络。

前沿的目标检测方法是R-CNN,主要思想是将目标检测问题划分为两个子问题:首先利用低级的特征比如颜色和超像素的一致性来得到潜在的object proposals。然后利用CNN分类器对这些位置上的proposals进行分类识别。GoogLeNet对这两步分别进行了优化,取得了令人惊喜的结果。

Motivation

通常来说要想提高网络性能,常用的方法就是提高神经网络层数和宽度,但是会带来两个严重的缺陷:一是更深的网络意味着会有更多的参数,这样很容易导致过拟合;二是更深的网络会带来更多计算上的开支,减缓训练周期。而参数又主要集中在全连接层,于是就想到了用稀疏连接来取代全连接层的方法,是解决这两个问题的关键。

在《Provable bounds for learning some deep representations》中提到“如果用大而稀疏的CNN来表示数据集的概率分布,那么可以通过逐层分析最后一层的Activation和具有高度相关的输出的聚类神经的相关统计数据来构建最优的网络拓补结构。”,尽管没有严格的数学证明,但是这很符合Hebbian principle的说法,这为网络架构的设计提供了有力的理论保障!

Inception Module

Inception的主要观点是弄明白卷积视觉网络中的一个局部最优稀疏结构是如何被一个可轻易获取的密集结构去逼近和覆盖的。

Inception model 的结构如下;左边是初期版本,这里使用三个不同的patch size,1X1 3X3 5X5,主要是为了避免patch alignment问题和减少计算量。比如对三个patch分别使用padding=0,1,2进行卷积就可以让卷积后的输出具有相同的尺寸,而patch size较小的时候对应的参数相应也小一些,比如1×1=1,3×3=9,5×5=25,再往后参数数量的增长速度就更快了。由于池化层在卷积神经网络中的作用往往都是起关键作用的,所以Inception model里也加入了一个池化层。但这种设计不是必须的,只是为了更方便。

但是初级的版本有个很大的缺点就是参数量和计算量会很大,而且将三个卷积层和一个池化层的输出拼接后的feature map数量会变得很大,随着网络层数的增加,模型会变得很复杂,变得难以训练。以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是左图结构,那么卷积核参数为 1 × 1 × 192 × 64 + 3 × 3 × 192 × 128 + 5 × 5 × 192 × 32 1×1×192×64+3×3×192×128+5×5×192×32 1×1×192×64+3×3×192×128+5×5×192×32,而右图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了 1 × 1 × 192 × 64 + ( 1 × 1 × 192 × 96 + 3 × 3 × 96 × 128 ) + ( 1 × 1 × 192 × 16 + 5 × 5 × 16 × 32 ) 1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32) 1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。同时在并行pooling层后面加入1×1卷积层后也可以降低输出的feature map数量,左图pooling后feature map是不变的,再加卷积层得到的feature map,会使输出的feature map扩大到416,如果每个模块都这样,网络的输出会越来越大。而右图在pooling后面加了通道为32的1×1卷积,使得输出的feature map数降到了256。GoogLeNet利用1×1的卷积降维后,得到了更为紧凑的网络结构,虽然总共有22层,但是参数数量却只是8层的AlexNet的十二分之一(当然也有很大一部分原因是去掉了全连接层)。

另外一个值得注意的地方是:为了避免网络过深引起的浅层梯度消失问题,GoogLenet在中间层的Inception module加入了两个辅助分类器(softmax),训练时在进行梯度下降求导的时候,将辅助分类器的损失函数(cost function)乘以0.3的权重加到总的损失函数上,这样可以有效避免梯度消失的问题。做预测的时候就不管这两个辅助分类器。

GoogleNet

在这里插入图片描述

Conclusion

GoogLeNet最终在2014年的ILSVRC Classification & Detection均斩获冠军,取得了惊人的成绩。相比第二名的VGGNet,GoogLeNet拥有更深的网络结构和更少的参数和计算量,主要归功于在卷积网络中大量使用了1×1卷积,以及用AveragePool取代了传统网络架构中的全连接层,当然这需要精心设计Inception architecture 才能取得最后这优异的成绩。

参考文献

https://cloud.tencent.com/developer/article/2118509

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

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

相关文章

基于Java医院住院管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

记录使用gswin64.exe合并多个pdf为一个pdf

目录 下载gs920w64.exe 安装 配置相关信息 验证是否安装配置成功 合并多个pdf文件 下载gs920w64.exe https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs920 ​ 安装 正常安装,记住自己的安装目录: ​ 配置相关信息 安装…

限流与令牌桶

一、概述 令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略。 原理 1.令牌以一定的速率放入桶中。 2.每个令牌允许源发送一定数量的比特。 3.发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。 4…

跟着《代码随想录刷题》(六)—— 二叉树

6.1 二叉树的前、中、后序遍历 144.、二叉树的前序遍历&#xff08;中左右&#xff09; LeetCode&#xff1a;114、二叉树的前序遍历 &#xff08;1&#xff09;递归法 class Solution { public:void traversal(TreeNode* cur, vector<int>& vec) {if (cur N…

eslint + prettier如何搭配使用

简介 eslintprettier写代码爽到飞起&#xff0c;既规范了代码的格式&#xff0c;同时也让你的代码美观易读。本文介绍如何在项目中使用eslint搭配prettier来规范你的代码 1.eslint 和 prettier区别 先来回答一个问题&#xff0c;eslint和prettier这二者有啥区别&#xff0c;es…

【后端面经-数据库】MySQL的事务隔离级别简介

【后端面经-数据库】MySQL的事务隔离级别简介 0. 事务的概念1. 三类问题2. 事务隔离级别3. 操作指令4. 总结5. 参考博文 0. 事务的概念 事务指的是一连串的集中操作指令&#xff0c;一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点&#xff0c;简记作A…

表示学习(Representation Learning) Part2--Auto-Encoders、VAEs、GANs

文章目录 Compression:Auto-EncodersCapture parameter distribution (variance): Variational Auto-Encoders原理介绍数学推导生成数据diffusion modelsPros&Cons Train using a second network: GANs 来自Manolis Kellis教授&#xff08;MIT计算生物学主任&#xff09;的…

spark_idea

spark_idea 3、打jar包运行2、code1、pom_xml0、创建数据、模型、预测表0、Windows配置scala环境 3、打jar包运行 ./bin/spark-submit \--class spark02 \--master spark://hadoop102:7077 \--deploy-mode client \/home/gpb/scala_spark2.jar打jar包、存储到虚拟机中 编写执行…

什么是布隆过滤器?如何解决高并发缓存穿透问题?

日常开发中&#xff0c;大家经常使用缓存&#xff0c;但是你知道大型的互联网公司面对高并发流量&#xff0c;要注意缓存穿透问题吗!!! 本文会介绍布隆过滤器&#xff0c;空间换时间&#xff0c;以较低的内存空间、高效解决这个问题。 本篇文章的目录&#xff1a; 1、性能不…

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中&#xff0c;涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写&#xff0c;如下所示&#xff1a; IMX6ULL…

【ROS】RViz使用详解

1、安装 1.1 ROS1-RVIZ RVIZ的ROS1各个ubuntu版本中的安装命令 ubuntu14.04&#xff1a; sudo apt install ros-indigo-rvizubuntu16.04&#xff1a; sudo apt install ros-kinetic-rvizubuntu18.04&#xff1a; sudo apt install ros-melodic-rvizubuntu20.04&#xff1a…

Java厘米级高精准定位系统源码(支持UWB、蓝牙、WIFI定位)

高精准定位系统支持10厘米工业级高精准定位&#xff0c;同时支持UWB&#xff0c;蓝牙&#xff0c;WIFI定位。 ♦高精准定位系统首页为数据统计页面&#xff0c;统计的信息可以分为数量统计、区域告警人数统计、工牌使用量的统计、区域报警率统计以及告警消息的展示。 系统首页…

Pytest教程__常用执行参数详解(3)

前面讲了测试用例的执行方式&#xff0c;也认识了 -v -s 这些参数&#xff0c;那么还有没有其它参数呢&#xff1f;答案肯定是有的&#xff0c;我们可以通过 pytest -h来查看所有可用参数。 从图中可以看出&#xff0c;pytest的参数有很多&#xff0c;但并不是每一个参数都需要…

fiddler高级工具栏中的statistics数据分析工具

Fiddler statistics 板块会统计一个请求开始发出到最终接收并转发的数据&#xff0c;统计和响应的一些信息&#xff1a; 可以使用statistics分页&#xff0c;完成简单的性能测试&#xff0c;查看其接口的响应时间 如图展示&#xff1a; 如图详细解释下每一项的含义&#xff…

grep(General Regular Expression Parser)命令

基本用法 本篇介绍非常有用的命令是grep&#xff0c;这个不寻常的名字代表的是通用正则表达式解析器&#xff08;General Regular Expression Parser&#xff0c;简写为grep&#xff09;。你使用find命令在系统中搜索文件&#xff0c;而使用grep命令在文件中搜索字符串。事实上…

磁盘坏道:sd 2:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor]

现网问题 从log来看磁盘可能存在问题&#xff0c;进一步实锤。 问题定位 通过badblocks扫描磁盘&#xff0c;发现sda磁盘有磁道损坏&#xff0c;建议更换磁盘。 badblocks命令详解 Linux badblocks命令用于检查磁盘装置中损坏的区块,执行指令时须指定所要检查的磁盘装置&…

postman高级使用

概念&#xff1a;让程序代替人判断测试用例执行的结果是否符合预期的一个过程 特点&#xff1a; postman断言使用js编写&#xff0c;断言写在postman的tests中 tests脚本在发送请求之后执行&#xff0c;会把断言的结果最终在testresult中进行展示 常用的postman提供的断言片…

在Django项目中的各个应用中分别编写路由配置文件urls.py

目录 01-通过命令建立三个应用02-配置路由 /index/、/app1/index/、/app2/index/02-1-配置路由 /index/ 并将各个应用的urls.py文件包含进主路由目录中02-02-配置路由/app1/index/02-03-配置路由/app2/index/ 03-编写各个应用的视图views.py 文件04-注册模板文件所在目录05 创建…

CVPR23 | 可编辑3D场景布局的文本引导多对象合成NeRF

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.13843 0.背景&#xff1a; 最近&#xff0c;文本到图像生成通过将视觉-语言预训练模型与扩散模型相结合&#xff0c;取得了巨大的成功。这些突破也使得强大…

python: read excel and export excel

""" PythonAppReadExcel.py edit&#xff1a; geovindu,Geovin Du,涂聚文 date 2023-06-13 保险 """ # This is a sample Python script. # python.exe -m pip install --upgrade pip # Press ShiftF10 to execute it or replace it with your c…