3. 经典卷积网络之GooleInceptionNet

这篇文章参考《Tensorflow实战-黄文坚》,加上自己的一点理解。

网络结构简介

GooleInceptionNet首次出现是在2014年的ILSVRC的比赛中,当时是第一名,最大的特点就是控制计算量的同时获得了比较好的分类性能--top-5错误率为6.67%。这个模型被称作为Inception V1,参数总量只有AlexNet的一半不到,有22层深,只有500万参数量,降低参数量的显然是非常有用的,模型越大的话肯定就需要比较大的数据量支持,同时耗费的计算资源也就越大。

Inception V1参数少效果好出了模型层数更深意外,还有两点原因:一个是去除了全连接层(全连接层的产数量是很大的比如4096-1024的全连接层就需要4096乘1024个参数(上百万)),采用全局平均池化层(将图片尺寸变为1*1)来取代它。二是其精心设计了Inception Module来提高参数的利用效率,这也是其为什么叫做Inception的原因。其典型模型如下:

Inception model

这个模型可以理解为是大模型中的一个小模型,其结构可以反复叠加,允许通道之间组合信息(1_1卷积,其中1_1卷积的效率是非常高的,参数可以下降很多,而且可以组合通道之间的信息,实质上是做了一个特征变换和非线性化)。这个Module中采用了不同卷积大小,和multi_scale思想类似。Inception V1中指出,这种结构可以有效增加网络的深度和宽度,提升准确率且不至于过拟合。

人的神经元的连接是比较稀疏的,所以研究者认为大型神经网络的合理连接方式也应该是稀疏的。尤其是对于非常大型,非常深的神经网络来说更是如此,Inception Net的主要目标就是找到最优的稀疏结构单元(Inception Module)。论文中提到其稀疏结构源自于Hebbian原理:通俗的来讲就是一起发射的神经元会连在一起。受此启发,一个好的稀疏结构应该是符合Hebbian原理的,我们应该把相关性高的一簇神经元链接在一起,普通的数据集中,可能需要对神经元节点进行聚类,然而在图像中,天然的就是临近区域的数据相关性要高,所以卷积就是这么个聚类的过程,1_1的卷积就可以很自然的吧不同维度但是同一位置的特征连接在一起。稍大一点的卷积无非是一个区域的不同维度的特征连接。所以在这个模型中使用了这几种方式,目的就是训练出这么一个符合Hebbian原理的稀疏结构。

Inception Module中,通常1_1卷积的比例(输出通道数)最高,而3,5尺寸的卷积核稍低,而在整个网络中,有多个叠加的Inception Module,我们希望后面的Model可以捕捉到更高阶的抽象特征,所以在越靠后的Inception Module中,大卷积核的占比应该更多。

Inception Net一共有22层深,出了最后一层,中间节点的分类效果也比较好,所以其中还采用了辅助分类节点,即把这一部分的分类结果和最终的输出加权来输出,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练也有好处。

Inception Net是一个大家族,包括从2014-2016的四篇文章,Inception V2借鉴了VGGnet,用两个3-3的卷积来代替5-5的卷积,还提出了BN方法(Batch-Normalization),BN是一种非常有用的正则化方法,可以让大型卷积网络的训练速度加速,同时收敛后的分类准确率也可提高,BN层用于神经网络的某层时,会对每一个MINI-batch数据内部进行标准化,使输出规范化到N(0,1)的正太分布,减少了内部神经元分布的改变,BN的论文指出,传统的深度神经网络在训练的时候,每一层的分布都在变化,会使得训练变得困难,只能使用比较小的学习率来解决这个问题,而对每一层使用BN之后,就可以有效解决这个问题,BN层在某种意义上起到了正则化的作用,所以在使用BN层的基础上可以减少或取消Dropout,简化网络结构。

Inception V3则主要进行了两方面的改造:

  1. 将卷积拆分成两个一维卷积。 比如7-7的拆分为7-1,1-7的两个卷积,这个其实节约了大量参数,比如7-7的的需要49的参数,而拆分之后只需要7+7=14个参数,这样可以一定程度上减少过拟合(参数量减少模型复杂度降低)。同时还增加了一层非线性扩展模型表达能力。
  2. 优化了Inception Module。 有35-35,17-17,8-8三种不同的结构(输入尺寸),这些结构只在网络的后部出现,前部分还是普通的卷积层,而且其还在分支中使用了分支。如下图。

分支中使用分支

Inception V3相比V3主要是结合了微软的RESnet。等写到RESnet的时候再说,这里要实现的是V3。

Inception V3的tensorflow实现。

首先来看模型结构:

一开始是准备在这里写的,后来发现实在是太长了,整整敲了一下午,不过总算有点理解slim这个模块了。最后放在git上吧。地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

如何使用TensorFlow实现卷积神经网络

编者按:本文节选自图书《TensorFlow实战》第五章,本书将重点从实用的层面,为读者讲解如何使用TensorFlow实现全连接神经网络、卷积神经网络、循环神...

2755
来自专栏人工智能头条

如何使用TensorFlow实现卷积神经网络

831
来自专栏IT派

理解SVM的三层境界(二)

第二层、深入SVM 2.1、从线性可分到线性不可分 2.1.1、从原始问题到对偶问题的求解 接着考虑之前得到的目标函数: ? 由于求 的最大值相当于求 ...

3313
来自专栏机器学习算法工程师

细粒度分类你懂吗?——fine-gained image classification

我们在路边看到萌犬可爱至极,然后却不知道这个是哪种狗;看见路边的一个野花却不知道叫什么名字,吃着一种瓜,却不知道是甜瓜还是香瓜傻傻分不清……

1513
来自专栏iOSDevLog

机器学习概述与算法介绍(二)

2203
来自专栏AI深度学习求索

传统特征:HOG特征原理

为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化),有效地降低图像局部的阴影和光照变化。

1443
来自专栏企鹅号快讯

从零学习:从Python和R理解和编码神经网络

作者:SUNIL RAY 编译:Bot 编者按:当你面对一个新概念时,你会怎么学习和实践它?是耗费大量时间学习整个理论,掌握背后的算法、数学、假设、局限再亲身实...

36710
来自专栏CVer

论文精读 | 目标检测之R-CNN

R-CNN作为R-CNN系列的开山鼻祖,其首次将CNN用于目标检测,在PASAL VOC 2010测试集上实现了53.7% mAP,也从此开启了R-CNN系列"...

961
来自专栏SIGAI学习与实践平台

理解Spatial Transformer Networks

随着深度学习的不断发展,卷积神经网络(CNN)作为计算机视觉领域的杀手锏,在几乎所有视觉相关任务中都展现出了超越传统机器学习算法甚至超越人类的能力。一系列CNN...

2342
来自专栏MelonTeam专栏

深度学习简易入门

深度学习是机器学习中的一个重要的方向,深度学习其实就是神经网络学习,这里“深度”就是说神经网络中众多的层。

2267

扫码关注云+社区