一种基于卷积神经网络的图像背景分割和识别方法与流程

文档序号:15833258发布日期:2018-11-07 07:33阅读:233来源:国知局
一种基于卷积神经网络的图像背景分割和识别方法与流程

本发明属于图像背景分割和识别分类,具体涉及一种基于卷积神经网络的图像背景分割和识别方法。

背景技术

传统的图像分割主要有两种实现方案,一种是阈值法,阈值分割法是简单地用一个或几个阈值将图像的直方图分成几类,图像中灰度值在同一个灰度类内的象素属干同一个类,可以分为全局阈值分割和局部阈值分割。最简单形式的阈值法只能产生二值图像来区分两个不同的类,另外,它只考虑象素本身的值,一般都不考虑图像的空间特性,这样就对噪声很敏感,它也没有考虑图像的纹理信息等有用信息,使分割效果有时不能尽如人意。另一种方案是基于边缘检测的分割方法,边缘检测算法一般有如下四个步骤:

(1)滤波:边缘检测算法主要基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器性能;

(2)增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来;

(3)检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的反立用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据;

(4)定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。

基于边缘检测的分割方法中不同的边缘检测算法使用不同的边缘检测算子,算子包括sobel算子,prewitt算子,log算子和canny算子等,各个算子各有各的特点和应用领域,而每个算子只能反映出边缘算法性能的一个方面,在许多情况下需要综合考虑,做不到广泛的适用性。一方面目前卷积神经网络应用于图像识别分类时,绝大多数模型没有考虑图像背景对识别分类所产生的影响,直接使用原始的图像放入模型进行识别,这会对识别结果产生影响。另一方面现在是信息化时代,也是大数据时代,传统的分割算法难以解决处理如此大的数据量的问题,因此需要大量时间来处理这些数据,以达到图像分割的目的。而且由于不同类型的背景差异都是比较大的,按传统的图分割方法来处理不同类型的图像,大部分图像都达不到令人满意的效果。在图像识别方面,几乎没有人关心背景给图像识别所带来的影响,而这个确实是一个不能忽略的问题,因为有些背景严重影响到了其识别分类的效果。



技术实现要素:

发明目的:针对上述现有技术存在的问题,本发明提出一种基于卷积神经网络的图像背景分割和识别方法,该方法提高优化分割效果和具有精准识别、高效的分割和应用广泛特点。

技术方案:一种基于卷积神经网络的图像背景分割和识别方法,包括如下步骤:

(1)根据待处理图像的内容主体确定学习样本,所述样本标注有图像主体名称信息;

(2)根据样本图像信息,利用背景分割卷积神经网络进行训练,得到背景分割模型;

(3)进行图像背景分割,根据分类卷积神经网络进行训练,得到识别分类模型;

(4)利用背景分割模型对图像数据信息进行处理,根据背景分割后的图像不同内容主体进行保存,利用识别分类模型得到识别结果。

优选的,所述的背景分割卷积神经网络模型包括卷积层、池化层和上采样层,所述的卷积层为8个,所述的池化层为5个,所述的上采样层为1个;所述的识别分类模型包括卷积层、池化层和全连接层,所述的卷积层为4个,所述的池化层为4个,所述的全连接层为3个。

进一步的,所述的识别分类模型包括卷积层、池化层和全连接层,所述卷积层包括5×5卷积核或3×3卷积核构成的不同卷积层,所述5x5卷积核的步长为1,所述的3x3卷积核的步长为2,所述池化层的卷积核大小为2×2,步长为2。

进一步的,所述的步骤(1)包括首先进行样本采集,所述的样本根据需要分割图像内容设有标签,所述的标签标明样本图像主体名称,根据需要背景分割的图像类别,将样本存放在不同的文件夹下。

进一步的,所述的步骤(2)包括根据获取的样本图像,并且根据样本图像构建背景分割卷积神经网络,让卷积神经网络自主学习样本图像,训练得到背景分割模型,并保存于本地。

进一步的,所述步骤(3)包括将进行背景分割后的图像放入设计好的识别分类卷积神经网络,根据不同类型的图像内容主体,将它们归类放在相应图像主体标签的同一个文件夹下,进行卷积神经网络自主学习样本,然后经过训练得到识别分类模型,并存于本地。

进一步的,步骤(4)具体包括如下步骤:

(41)根据需进行背景分割的图像调用本地保存的背景分割模型,并将分割背景后的图像存于本地;

(42)将步骤(41)分割完背景的图像通过调用本地保存的分识别分类模型进行识别分类,得到预测结果;

(43)将步骤(42)识别分类的结果使用txt文本保存于本地,根据测试时间命名txt文本。

