inception v1原理
2018-01-30 17:00
176 查看
Paper:
[v1] Going Deeper with Convolutions, 6.67% test error, http://arxiv.org/abs/1409.4842[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error, http://arxiv.org/abs/1502.03167
[v3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error, http://arxiv.org/abs/1512.00567
[v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error, http://arxiv.org/abs/1602.07261
Inception v1(ILSVRC14):
产生动机:自2012年AlexNet做出突破以来,直到GoogLeNet出来之前,大家的主流的效果突破大致是网络更深,网络更宽。但是纯粹的增大网络有两个缺点:
过拟合和计算量的增加。同时还有梯度弥散问题。方法当然就是
增加网络深度和宽度的同时减少参数。
但结构稀疏性和运算能力有矛盾,需要既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能,
所以
Inception应运而生。(可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能)
解决思路:
深度 层数更深,文章采用了22层,为了避免上述提到的梯度消失问题,googlenet巧妙的在不同深度处增加了两个loss来保证梯度回传消失的现象。
(注:该loss仅在训练的时候以一定的weight参与梯度传递,而在test的时候不用。 )
宽度 增加了多种核 1x1,3x3,5x5,还有直接max pooling的,为了避免concat起来的feature map厚度将会很大,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降维的作用。
基本架构:
Inception架构的主要思想是找出如何让已有的稠密组件接近与覆盖卷积视觉网络中的最佳局部稀疏结构。
采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。
在低层时候仍然用传统的方式,高层用Inception块叠加。(论文中说这可能反应了当前构造的不足)
网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;
训练测试小技巧
ILSVRC 2014的分类任务有1000个子类,120万训练图像,5万验证图像,10万测试图像,每个图像中有一个ground truth,性能测量是基于得分最高的分类器预测,常用指标为top-1准确率和top-5错误率。1.训练了7个网络,初始化和权重都相同,只是采样方法和随机输入图像不同; 2.将图像的短边分别缩放成256、288、320、352这样4种尺度。 取图像的左中右块(或上中下块)。每块取四个角和中间的224x224的 裁剪, 和将这个块缩放到224x224,以及上述它们的镜像。这样每个图像有 4x3x6x2=144个,但可能实际中不需要这么多; 3.softmax概率在多个裁剪和在所有分类器上取平均来获得最后的预测, 简单的平均结果最好。
reference
http://blog.csdn.net/app_12062011/article/details/62216987http://blog.csdn.net/shuzfan/article/details/50738394
http://blog.csdn.net/stdcoutzyx/article/details/51052847
http://blog.csdn.net/yuanchheneducn/article/details/53045551
相关文章推荐
- 稀疏傅里叶变换(SFT)算法
- inception v1(googlenet)--tensorflow version with tensorboard
- inception-resnet-v2实现-tensorflow
- Inception-v3模型初探
- 构建自己的图片分类模型
- Inception v1 —v2 —v3 —v4
- Google Inception Net 特点总结
- [Tensorflow]基于slim框架下inception模型的植物识别
- Tensorflow读取并使用预训练模型:以inception_v3为例
- GoogleNet inception-v4概述及python实现方法
- Inception-v2/v3结构解析(原创)
- Inception-v4与Inception-ResNet结构详解(原创)
- 机器学习中的稀疏表示与字典学习
- googLeNet--Inception四部曲二Batch Normalization
- googLeNet--Inception四部曲一Going deeper with convolutions
- Lasso和Elastic net的区别
- 神经网络之Inception模型的实现(Python+TensorFlow)
- 【keras-DeepLearning_Models】_obtain_input_shape() got an unexpected keyword argument 'include_top'
- 【keras-DeepLearning_Models】_obtain_input_shape() got an unexpected keyword argument 'include_top'
- 【keras-DeepLearning_Models】_obtain_input_shape() got an unexpected keyword argument 'include_top'