卷积神经网络CNN

本文介绍了卷积神经网络(CNN)的基本概念,包括卷积、图像特征和CNN的结构。重点讨论了权值共享如何减少参数数量,以及LeNet-5作为CNN的经典实例。CNN在图像识别中具有位移、缩放不变性的优势,通过学习数据自动提取特征,简化了处理流程。
摘要由CSDN通过智能技术生成

本文学习笔记的部分内容参考zouxy09的博客,谢谢!http://blog.csdn.net/zouxy09/article/details/8775360

什么是卷积

卷积如果改名为“加权平均积”,就会很好理解了。卷积的离散形式就是常用的加权平均,而连续形式则可理解为对连续函数的加权平均。假如我们观测或计算出一组数据,但数据由于受噪音的污染并不光滑,我们希望对其进行人工处理。那么,最简单的方法就是加权平均。实际上加权平均是两个序列在做离散卷积,其中一个序列是权重,另一个序列是原数据。试想若把序列换为函数,则就是我们通常卷积的定义。这时可使用一个函数对另外一个函数做加权平均。不过,一个扮演的是权重角色,另一个则扮演被平均的角色。

数学上定义:设ƒ(x),g(x)是实数集R上的两个可积函数,作积分


图像特征

其实对于一张图片来说,像素级特征是没有价值的,特征是具有结构性的时候,才能更好的反应这幅图像。因此可通过卷积神经网络把底层特征表达一层层的抽象到高层特征表示。如:像素级特征表示的图像,在第一层学习后得到梯度级图像表示,再上一层学习后得到目标部分级图像表示,再次学习后得到整个目标结构模型特征。

其实卷积神经网络的本质是构建多层学习模型,来学习得到图像更有价值的特征,从而最终提升分类或预测的准确性。


卷积神经网络

卷积神经网络是人工神经网络的一种,它的最厉害的地方在于权值共享网络结构,降低了网络模型的复杂度,减少了权值数量。优点是图像可直接作为网络的输入,避免了传统算法中复杂的特征提取和数据重建的过程。

CNN利用空间关系减少需要学习的参数数目。CNN中,图像的一小部分作为层级结构的最底层输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著特征

卷积神经网络结构


CNN是一个多层神经网络,每层由多个二维平面组成,每个平面由多个独立神经元组成。

如上图,输入层可直接使用原图像的像素表示作为输入,通过三个可训练的滤波器和可加偏置对原图像进行卷积,卷积后在C1层产生三个特征映射图(每个特征映射图都可看为是对原图像的抽象),这是一个卷积的过程,称为卷积层。卷积层得到的特征映射图作为输入,将图中每组的四个像素进行求和,加权值,加偏置,再通过一个sigmoid函数得到三个S2层的特征映射图,这是一个下采样的过程。如此卷积层和下采样层交替,最终给出图像的向量表示。后可接一个分类器(SVM或传统神经网络)得到输出。

参数减少和权值共享

卷积神经网络最厉害的地方在于权值共享网络结构,其具体做法如下:


上图左:如果我们有1000*1000像素的图像,有1000000个隐层神经元,那么他们全连接的话(每个隐层神经元都连接图像的每一个像素点),就有1000*1000*1000000=10^12个连接,也就是10^12个权值参数。

考虑到图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。如上图右:假如局部感受野是10*10,隐层每个感受野只需要和这10*10的局部图像相连接,所以1百万个隐层神经元就只有一亿(1000000*10*10)个连接,即10^8个参数。

试想如果每个神经元用的都是同一个卷积核去卷积图像。这样我们就只有100个参数。所以不管隐层的神经元个数有多少,两层间的连接只有100个参数,所有神经元公用同一个卷积核,这就是权值共享。

因为一种滤波器,也就是一种卷积核就是提出图像的一种特征,当需要提取不同的特征时,需要加多几种滤波器就可以了。所以假设我们加到100种滤波器,每种滤波器的参数不一样,表示它提出输入图像的不同特征,这样每种滤波器去卷积图像就得到对图像的不同特征的映射,称之为Feature Map。所以<

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mdCNN is a Matlab framework for Convolutional Neural Network (CNN) supporting 1D, 2D and 3D kernels. Network is Multidimensional, kernels are in 3D and convolution is done in 3D. It is suitable for volumetric input such as CT / MRI / video sections. But can also process 1d/2d images. Framework supports all the major features such as dropout, padding, stride, max pooling, L2 regularization, momentum, cross entropy, MSE. The framework Its completely written in Matlab, No dependencies are needed. It is pretty optimized, when training or testing all of the CPU cores are participating using Matlab Built-in Multi-threading. There are several examples for training a network on MNIST, CIFAR10, 1D CNN, and MNIST3d - a special expansion of MNIST dataset to 3D volumes. MNIST Demo will download the dataset and start the training process. It will reach 99.2% in several minutes. CIFAR10 demo reaches about 80% but it takes longer to converge. For 3D volumes there is a demo file that will creates a 3d volume from each digit in MNIST dataset, then starts training on the 28x28x28 samples. It will reach similar accuracy as in the 2d demo This framework was used in a project classifying Vertebra in a 3D CT images. =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ To run MNIST demo: Go into the folder 'Demo/MNIST' , Run 'demoMnist.m' file. After 15 iterations it will open a GUI where you can test the network performance. In addition layer 1 filters will be shown. To run MNIST3D demo: Go into the folder 'Demo/MNIST3d' , and run 'demoMnist3D.m' file. =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Check the 'mdCNN documentation.docx' file for more specification on how to configure a network For general questions regarding network design and training, please use this forum https://groups.google.com/forum/#!forum/mdcnn-multidimensional-cnn-library-in-matlab Any other issues you can contact me at hagaygarty@gmail.com Please use matlab 2014 and above
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值