深度学习之基础模型—InceptionV1(GoogLeNet)
来源:互联网 发布:sql join 多个条件 编辑:程序博客网 时间:2024/06/06 16:33
与VGG同年,google也独立在深度网络的深度方向进行了研究。发明了一个22层的深度神经网络,为了致敬LeNet,取名GoogLeNet(非GoogleNet)。该结构充分利用了网络结构中子网络的计算,使得网络的深度进一步提升。在设计过程中,受到了多尺度处理的启发,并且结合Hebbian principle原理进行网络结构设计,使得网络达到最优的状态。
简介
- GoogLeNet的参数量相比AlexNet要少很多,是AlexNet参数的
112 (12x fewer parameters than AlexNet) - 由于手机终端和嵌入式设备的发展,深度学习算法的运行效率和内存控制显得尤其重要,深度神经网络不仅具有学术性,更应该能够应用于现实生活中
- 论文起源于NIN(Network in network),并且在网络深度上进行了研究
研究动机
针对之前的网络结构设计,主要存在几个方面的缺点:
- 参数太多,模型的熵容量太大,容易导致过拟合,尤其对于比较小的数据集
- 网络越大,计算复杂度也就越大,在实际应用中,带来了困难
- 网络越深,模型训练越困难,梯度消失问题不可避免
GoogLeNet的研究动机从两个方面进行考虑:
深度: 网络采用了一个22层的结构,9个Inception(2-5-2结构),但是为了避免梯度消失问题,GoogLeNet在不同层增加了Loss的输出
宽度: 网络在每一个小的结构中,利用了1x1, 3x3, 5x5的卷积核和直接Max Pooling操作(为了保证输出的特征层的大小与卷积核输出大小相同,步长设置为1),为了避免由于宽度的增加带来每一个卷机核或者Max Pooling输出的特征层cancatenate之后,特征层的深度过深,也为了减少网络参数,在每一个3x3,5x5的卷积核前面和3x3Max Pooling后面都利用了一个1x1的卷积核进行降维,如下图
网络结构
网络结构中的参数如下:
说明:
- 前面4层,为普通的卷积和max pooling操作。在网络的开始利用了7x7
s=2 ,其目的是为了降低图像的特征层大小,减少后面的计算量 - 结构中的Max Pooling采用的类似于AlexNet中的Overlapping Pooling3x3
s=2 网络中,不断重复上述的Inception Module模块,来提高网络的深度:
a)#1x1:表示网络结构中的最左边的1x1 convolutions卷机核个数 b)#3x3 reduce: 表示网络结构中的3x3 convolutions上一步操作的1x1 convolutions的卷积核个数 c)#3x3 : 表示网络结构中的3x3 convolutions的卷积核个数 d) #5x5 reduce: 表示网络结构中的5x5 convolutions上一步操作的1x1 convolutions的卷积核个数 e)#5x5: 表示网络结构中的5x5 convolutions的卷积核个数 f)pool proj:表示3x3max pooling后面的1x1convolutions操作卷积核个数
- 所有的网络中的操作,后面都接一个非线性映射变换ReLU
- 网络的最后,采用了类似NIN网络结构中的global pooling操作,对7x7x1024的特征层进行avg pooling操作,变成了一个1x1x1024的向量
- 采用dropout操作,避免过拟合
网络的深度增加,给训练带来了很大的困难(梯度消失问题),为了更好的训练网络,GoogLeNet,在Inception(4a)和Inception(4d)的输出层,增了Loss计算误差,然后反向传播,在整个训练过程中,不断减少这个两个Loss的权重。
说明:
- 在Inception(4a)和Inception(4d)分别接了一个大小为5x5,步长为3的average pooling层,从而分别生成为4x4x512和4x4x528的特征层
- 紧跟一个1x1卷机,用来降维,卷积核个数位128(利用ReLU进行非线性处理)
- 全连接层的输出为1024(激活函数ReLU),并且采用dropout操作(dropout=70%)
- 通过softmax进行预测,预测的种类为1000类,同最终的输出结果
ILSVRC 2014分类结果
- 在比赛中,作者独立训练了7个GoogLeNet模型,初始化完全相同,不同的是训练时每次看到的图像数据不同而已
- 在预测阶段,将图像的短边进行比例缩放(256,288,320,352),然后选取每一个尺度下图像的左,中,右(或者上,中,下—根据短边是宽还是高决定)三个位置的正方形区域(256x256,288x288,320x320,352x352),最后针对每一个正方形区域,进行裁剪,选取4个角和中心位置的224x224区域(5个区域)加上将正方形区域缩放到224x224(每个正方形区域对应一共6张224x224图像),在进行水平镜像操作。最终每张图像可以产生
4∗3∗6∗2=144 张crops。
参考文献
https://arxiv.org/pdf/1409.4842.pdf
http://blog.csdn.net/jyl1999xxxx/article/details/75104930
http://blog.csdn.net/lynnandwei/article/details/44458033
http://blog.csdn.net/shuzfan/article/details/50738394
http://www.cnblogs.com/Allen-rg/p/5833919.html
http://www.cnblogs.com/neuface/archive/2016/03/11/5265740.html
- 深度学习之基础模型—InceptionV1(GoogLeNet)
- 深度学习之GoogLeNet解读
- 深度学习之基础模型—resNet
- 深度学习之GoogleNet and ResNet
- 深度学习之GoogLeNet-v2解读
- 深度学习之GoogLeNet-v3解读
- [caffe]深度学习之图像分类模型googlenet[inception v1]解读
- [caffe]深度学习之图像分类模型googlenet[inception v1]解读
- GoogLeNet系列解读InceptionV1/V2
- 深度学习: GoogleNet 网络
- 深度学习之基础模型---AlexNet
- 深度学习之基础模型-NIN
- 深度学习之基础模型-VGG
- 深度学习之基础模型-Inception-V3
- 深度学习之基础模型-mobileNet
- 深度学习之基础模型-Xception
- 深度学习之基础模型-FractalNet
- 深度学习之基础模型-ShuffleNet
- Java 线程池(ThreadPoolExecutor)原理分析与使用
- Service详细解析
- 深圳突传大消息:这类人要哭了!
- linux内存管理之初始化
- django多表过滤和搜索
- 深度学习之基础模型—InceptionV1(GoogLeNet)
- Spring的AOP和IOC的分析理解
- STM32直接存储器访问DMA
- 作业笔记:How to evaluate the two-class classification model?
- 手把手教你安装深度学习软件环境(附代码)
- AFNetworking 提示"The resource could not be loaded because the App Transport Security policy requires
- 潜伏者(关于map的用法)
- 飞扬的小鸟
- SpringBoot23-spingboot数据访问-Spring Data REST