目标分类网络的介绍及应用(一)--卷积神经网络介绍及手写数字识别代码实现

本文介绍了卷积神经网络(CNN)的基本原理,包括卷积操作、网络结构,以及其在图像分类中的优势。通过卷积层、池化层的介绍,展示了CNN如何减少计算量并提取图像特征。文章还探讨了CNN的反向传播过程,并给出了基于CNN实现MNIST手写数字识别的简单网络结构。
摘要由CSDN通过智能技术生成

目标分类网络的介绍及应用

摘要:之前介绍了基于前向反馈的BP神经网络,了解了神经网络模型的工作原理,以及损失函数、分类器、优化方法等基本概念。由于BP神经网络具有其局限性,如泛化能力弱,难以处理数据量大的数据。本文旨在介绍基于卷积神经网络的分类器,目标分类的任务是识别图片中是什么物体,并给出其对应的置信度。卷积神经网络与传统的BP神经网络最大的不同是其采用卷积核来做特征提取,这能极大的减少计算量,从而有效提高运算效率。此外,卷积目标分类网络是我们后面将介绍的目标检测网络的基础,而卷积神经网络的出现才真正将神经网络技术应用于人们生活的方方面面。

一、卷积神经网络简介

传统的神经网络算法以及卷积神经网络算法都是针对图像分类而提出的解决方案,目标检测算法我们后面会提到,先从目标分类网络讲起。所谓目标分类,就是对给定一张图片,通过特定的算法得出该图片的类别,常用的方法有利用图像的HoG、SIFT特征结合SVM分类器等算法,传统的BP神经网络算法以及我们现在提到的卷积神经网络算法等。从2007年Alex大神首次将卷积神经网络用于ImageNet分类比赛以来,卷积神经网络就替代了经典的基于图像特征的分类方法,大大提高了图像分类的正确率,2016年的GoogleNet神经网络模型可以在ImageNet数据集上达到6.7%的误分类率,在2017年,38个竞争团队中有29个错误率低于5%,可以说正是卷积神经网络的出现,将人工智能带出了寒冬。

1.1 卷积神经网络原理

卷积神经网络(Convolution Neural Network,CNN)是近年来应用最为广泛的深度学习的神经网络结构,它与传统的BP神经网络相比,最大的一个显著特征就是能有效的降低网络结构的参数量,同时能够更有效地提取图像特征。早在20世纪60年代,就有学者将卷积模型应用到工业电路的模型预测中,80年代末反向传播的神经网络模型开始变得流行,2006年Hinton和Salakhutdinov将卷积算法应用于深度学习,但是受限于计算机硬件的发展,直到2012年Alex将卷积神经网络用于分类检测,卷积神经网络算法成为了神经网络算法中的主流。

1.1.1 深度学习中的卷积操作

在学习卷积神经网络的原理之前,我们先了解什么是卷积。相信上过控制工程的同学们都知道卷积是信号处理的一种手段,应用傅立叶变换我们可以将时域与频域中的信号相互转换,刚入门深度学习的朋友很难将图像处理中的卷积操作和我们信号处理中的卷积操作联系起来,是因为我们在学习信号处理时接触的大多是一维的信号,而我们的图像是包含了二维的信息的。在数学上,对于二维离散的模型,它具有如下的表现形式:

y ( i , j ) = ∑ u = − ∞ ∞ ∑ v = − ∞ ∞ x ( u , v ) h ( i − u , j − v ) = x ( n ) ∗ h ( n ) y\left( i,j \right) = \sum_{u = - \infty}^{\infty}{\sum_{v = - \infty}^{\infty}{x\left( u,v \right)h\left( i - u,j - v \right) = x\left( n \right)*h(n)}} y(i,j)=u=v=x(u,v)h(iu,jv)=x(n)h(n)

有了上面的式子,我们看看深度学习中的卷积操作是怎么实现的。其实卷积操作非常简单,我们刚接触数字图像处理时所用的高斯滤波、均值滤波、膨胀、腐蚀等操作均可以看作是卷积的应用。要想更深地了解卷积与深度学习之间的联系,可以看这里进行卷积操作我们需要一个卷积核,卷积核就相当于一个滤波器,卷积核的参数有尺寸和权值,卷积核与输入信号做加权叠加得到输出。假设我们有一副5*5的图像和一个3*3的卷积核,它的权值如图所示:

在这里插入图片描述

卷积操作的示意如图:

在这里插入图片描述