有益效果:本发明与现有技术相比,其显著的效果在于:第一,本发明将卷积神经网络应用于图像分类,能够直接与图像像素进行卷积,从图像像素中提取图像特征,该方法更加接近人类大脑视觉系统的处理方式。第二,对于某些特定类型的图像,通过使用背景去除模型,可以有效去除图像背景,并且这种模型可以实现完全自动化效果;第三,在去除图像的背景之后,将它们放入分类模型进行识别,可以有效提高卷积神经网络模型的识别和分类效果;第四,利用卷积神经网络进行图像背景分割,在大数据量的前提下,依然能够保持高效率,达到好的分割效果,且具有广泛的适用性;第五,再将其用于图像识别分类,还能够有效的提高其识别分类的准确率。

附图说明

图1是本发明的背景分割识别卷积神经网络模型整体流程图;

图2是本发明的背景分割卷积神经网络模型结构图;

图3是传统的cnn网络结构图;

图4是本发明的识别卷积神经网络模型结构图。

具体实施方式

为了详细的说明本发明公开的技术方案,下面结合说明书附图和具体实施例做进一步的阐述。

本实施例的所有模型建立和实验均在windows10版本下进行实现。本实施例首先搭建本发明所述方法的运行环境,具体包括下载anaconda,版本为适用于windows64位操作系统,且适用于python3.6。anaconda是一个用于科学计算的python发行版,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。然后在anaconda中设置好其运行环境为python3.6,接着安装matplotlib(数据图形库),tensorflow库,spyder(python编辑器),numpy(数组函数库)。完成这些库的安装,本发明的运行环境也就搭建成功。基于搭建好的运行环境具体阐述本发明的实施步骤。

本发明公开的是一种用于背景分割识别的神经网络方法,具体步骤如下:

步骤1:确定学习样本

利用卷积神经网络来实现背景分割,首先需要确定学习样本,这些样本都是我们上过标签的,该标签用于区分样本需要分割出的内容主体,如分割出一只狗,就像样本中通过标签标注内容主体为狗的图像部分,则它的标签就是“dog”,通过这些样本,通过训练,就可以得到模型,也就是我们需要搜集需要背景分割的图像。

具体的,我们在这里设置的样本为10类,包括花卉,人物肖像,马,狗,猫,大象,汽车,牛,羊,挂钟,每一类的图片数量为5000张。按照不同的类别,把它们放在同一个文件夹下,如猫和狗为不同类别,那就把它们放在两个不同的文件夹下,作为不同的学习样本。文件夹命名方式就以种类名称命名,同时,作为学习训练的数据量尽可能要足够多,学习样本越多,就够得到效果更好的模型,本发明各类样本数据量为5000,可以满足要求。

步骤2:利用学习样本训练得到背景分割模型

根据获取的样本图像,将它们都放入设计好的背景分割卷积神经网络,如图2所示,通过让卷积神经网络自主学习这些样本,自我调节模型参数至结束,其结束条件为学习完所有的图像,然后训练得到我们的背景分割模型,并保存于本地,保证我们可以随时调用此模型。

图2是背景分割卷积神经网络模型结构图。模型可以接受任意尺寸的输入图像,然后通过反卷积对最后一个卷积层的特征图进行上采样,使它恢复到输入图像相同的尺寸,从而对每个像素都进行预测,同时保留了原始输入图像的空间信息,最后在与输入图像等大小的特征图上对每个像素进行分类,逐像素地分类计算损失,相当于每个像素对应一个训练样本。模型将传统cnn中的全连接层转化成卷积层,图3是传统的cnn模型,该cnn模型有5个卷积层,还有两个全连接层f1、f2分别对应长度为4096的向量,以及全连接层f3对应长度为n的向量,n表示n个不同类别(如设置为10,表示10个不同类别,根据需要可自定义)的概率。图2中的模型将这3个全连接层转换为卷积层,卷积核的大小分别为(4096,1,1)、(4096,1,1)、(n,1,1)。模型输入的图像可以是任意大小,本发明中图像大小都是224*224,在经过网络的第一层pooling(pool1)之后变为原图的1/2,第二层pooling(pool2)后变为原图大小的1/4,第三层pooling(pool3)后变为原图大小的1/8,第四层pooling(pool4)变为原图大小的1/16,第五层pooling(pool5)变为原图大小的1/32。最后模型直接对1/32尺寸的特征图进行上采样操作,这个上采样是通过反卷积(deconvolution)实现的,这样的操作还原的图像就是conv5中的卷积核中的特征。本发明的上采样步长32,确保还原了图像中最明显的那些特征,背景也就可以通过这样的操作来被分割开来,实现图像的背景分割,而通过这样的方式,对所有的学习样本进行训练后,我们就可以得到一个背景分割模型并保存于本地。

步骤3:利用分割后图像训练得到识别分类模型

进行背景分割后的图像,放入设计好的识别分类卷积神经网络,如图4所示,依然是根据不同类型的图像,将它们归类放在同一个文件夹下,通过让卷积神经网络自主学习这些样本,经过训练得到识别分类模型,将模型保存于本地,保证我们可以随时调用此模型。

