卷积神经网络--CNN
1. 卷积神经网络介绍
卷积神经网络(Convolutional Neural Networks,CNN)是一种包
含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。
常见的CNN网络有LeNet-5、VGGNet、GoogleNet、ResNet、
DenseNet、MobileNet等。
CNN主要应用场景: 图像分类、图像分割 、 目标检测 、 自然语言处
理等领域。
2. 卷积神经网络基本结构及原理
卷积神经网络基本结构
CNN基本结构:INPUT -> 卷积->激活 -> 池化 -> 全连接 ->OUTPUT
卷积层
对输入的图像数据与卷积核做卷积运算提取图像的高阶特征
卷积过程的几个参数
1、深度(depth):卷积核个数,也称神经元个数,决定输出的特征图的数量。
2、步长(stride):卷积核滑动一次的大小,决定滑动多少步可以到达边缘。
3、填充值(padding):在外围边缘补充0的层数。
卷积过程
卷积网络最主要的两个特征
1、局部感知
2、权值共享
激活层、Relu函数
池化层
下采样(downsamples),对输入的特征图进行压缩;
一方面使特征图变小,简化网络计算复杂度,有效控制过拟合;
另一方面进行特征压缩,提取主要特征。
池化,规模一般为 2*2,操作一般有2种:
- 最大池化(Max Pooling)。取4个点的最大值。这是最常用的池化方法。
- 均值池化(Mean Pooling)。取4个点的均值。
全连接层
连接所有的特征,将输出值送给分类器,实现分类。
3. pytorch中卷积的实现
卷积层
torch.nn.Conv2d()
参数说明
in_channels:输入通道数(深度)
out_channels:输出通道数(深度)
kernel_size:滤波器(卷积核)大小
stride:表示滤波器滑动的步长
padding:是否进行零填充
bias:默认为 True,表示使用偏置
groups:控制分组卷积,默认不分组,为1组。
dilation:卷积对输入的空间间隔,默认为 True
激活层
torch.nn.ReLU()
参数说明
inplace:是否在原数据进行操作,默认是False
池化层
torch.nn.MaxPool2d()
torch.nn.AvgPool2d()
参数说明
kernel_size :表示做最大池化的窗口大小
stride:步长
padding:是否进行零填充
dilation:卷积对输入的空间间隔,默认为 True
全连接层
torch.nn.Linear()
参数说明
in_features :输入特征数;
out_features:输出特征数;
bias:默认为 True,表示使用偏置
4. 经典卷积神经网络介绍
Lenet-5
LeNet5卷积神经网络源于Yann LeCun在1998年发表的论文:Gradient-
based Learning Applied to Document Recognition,是一种用于手写数字识别的
卷积神经网络。
LeNet-5是CNN网络架构中最知名的网络模型,是卷积神经网络的开山之
作。
AlexNet
2012 年, AlexNet 横空出世。AlexNet 使⽤卷积神经⽹络,并以很⼤的优
势赢得了ImageNet 2012 图像识别挑战赛冠军。
Alexnet模型由5个卷积层和3个池化Pooling 层 ,其中还有3个全连接层构
成。AlexNet 跟 LeNet 结构类似,但使⽤了更多的卷积层和更⼤的参数空间来拟
合⼤规模数据集 ImageNet。它是浅层神经⽹络和深度神经⽹络的分界线。
cifar10数据介绍
CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一
个用于识别普适物体的小型数据集。一共包含 10 个类别的 RGB 彩色图 片:飞
机( a叩lane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿
( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车
( truck )。图片的尺寸为 32×32 ,数据集中一共有 50000 张训练圄片和
10000 张测试图片
VGGNet
VGGNet 是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提
出的一种深层卷积网络结构,他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分
类任务的亚军。
VGGNet探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了
16~19层深的卷积神经网络,证明了增加网络的深度能够在一定程度上影响网络
最终的性能,使错误率大幅下降,同时拓展性又很强,迁移到其它图片数据上的
泛化性也非常好。到目前为止,VGG仍然被用来提取图像特征。
VGG可以看成是加深版本的AlexNet。都是conv layer + FC layer
GoogleNet
GoogleNet是2014年Google团队提出的一种全新的深度学习结构,赢得了
2014 年 ILSVRC 分类任务的冠军。
GoogLeNet是第一个使用并行网络结构的经典模型,这在深度学习的发展
历程中是具有开创性意义的。
GoogLeNet最基本的网络块是Inception,它是一个并联网络块,经过不断
的迭代优化,发展出了Inception-v1、Inception-v2、Inception-v3、Inception-v4、
Inception-ResNet共5个版本。
Inception家族的迭代逻辑是通过结构优化来提升模型泛化能力、降低模型
参数。
ResNet
ResNet(残差网络) 网络是在 2015年 由微软实验室中的何凯明等几位大神
提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO
数据集中目标检测第一名,图像分割第一名。
它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就
是“抄近道”的意思。
ResNet block有两种,一种两层结构,一种三层结构
MobileNet
MobileNet是谷歌在2017年提出,专注于移动端或者嵌入式设备中的轻量
级CNN网络。
MobileNet的基本单元是深度可分离卷积,其可以分解为两个更小的操作:
depthwise convolution和pointwise convolution。