卷积神经网络(Convolutional Neural Networks,简称CNN)

    卷积神经网络(CNN)算是深度神经网的前身了,在手写数字识别上在90年代初就已经达到了商用的程度。先明确一点就是,Deep Learning是全部深度学习算法的总称,CNN是深度学习算法在图像处理领域的一个应用。

一、简介

    现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。

    在图像处理中,往往把图像表示为像素的向量,比如一个1000×1000的图像,可以表示为一个1000000的向量。在上一节中提到的神经网络中,如果隐含层数目与输入层一样,即也是1000000时,那么输入层到隐含层的参数数据为1000000×1000000=10^12,这样就太多了,基本没法训练。所以必先减少参数加快速度。下面几种方法来改善:

1、局部感知。

2、权值共享。

3、池化。

1、局部感知

一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息:

    如上图所示,左图是全连接,右图是部分连接,假如每个神经元只和10×10个像素值相连,那么权值数据为1000000×100个参数,减少为原来的千分之一。而那10×10个像素值对应的10×10个参数,其实就相当于卷积操作的核。每个卷积核按照一定步长作用在整幅图像上后就产生一副新的图像,注意:一个神经单元就只作用在一个10*10的像素块,所以多个神经元所有的卷积结果共同构成一副新的图像。

2、权值共享

    不是局部连接的神经元权值相同,而是同一平面层的神经元权值相同,也就是说每个神经元用的是同一个卷积核去卷积图像。有相同程度的位移、旋转不变性。这样的话参数就减少到10*10=100个了,我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,但一种卷积核就代表一种特征。可以提取多种特征,那就用多种卷积核,就产生多幅图像,这样的话,每层就有有多个二维平面组成,每个平面由多个独立神经元组成,每个神经元只作用于输入图像的一个局部像素块。每种卷积核去卷积图像就得到对图像的不同特征的放映,我们称之为Feature Map。
那么隐层的神经元个数怎么确定呢?它和原图像,也就是输入图像的大小(神经元个数)、卷积核的大小和卷积核在图像中的滑动步长都有关,例如,我的图像是1000x1000像素,而滤波器大小是10x10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000x1000 )/ (10x10)=100x100个神经元了。注意,这只是一种卷积核,也就是一个Feature Map的神经元个数。

3、池化

即池化,即下采样,目的是减小特征图,池化规模一般为2×2。常用的池化方法有:
最大池化(Max Pooling)。取2*2=4个点的最大值。这是最常用的池化方法。
均值池化(Mean Pooling)。取4个点的均值。


4、ImageNet-2010网络结构

下图即为Alex的CNN结构图。需要注意的是,该模型采用了2-GPU并行结构,即第1、2、下图即为Alex的CNN结构图。需要注意的是,该模型采用了2-GPU并行结构,即第1、2、并行与模型并行。数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合。而模型并行则是,将若干层的模型参数进行切分,不同的GPU上使用相同的数据进行训练,得到的结果直接连接作为下一层的输入。

输入:224×224大小的图片,3通道
第一层卷积:5×5大小的卷积核96个,每个GPU上48个。
第一层max-pooling:2×2的核。
第二层卷积:3×3卷积核256个,每个GPU上128个。
第二层max-pooling:2×2的核。
第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。

第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。

第五层卷积:3×3的卷积核256个,两个GPU上个128个。

第五层max-pooling:2×2的核。

第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。

第二层全连接:4096维

Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。


参考资料:

http://www.36dsj.com/archives/24006

http://blog.csdn.net/zouxy09/article/details/8781543/

http://blog.csdn.net/celerychen2009/article/details/8973218




  

卷积神经网络Convolutional Neural NetworksCNN)是一种强大的深度学习算法,主要用于图像识别和处理。CNN的结构图主要包括卷积层、激活函数、池化层和全连接层。 卷积层是CNN的核心组成部分,由多个卷积核组成。每个卷积核在图像上进行滑动操作,通过计算卷积操作得到新的特征图。卷积操作可以提取出图像的局部特征,并保留了空间结构信息。 在卷积层之后,激活函数(如ReLU)被应用于特征图中的每个元素,以引入非线性。激活函数可以增加网络的表达能力,并促使网络学习更复杂的特征。 池化层用于减少特征图的维度,它通过将特定区域内的特征值进行聚合,并选择最显著的特征进行保留。常用的池化操作包括最大池化和平均池化。池化层可以减少特征图的大小,从而降低参数数量,减小计算量。 最后,全连接层将池化层输出的特征图转换为向量形式,并连接到输出层。全连接层的作用是对特征进行分类或回归预测。它们通常由全连接神经元组成,每个神经元与上一层的所有神经元相连。 在CNN的结构图中,卷积层和池化层可以多次堆叠,以增加网络的深度。这种多层次的结构可以使网络学习到更高级别的抽象特征。此外,CNN还可以通过添加批量归一化、dropout等技术来提高网络的性能和泛化能力。 总之,CNN的结构图展示了卷积神经网络的层次组织和数据流动方式,有助于理解其工作原理和网络结构的设计。通过逐层堆叠不同的层,CNN可以有效地提取图像中的特征,并在分类、目标检测等任务中取得优秀的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值