摘要: 当前深度学习十分火热,深度学习网络模型对于下降错误率的重要做用不言而喻。深度学习应用场景主要分为三类:物体识别与分类,物体检测,天然语言处理。在物体识别与分类领域,随着AlexNet在2012年一炮走红,深度学习从新燃起了一片热情。从Lenet5第一次使用卷积开始,经历了AlexNet VGG Inception ResNet等各类模型,错误率也一再下降。ResNet-152网络
当前深度学习十分火热,深度学习网络模型对于下降错误率的重要做用不言而喻。深度学习应用场景主要分为三类:物体识别与分类,物体检测,天然语言处理。在物体识别与分类领域,随着AlexNet在2012年一炮走红,深度学习从新燃起了一片热情。从Lenet5第一次使用卷积开始,经历了AlexNet VGG Inception ResNet等各类模型,错误率也一再下降。ResNet-152 top-5错误率仅为3%左右,远低于人眼的5.1%。本文主要讲解各类网络模型的结构,他们的特色,以及这些特色为什么能减小训练时间和下降错误率。框架
LeNet-5的出现标志着CNN卷积神经网络在AI领域的出现,CNN以视觉感觉野和权值共享的思想,大大减小了模型参数,使得深度学习模型训练成为了可能。但因为诞生于1998年,GPU的概念都尚未提出,CPU的性能又是极其低下,并且LetNet-5只能使用在手写字识别等很简单的应用场景,故一直没有火起来。但做为CNN应用的开山鼻祖,学习CNN势必先从学习LetNet-5开始。LeNet-5网络结构以下图函数
LeNet-5输入为32x32的二维像素矩阵,因为是灰度图,输入通道为1,其正向传播步骤为性能
LeNet-5的特色以下学习
AlexNet在2012年以16.4%的显著优点问鼎ILSVRC的冠军,从新燃起了人们对于深度学习研究的热情。它第一次采用了relu,dropout,GPU加速等技巧,参数量为6000万,模型大小240M左右。其网络结构以下spa
AlexNet输入图片为224x224, 输入为RGB三通道。正向传播共5个卷积层和3个全链接层,步骤为设计
AlexNet的结构特色为orm
VGG为ILSVRC 2014年第二名,它探索了卷积网络深度和性能,准确率之间的关系。经过反复堆叠3x3卷积和2x2的池化,获得了最大19层的深度。VGG19模型大概508M,错误率下降到7.3%。VGG模型不复杂,只有3x3这一种卷积核,卷积层基本就是卷积-relu-池化的结构,没有使用LRN,结构以下图。图片
VGG的特色以下ip
Google Inception是一个你们族,包括inceptionV1 inceptionV2 inceptionV3 inceptionV4等结构。它主要不是对网络深度的探索,而是进行了网络结构的改进。inceptionV1击败了VGG,夺得2014年ILSVRC冠军。以后Google又对其网络结构进行了诸多改进,从而造成了一个你们族。
inceptionV1是一个设计十分精巧的网络,它有22层深,只有500万左右的参数量,模型大小仅为20M左右,但错误率却只有6.7%。它的网络结构特色以下
inception module分为并联的四路,分别为单独的1x1卷积,1x1并联3x3, 1x1并联5x5, 池化后1x1卷积。使用不一样的卷积结构来提取不一样特征,而后将他们组合在一块儿来输出。
inceptionV2和V1网络结构大致类似,其模型大小为40M左右,错误率仅4.8%,低于人眼识别的错误率5.1%。主要改进以下
inceptionV3的网络结构也没太大变化,其模型大小96M左右。主要改进以下
inceptionV4主要是借鉴了resNet残差网络的思想,能够看作是inceptionV3和resNet的结合。inceptionV4模型大小163M,错误率仅仅为3.08%。主要在ResNet网络中讲解
ResNet由微软提出,并夺得了2015年ILSVRC大赛的冠军。它以152层的网络深度,将错误率下降到只有3.57%,远远低于5.1%的人眼识别错误率。它一样利用全局平均池化来代替全链接层,使得152层网络的模型不至于太大。网络中使用了1x1 3x3 5x5 7x7等不一样尺寸的卷积核,从而提升卷积的多样性。resNetV1_152模型大小为214M,不算太大。
ResNet提出了残差思想,将输入中的一部分数据不通过神经网络,而直接进入到输出中。这样来保留一部分原始信息,防止反向传播时的梯度弥散问题,从而使得网络深度一举达到152层。当前有不少人甚至训练了1000多层的网络,固然咱们实际使用中100多层的就远远足够了。残差网络以下图
ResNet的主要特色,就一个字,深!
ResNetV2相对于V1的最大变化,就是借鉴了inceptionV2的BN归一化思想,这样来减小模型训练时间。
为了能将模型部署在终端上,须要在保证准确率的前提下,减少模型体积,并下降预测时的计算时间,以提升实时性。为了能到达这一目的,Google提出了mobileNet框架。最终mobileNetV1_1.0_224模型以16M的大小,能够达到90%的top-5准确率。模型甚至能够压缩得更小,mobileNetV1_0.25_128只有10M左右,仍然能达到80%的准确率。
mobileNet模型的核心是,将一个普通的卷积拆分红了一个depthwise卷积和一个1x1的普通卷积(也叫pointwise卷积)。depthwise卷积层的每一个卷积只和输入的某一个channel进行计算,而combining则由1x1的卷积来负责。以下图
对于卷积核dk*dk,输入通道为M,输出通道为N的普通卷积,每一个输出通道都是由M个卷积分别和输入通道作计算,而后累加出来,因此须要的参数量为dk x dk x M x N。而对于depthwise卷积,每一个卷积只和输入通道的某一个通道发生计算,而且不须要累加操做,其卷积后的输出通道和输入通道相等,仍然为M。而后再通过一层1x1的普通卷积。故其参数为dk x dk x M + 1 x 1 x M x N。
mobileNet参数量比原来减小了多少呢,咱们由下面的计算能够得出
(dk x dk x M + 1 x 1 x M x N) / (dk x dk x M x N) = 1/N + 1/(dk^2)
因为输出通道通常都比较大,为48 96 甚至4096, 故通常取1/(dk^2), 对于最多见的3x3卷积,mobileNet参数量能够下降为原来的1/9.
mobileNet一共包含28层,第一层的卷积为普通卷积,以后的卷积为分解的3x3 depthwise卷积和1x1 pointwise卷积。另外,最后有一个全局平均池化层和全链接层。并利用softmax获得分类结果。以下图所示
7.3 mobileNet可裁剪化
为了获得更小的模型,mobileNet还能够进行输入通道和分辨率的剪裁,称为Width Multiplier 和 Resolution Multiplier。Width Multiplier 表示输入通道变为baseline的多少倍, Resolution Multiplier表示输入图像缩小为多少。通过剪裁后的mobileNetV1_0.25_128模型,只有10M左右,准确率仍然可达到80%左右。做为端上图像预处理彻底足够。下面是Width Multiplier 和 Resolution Multiplier的结果
CNN已经普遍应用在物体识别和分类领域,短短几年间就出现了AlexNet VGG inception ResNet等优秀的神经网络结构,而且每隔几个月就问世一种优秀网络结构,能够说是百花齐放。这要归功于TensorFlow等框架的成熟和GPU等硬件性能的提高,使得网络结构的设计和验证日趋平民化。各类网络结构,其实本质上也是在解决神经网络的几大痛点问题,以下
学习网络模型,不该该去死记硬背,由于有源源不断的网络结构涌现。咱们应该重点掌握每一个模型的特色,以及他们是如何来解决上面列举的这些神经网络痛点的。