图4是识别分类模型结构图。该模型是根据经典的vggnet修改所得到的,因为原始的vggnet网络模型过于庞大,需要强大的硬件条件加以支持,训练难度过大,消耗的资源太大,不能得到广泛的普及。而本发明经过修改后得到的模型,简化了模型,不仅仅明显减小了模型参数,还使得模型训练难度显著降低,而且其识别分类的准确率能保持在与之相当的水平。模型一共包含11层,具体说明如下,

第一层:卷积层,其输入为原始的图像,原始图像的尺寸为224×224×3。卷积层的过滤器尺寸为5×5,深度为32,使用全0补充,步长为1。这一层的输出的尺寸为224×224,深度为32。这一个卷积层总共有5×5×3×32+32=2432个参数,其中32为偏置项参数个数,卷积层的参数个数只和过滤器的尺寸,深度以及当前层节点矩阵的深度有关。

第二层:池化层,这一层的输入为第一层的输出,是一个224×224×32的节点矩阵。本层采用的过滤器大小为2×2,步长为2,所以本层的输出矩阵大小为112×112×32。

第三层:卷积层,本层的输入矩阵大小为112×112×32,采用的过滤器大小为5×5,深度为64,使用全0补充,步长为1。这一层的输出的尺寸为112×112×64。

第四层:池化层,本层的输入矩阵大小为112×112×64,采用的过滤器大小为2×2,步长为2,本层的输出矩阵大小为56×56×64。

第五层:卷积层,本层的输入矩阵大小为56×56×64,采用的过滤器大小为3×3,深度为128,使用全0补充,步长为1。

第六层:池化层,本层的输入矩阵大小为56×56×128,采用的过滤器大小为2×2,步长为2,本层的输出矩阵大小为28×28×128。

第七层:卷积层,本层的输入矩阵大小为28×28×128,采用的过滤器大小为3×3,深度为128,使用全0补充,步长为1。

第八层:池化层,本层的输入矩阵大小为28×28×128,本层采用的过滤器大小为2×2,步长为2,本层的输出矩阵大小为14×14×128。

第九层:全连接层,本层输入为14×14×128矩阵,将其拉直为一个长度为14×14×128的向量,即将一个三维矩阵拉直到一维空间以向量的形式表示,这样才可以进入全连接层进行训练。本层的输出节点个数为1024。

第十层:全连接层,本层的输入节点个数为1024个,输出节点个数为512个。

第十一层:全连接层,本层的输入节点个数为512个,输出节点个数为n个(n表示类别数,根据需要自定义)。

同时我们使用relu作为激活函数,其函数为:

还使用局部响应归一化,来提高我们模型的准确率,其函数为:

其中i表示第i个核在位置(x,y)运用激活函数relu后的输出,n是同一位置上临近的kernalmap的数目,n是kernal的总数。参数k,n,都是超参数,一般设置k=2,n=5,ɑ=1*e-4,β=0.75。

在模型的最后一层,使用softmax函数来将各神经元的输出压缩到[0,1]之间。其函数为:

其中,c为输出层神经元的个数,z是一个c维的向量,表示的是未经softmax之前的输出(softmax层的输入)。p(i)表示是第i类的概率,是一个标量。

步骤4:获取待处理图像

通过学习样本,得到背景分割,识别分类两个模型后,就可以来应用于真实的数据,即待处理的图像数据,没有给出人工标注的图像信息,也就是我们可以将不同类型的图像混合在一起,放入模型中,让模型自己去进行背景分割操作,以及识别分类操作。能够处理数据量的大小及速度,主要取决于硬件方面的问题,模型本身可以做到实时不间断的背景分割以及识别工作。使用带有gpu加速器的服务器的效率远高于只含有cpu的服务器。这里就是把所有需要处理的图像置于一个文件夹下就可以,等待下一阶段的处理工作。

步骤5:调用背景分割模型处理图像

根据传入的待处理的图像,我们调用保存于本地的背景分割模型,可以实现对所有图像的实时处理,得到分割背景图像,将对所有图像进行分割背景操作,这些被处理完成的图像将被放在一个文件夹下,保存于本地。

具体的,我们是在spyder中调用保存于本地的背景分割模型,对所有图像进行分割背景操作。

步骤6:调用识别分类模型处理分割后图像

根据处理之后得到的图像(经过背景移除的图像),我们调用保存于本地的识别分类模型,就可以将这些图像进行识别分类,就能够得到所有图像的识别结果。

具体的,首先是在spyder中我们调用保存于本地的识别模型,对所有经过背景分割的图像进行识别操作。

步骤7:保存结果

识别操作完成后,得到的识别分类结果,我们使用txt文本将这些信息(图像以及对应的识别结果)保存于本地,将以测试时间来命名txt文本。如,我们在8:00时处理的一批图像,保存的txt文件名为8:00.txt。在txt文本中,分行记录信息,每一行记录一条识别结果。如,处理的第一张图像名为“test1.jpg”,这一张图像的识别结果为“狗”,那么第一行记录的信息为“test.jpg——狗”,以此类推,记录好所有的图像的识别结果,最终停止。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1