在图像处理中,所谓卷积就是将图像中对应的位置的像素值和卷积核的对应位置的权值相乘再求和的过程。需要特别指出的是,单个卷积核也是有通道数的,且其应该与对输入信号的通道数相等,注意这与卷积核的个数是不同的概念,通常我们写程序时只指定卷积核的个数,卷积核的通道数默认与输入数据相匹配。如我们有一个3通道的RGB图像,那么我们一个3*3卷积核的参数量应该是 3 × 3 × 3 = 27 3 \times 3 \times 3 = 27 3×3×3=27个。多通道卷积如下图所示:

在这里插入图片描述

如果我们将卷积核的中心点视为初始点,那么它四邻域的点可以表示为:

∑ u = − 1 1 ∑ v = − 1 1 F ( i − u , j − v ) \sum_{u = - 1}^{1}{\sum_{v = - 1}^{1}{F\left( i - u,j - v \right)}} u=11v=11F(iu,jv)

原始输入图像的像素点可以表示为:

h ( i , j ) h(i,j) h(i,j)

那么我们之前提到的卷积操作就可以表示为:

y ( i , j ) = ∑ u = − 1 1 ∑ v = − 1 1 h ( u , v ) F ( i − u , j − v ) = h ( i , j ) ∗ F ( i , j ) y\left( i,j \right) = \sum_{u = - 1}^{1}{\sum_{v = - 1}^{1}{h\left( u,v \right)F\left( i - u,j - v \right) = h\left( i,j \right)*F(i,j)}} y(i,j)=u=11v=11h(u,v)F(iu,jv)=h(i,j)F(i,j)

这和我们定义的二维离散的卷积操作的数学表达式相符,这也是为什么我们把上述操作称为卷积的原因。使用卷积操作能够极大地减少数据的运算量。举个例子[1],如果我们处理Cifar-10数据集,每张图片的大小是32*32*3,其中32*32表示图像的尺寸,*3代表图像的通道数,即为RGB图像。若我们采用全连接层网络(BP神经网络),设置第一层输入层的节点数为500个,那么仅包含一个输入层的全连接网络的参数量为:

32 × 32 × 3 × 500 + 500 = 150 万 32 \times 32 \times 3 \times 500 + 500 = 150万 32×32×3×500+500=150

随着网络结构的加深,数据量则会更大!无疑这样的数据量处理是很难满足处理要求的。而当我们使用卷积神经网络时,比如当我们同样使用500个3*3的卷积核作为第一个输入卷积层,其参数量应为: 3 ∗ 3 ∗ 3 ∗ 500 + 500 = 14000 3*3*3*500+ 500 =14000 333500+500=14000,数据量大大降低。当然我们一般不会使用这么多卷积核来做特征提取,而是增加卷积网络的深度,使用卷积网络的网络结构可能达到152层甚至更深。全连接网络与卷积神经网络的对比如下图所示:

在这里插入图片描述

1.1.2 卷积神经网络结构

介绍完深度学习中的卷积操作,接下来正式提出卷积神经网络。一般而言,卷积神经网络主要由下面五个部分组成:

  • 输入层(INPUT LAYER)

  • 卷积层(CONVOLUTION LAYER)

  • 池化层(POOLING LAYER)

  • 全连接层(FULLCONECT LAYER)

  • 输出层(OUTPUT LAYER)

结合一个实际的卷积分类神经网络,其结构如下图所示:

在这里插入图片描述

一般而言,我们的输入层是一个代表图像的三维像素矩阵,即像素*像素*通道数卷积层所做的就是我们上述提到卷积操作,用于提取图像特征,一般卷积层的参数包括卷积核尺寸(size),卷积核个数(channels),步长(stride),填充参数(padding)等。在卷积操作之后我们通常还要进行类似全连接神经网络中的激活函数的操作,常用的激活函数有Relu,Sigmoid,tanh激活函数等,具体实现方式可以参考我上一篇blog池化层对每一个经卷积激活后的数据(activation
map)进行操作,能够进一步提取特征并降低参数的数量,最常用的池化策略是
最大池化
(Max Pooling)。全连接层即是将经卷积池化的特征连接起来,重新组合成一个n*1的数据,再连接一个普通的神经网络结构,目的是为了方便后续的分类任务。输出层采用某一的分类器(通常是softmax分类器)输出种类的概率并给出输出结果。输入层,全连接层以及输出层在之前的文章中已经有过介绍了,这里就不重复介绍了,下面具体看一下卷积层和池化层。

1.1.2.1 卷积层

卷积层是卷积神经网络中最重要的部分,它的参数直接决定了下一层的输入的数据。下面给出一个例子来讲解单个卷积层输出尺寸的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值