经典卷积神经网络的学习(三)—— Inception Net
2024-08-31 20:43:36
Google Inception Net 首次出现在 ILSVRC 2014 的比赛中(和 VGGNet 同年),就以较大优势拔得头筹。那届比赛中的 Inception Net 一般被称为 Inception V1(version 1),其最大的优势在于控制 了参数量(也就控制了计算量)的同时,仍然能够获得非常好的分类性能 —— top-5 错误率 6.67%。
Inception V1 降低餐数量的目的在于以下两点:
- 参数越多,模型越庞大,需要提供模型学习的数据量也就越大,而当前高质量的数据非常昂贵;
- 参数越多,相应地耗费的计算资源也会更大;
0. 一些细节问题
- Scale images because Inception needs pixels to be between 0 and 255,
- Inception net 要求输入图像的像素值在 0-255 区间内,而不是 0-1,如果原始图像的像素值在 0-1,需要在乘以 255;
- The output of the Inception model is a so-called Softmax-function
- Inception net 的输出是 softmax-function,
- 为什么使用了较多 1×1 的卷积?
- 图片数据天然地邻近区域的数据相关性较高,也即可通过卷积操作使相邻的像素点连接在一起。我们可十分方便构造多个卷积核,在同一空间位置但不同通道的卷积核的输出结果相关性较高。
- 因此一个 1×1 的卷积就可以很自然地将这些相关性很高的、在同一空间位置但不同通道的特征连接在一起,这也正是 1×1 的卷积会频繁地应用到 Inception Net 中的原因。
- 1×1 卷积所连接的节点的相关性是最高的,而稍微大一点尺寸的卷积,3×3、5×5 的卷积所连接的节点相关性也很高,因此可进一步地使用一些稍大尺寸的卷积,增加特征多样性(diversity);
1. 模型拓扑
- Inception V1 有 22 层深,比 AlexNet 的 8 层或者 VGGNet 的 19 层还要更深。
去除了最后的全连接层,而使用全局平均池化层(将图片尺寸变为 1×1)取代全连接层;
如上图所示为 Inception Module 的结构图,可知:
- 基本结构共有四个分支;Inception Module 的 4 个分支在最后一个聚合操作合并(在输出通道数这个维度上聚合)
- Inception Module 中包含了:
- 3 种不同尺寸的卷积:1×1,3×3,5×5
- 1 个最大池化层:3×3
2. Inception Net 家族
- 2014 年 9 月,Going Deeper with Convolutions ⇒ Inception V1(top-5 错误率 6.67%)
- 2015 年 2 月,Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate ⇒ Inception V2(top-5 错误率 4.8%)
- 学习了 VGGNet,用两个 3×3 的卷积代替 5×5 的大卷积(以降低参数和减轻过拟合),正如论文标题所言,还提出了有效的 Batch Normalization 方法,可为大型卷积网络的训练加速很多倍;
- 2015 年 12 月,Rethinking the Inception Architecture for Computer Vision ⇒ Inception V3(top-5错误率 3.5%),主要有下述改进:
- 引入 Factorization into Small convolutions 的思想,讲一个较大的二维卷积拆成两个较小的一维卷积,比如将 7×7 ⇒ 1×7 & 7×1
- 2016 年 2 月,Inception V4、Inception-ResNet and the Impact of Residual Connections on learning,提出 Inception V4 的概念,(top-5 错误率 3.08%)
最新文章
- AngularJs $http 请求服务
- IOS 使用webview 显示 doc/docx/xls/pdf等
- iOS Core Animation Advanced Techniques
- PHP读取xml之cdata讲解
- A. Sorting Railway Cars
- java_TreeSet 定制排序实例
- shell脚本中局部变量local
- 基于visual Studio2013解决C语言竞赛题之1054抽牌游戏
- lambda 表达式 自定义查询
- (八)javaScript对象简介
- no zuo no die
- Java工程师必备书单
- [AMD驱动]解决AMD驱动的1603错误
- python 安装numpy遇到无法卸载的解决办法
- 部署tinyproxy代理服务
- linux 基础笔记本
- openwrt页面显示问题修改
- 【小白的CFD之旅】23 串行与并行
- C++宏定义不受命名空间的约束
- 为什么java需要序列化对象