介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)

 

Outline:

本文介绍几种年代比较久的卷积神经网络

1.LeNet-5

2.AlexNet

3.VGG-16

4.ResNet

5.Inception

一.LeNet-5

网络结构图如下:

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第1张图片

5表示:2个卷积层+3个全连接层;该网络激活函数使用sigmoid和tanh,还没有使用relu函数

二.AlexNet

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第2张图片

该网络与LeNet网络类似,这里使用了5个卷积层,4个全连接层。

1.相比LeNet网络,类似但网络结构更为庞大;

2.激活函数使用relu;

3.使用多GPU训练;

4.Local Response Normlization(LRN)。

三.VGG-16

该网络较为经典,在近几年的网络中都有应用或是其变体的应用。

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第3张图片

16:2+2+3+3+3=13个卷积层+3个全连接层。

四.ResNet(Residual Networks)

首先了解一下残差块:

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第4张图片

随着网络深度加深,参数的作用对后面的网络作用越来越小,因为各种误差等原因,最终可能还会导致损失升高。如下图:

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第5张图片

使用ResNet后可以保证损失可以按照理论值下降,避免了因为网络深度的提高使误差升高。

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第6张图片

上图是使用参差块构建的网络,共有5个残差块。

为什么使用参差网络

前面已经给出了其中一个原因,保持网络不会因为网络的深度增加而破坏网络的性能。

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第7张图片

如果网络因为正则化,将w压缩到0,b=0;此时网络a[l+2]将输出0,但是有了残差块网络,a[l+2]=a[l];

五.1x1滤波器的作用

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第8张图片

如上图,1x1卷积网络相当于将原图的1x1x32变成一个数据,这相当于全连接网络,这又称为:Network in Network。

下图是1x1卷积网络的使用,滤波器是1x1x192,使用了32个滤波器,得到输出:28*28*32。该操作压缩了图像通道数。(池化层压缩了图像的长和宽

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第9张图片

七.谷歌Inception网络

当构建卷积网络的时候需要考虑滤波器的大小,通道,而Inception的作用是帮助你确定滤波器的尺寸。使用Inception网络可以帮助人工确定卷积网络的类型(卷积or池化),以及滤波器尺寸。

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第10张图片

上图网络使用5*5*192滤波器进行卷积,共32个滤波器,得到输出:28*28*32。需要运算次数(乘法):5*5*192*28*28*32=120M。这么庞大的计算量在对于现在的计算机来说还是不太方便计算。

图像 小部件

使用上图的1x1卷积,虽然网络结构复杂了,但是可以得到相同的结果,且计算量是:28*28*16*192*1*1+28*28*32*5*5*16=12.4M。显然,可以大大简化卷积的计算量。

上述过程就如一个瓶子,在瓶口往下一点的位置瓶子最小,最小的位置就是1*1卷积的网络,该网络用于缓冲。

1.Inception网络

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第11张图片

2.Inception block

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第12张图片

八.迁移学习

如果需要建立一个计算机视觉任务,就相当于从头训练权重,但这是一个复杂且漫长的工作,github开源社区已经有很多牛人提供了一些网络训练好的权重,且性能都不差。对于我们的工作,可以利用他们的权重,得到基本网络,再用基本网络的输出作为我们网络的输入,训练我们自己的网络。如下图:

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第13张图片

上述网络是从网上下载的参数,可以识别10类,但是我们需要识别三类,该怎么做,很简单,因为网上一般会有权重,将上图红色框冻结作为一个函数,输出作为我们训练网络的输入,用来训练我们的softmax网络层,以适应我们自己网络。这样就可以免掉训练前面网络的权重。

介绍几种卷积神经网络(LeNet,AlexNet,VGG-16,ResNet,Inception)_第14张图片

当然也可以冻结一部分网络,将要利用的网络进行冻结,用该网络的输出作为自己要训练网络的输入,然后训练自己的网络。

总结:可以利用网上训练好的网络,下载权重,冻结部分网络,利用训练好的权重将这部分的网络的输出,作为后面自己网络的输入进行训练。这大大简化了我们的工作量。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(CNN)