图片分类方法和装置、机器人与流程

文档序号:14872058发布日期:2018-07-07 00:51阅读:145来源:国知局
本发明涉及图像处理领域,具体而言,涉及一种图片分类方法和装置、机器人。
背景技术
:当前研究者投入了非常多的精力研究神经网络,包括深度信念网,深度玻尔兹曼机,自动编码机,去噪编码机,卷积神经网络等。在这些网络中,全连接层是非常主要的构件,例如,深度信念网,自动编码机这样的网络所有层都是全连接层;卷积神经网络会增加几层全连接层以获得较好的分类准确度。全连接层的主要问题有:参数太多导致网络对终端的性能要求较高。针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种图片分类方法和装置、机器人,以至少解决现有技术中全连接层的参数太多导致网络对终端的性能要求较高的技术问题。根据本发明实施例的一个方面,提供了一种图片分类方法,包括:将待分类的目标图片输入到卷积神经网络的卷积层中,其中,所述卷积神经网络至少包括一个卷积层和一个池化层;根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量,其中,所述第一向量为一维向量,所述第一矩阵是所述卷积神经网络的最后一个池化层的输出;根据预先设置的第二卷积核对所述第一向量做卷积运算,得到第二向量,其中,所述第二向量为一维向量;根据所述第二向量对所述目标图片进行分类。进一步地,根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量包括:根据所述第一卷积核对所述第一矩阵做卷积运算,得到第二矩阵;将所述第二矩阵的所有元素按照预设顺序重新排列,得到所述第一向量。进一步地,在根据预先设置的第一卷积核对第一矩阵做卷积运算之前,所述方法还包括:获取训练样本,其中,所述训练样本包括预先划分好类别的多张图片,所述类别用于表征所述训练样本所指示的事物的种类;根据所述训练样本对所述卷积神经网络进行训练,得到所述第一卷积核。进一步地,根据所述训练样本对所述卷积神经网络进行训练,得到所述第一卷积核包括:将所述训练样本输入到所述卷积神经网络的卷积层中;根据初始状态的卷积核对所述第一矩阵做卷积运算,得到第一向量;根据所述第二卷积核对所述第一向量做卷积运算,得到第二向量;根据所述第二向量中目标元素的值确定所述训练样本的分类结果,其中,所述第二向量中目标元素的值指示所述第二向量的类别与所述目标元素对应的类别相同的概率大小,其中,所述目标元素是所述第二向量中的任意一个元素;将所述分类结果与每张所述图片的类别进行比较,得到分类误差值;判断所述分类误差值是否大于预设误差值;如果所述分类误差值大于所述预设误差值,对所述初始状态的卷积核的权重值进行调整,直至分类误差值小于等于所述预设误差值;如果所述分类误差值小于等于所述预设误差值,则训练结束,并将当前的卷积核作为所述第一卷积核。进一步地,所述第一卷积核满足如下公式:其中,m为卷积神经网络中输入向量维度,n为输出向量维度,stride为所述第一卷积核的步长,noc为输出通道个数,nconv为所述第一卷积核大小。根据本发明实施例的另一方面,还提供了一种图片分类装置,包括:输入单元,用于将待分类的目标图片输入到卷积神经网络的卷积层中,其中,所述卷积神经网络至少包括一个卷积层和一个池化层;第一运算单元,用于根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量,其中,所述第一向量为一维向量,所述第一矩阵是所述卷积神经网络的最后一个池化层的输出;第二运算单元,用于根据预先设置的第二卷积核对所述第一向量做卷积运算,得到第二向量,其中,所述第二向量为一维向量;分类单元,用于根据所述第二向量对所述目标图片进行分类。进一步地,所述第一运算单元包括:第一运算子单元,用于根据所述第一卷积核对所述第一矩阵做卷积运算,得到第二矩阵;排列子单元,用于将所述第二矩阵的所有元素按照预设顺序重新排列,得到所述第一向量。进一步地,所述装置还包括:获取单元,用于在所述第一运算单元根据预先设置的第一卷积核对第一矩阵做卷积运算之前,获取训练样本,其中,所述训练样本包括预先划分好类别的多张图片,所述类别用于表征所述训练样本所指示的事物的种类;训练单元,用于根据所述训练样本对所述卷积神经网络进行训练,得到所述第一卷积核。进一步地,所述训练单元包括:输入子单元,用于将所述训练样本输入到所述卷积神经网络的卷积层中;第二运算子单元,用于根据初始状态的卷积核对所述第一矩阵做卷积运算,得到第一向量;第三运算子单元,用于根据所述第二卷积核对所述第一向量做卷积运算,得到第二向量;第一确定子单元,用于根据所述第二向量中目标元素的值确定所述训练样本的分类结果,其中,所述第二向量中目标元素的值指示所述第二向量的类别与所述目标元素对应的类别相同的概率大小,其中,所述目标元素是所述第二向量中的任意一个元素;比较子单元,用于将所述分类结果与每张所述图片的类别进行比较,得到分类误差值;判断子单元,用于判断所述分类误差值是否大于预设误差值;调整子单元,用于如果所述分类误差值大于所述预设误差值,对所述初始状态的卷积核的权重值进行调整,直至分类误差值小于等于所述预设误差值;第二确定子单元,用于如果所述分类误差值小于等于所述预设误差值,则训练结束,并将当前的卷积核作为所述第一卷积核。进一步地,所述第一卷积核满足如下公式:其中,m为卷积神经网络中输入向量维度,n为输出向量维度,stride为所述第一卷积核的步长,noc为输出通道个数,nconv为所述第一卷积核大小。根据本发明实施例的另一方面,还提供了一种机器人,包括:上述图片分类装置。在本发明实施例中,目标图片为待分类的图片,将目标图片输入卷积神经网络的卷积层,卷积神经网络的最后一个池化层输出第一矩阵,根据第一卷积核对第一矩阵做卷积运算,得到第一向量,根据第二卷积核对第一向量做卷积运算,得到第二向量,第二向量的各个元素的值能够表示目标图片为某个类别的概率大小,因此,能够通过第二向量对目标图片进行分类,减少了全连接层参数的数量,降低了对终端性能的要求,使得网络能够部署在手机或者其他的一些嵌入式系统上,达到了降低对部署网络的终端性能的要求的技术效果,进而解决了现有技术中全连接层的参数太多导致网络对终端的性能要求较高的技术问题。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的一种图片分类方法的流程图;图2是根据本发明实施例的一种图片分类装置的示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。实施例1根据本发明实施例,提供了一种图片分类方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本发明实施例的一种图片分类方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,将待分类的目标图片输入卷积神经网络的卷积层,其中,卷积神经网络至少包括一个卷积层和一个池化层。步骤s104,根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量,其中,第一向量为一维向量,第一矩阵是卷积神经网络的最后一个池化层的输出。步骤s106,根据预先设置的第二卷积核对第一向量做卷积运算,得到第二向量,其中,第二向量为一维向量。步骤s108,根据第二向量对目标图片进行分类。图片分类就是输入一张图片,输出该图片对应的类别(狗,猫,船,鸟),或者说输出该图片属于哪种分类的可能性最大。给计算机一张图片让它对图片进行分类,就是向计算机输入一个充满像素值的数组,数组里的每一个数字范围都是0-255,代表该点上的像素值。让它返回这个数组对应的可能分类概率(例如,狗0.01,猫0.04,船0.94,鸟0.02)。人类分辨一张船的图片可能是通过图片里船的边缘,线条等等特征。类似的,计算机分辨一张船的图片也是通过这些底层特征来进行判断,比如图片里的图像边缘和图像轮廓,然后通过卷积神经网络建立更抽象的概念。卷积神经网络里第一层总是卷积层。正如前面所说,输入到卷积层里的是一个充满像素值的数组,假如是一个28*28*3的数组(3是rgb值)。可以把卷积层想象成一道光束,照在一张图片上面。这道光束叫做过滤器(卷积核),被光束照耀的地方叫做感受区。假设这道光束照亮的范围是一个5*5的方形区域。现在让这道光束从左到右,从上到下扫过图片的每一个区域。当所有移动完毕时,得到了一个24*24*3的数组。叫这个数组为特征图像。这个过滤器是一个数字类型的数组(里面的数字就是一些权重值)。过滤器的深度和输入的深度一样。所以过滤器的维度就是5*5*3。使用5*5*3过滤器,就可以得到输出数组24*24*3。如果使用更多的过滤器,就可以得到更多的特征图像。当过滤器扫或者卷积整个图片时,把过滤器里面的权重值和真实图片里面对应的像素值相乘,最后把所有结果加和,得到一个加和值。然后重复这个过程,扫描整个输入图片,(下一步把过滤器向右移动一个单元,然后在向右移动一步,如此),每一步都可以得到一个值。卷积的过程中,如果图片里有一个形状与该过滤器表示的形状相似,就会与过滤器产生激励效果,那么所得到的乘积结果加和值将就会是一个很大的数。可以增加其他的过滤器来检测图片的边缘和颜色等等。过滤器越多,特征图就越多,从输入数据里获取到的信息就越丰富。池化层通常用在卷积层之后,池化层的作用就是简化卷积层里输出的信息,减少数据维度,降低计算开销,控制过拟合。现有技术中在最后一个池化层的输出接多个全连接层,多个全连接层的参数非常多。从线性代数的角度讲,全连接层将一个向量空间映射到另一个向量空间,如果映射矩阵w的秩大于输入向量维数,信息不会有丢失。卷积操作从线性代数的角度讲,就是完成上面这个映射操作,而且就卷积神经网络使用的一般方式而言,卷积操作生成的映射矩阵w的秩一般为min{m,n},m为输入向量维度,n为输出向量维度;因此从向量空间角度讲,这意味着卷积操作的信息丢失仅和输出向量维度相关。对于二者的参数个数而言,全连接层需要的参数个数为m*n,卷积层需要的参数个数为noc*nconv,这里noc为输出通道个数,nconv为卷积核大小,事实上,这些参数还要满足如下的等式,stride为卷积每次移动的距离。也就是说,卷积需要的参数个数是m*noc-n*stride,少于全连接参数个数的m*n。这里的noc一般只有n的几分之一到几十分之一。han等使用参数剪枝方法降低全连接层参数数目,在他们的实验中,全连接层参数可以被压缩到20%,这意味着,在全连接参数矩阵中,仅仅有20%非零元素;这个实验也证明了使用一维卷积的合理性。在本发明实施例中,在最后一个池化层的输出接第一卷积核,利用卷积运算得到第二向量,第二向量的各个元素的值能够表示目标图片为某个类别的概率大小,代表图片可能的分类概率。例如第二向量为[0.01,0.04,0.94,0.02],数值越高表示这些特征图像和那一类更相近。这里0.94代表图像是船的可能性为94%,表示预测图片与过滤器产生了很高的激励,获取到了很多高层次的特征,例如船帆,船桨等等特征。0.02表示图像是鸟的可能性为2%,表示预测图片与过滤器产生了很低的激励,没有获取到了很多高层次的特征,例如翅膀,喙等特征。在本发明实施例中,目标图片为待分类的图片,将目标图片输入卷积神经网络的卷积层,卷积神经网络的最后一个池化层输出第一矩阵,根据第一卷积核对第一矩阵做卷积运算,得到第一向量,根据第二卷积核对第一向量做卷积运算,得到第二向量,第二向量的各个元素的值能够表示目标图片为某个类别的概率大小,因此,能够通过第二向量对目标图片进行分类,减少了全连接层参数的数量,降低了对终端性能的要求,使得网络能够部署在手机或者其他的一些嵌入式系统上,解决了现有技术中全连接层的参数太多导致网络对终端的性能要求较高的技术问题,达到了降低对部署网络的终端性能的要求的技术效果。可选地,根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量包括:根据第一卷积核对第一矩阵做卷积运算,得到第二矩阵;将第二矩阵的所有元素按照预设顺序重新排列,得到第一向量。因为压缩感知良好的数据恢复能力,压缩感知是当前非常热门的领域,从编码看,它是一种新的有损压缩编码方式;压缩感知的想法是使用通用的编码方式,特殊的解码方式完成编解码过程。在理论上,压缩一个服从分布p(x)的向量x,压缩感知编码的一种可能做法是对这个向量随机采样,解码时使用l1范数作为代价方程,恢复原向量,可以证明,如果分布符合某种条件,恢复的向量和原始向量的误差可以很小。使用重排的另一个原因是,因为卷积核的局部性质,仅仅经过卷积产生的向量只有局部信息,没有全局信息,重排后,对新的向量卷积,根据上面的压缩感知性质,卷积后的向量包含原始向量所有的信息,这样的卷积结果会有更好的全局特性。可选地,在根据预先设置的第一卷积核对第一矩阵做卷积运算之前,方法还包括:获取训练样本,其中,训练样本包括预先划分好类别的多张图片,类别用于表征训练样本所指示的事物的种类;根据训练样本对卷积神经网络进行训练,得到第一卷积核。第一卷积核是经过训练得到的。具体的训练过程可以如下:将训练样本输入卷积神经网络的卷积层;根据初始状态的卷积核对第一矩阵做卷积运算,得到第一向量;根据第二卷积核对第一向量做卷积运算,得到第二向量;根据第二向量中目标元素的值确定训练样本的分类结果,其中,第二向量中目标元素的值指示第二向量的类别与目标元素对应的类别相同的概率大小,其中,目标元素是第二向量中的任意一个元素;将分类结果与每张图片的类别进行比较,得到分类误差值;判断分类误差值是否大于预设误差值;如果分类误差值大于预设误差值,对初始状态的卷积核的权重值进行调整,直至分类误差值小于等于预设误差值;如果分类误差值小于等于预设误差值,则训练结束,并将当前的卷积核作为第一卷积核。损失函数可以帮助网络更新权重值,从而找到想要的特征图像。损失函数的定义方式有很多种,一种常用方式的是mse(meansquarederro)均方误差。将图片的真实分类值和图片通过网络训练出来的分类值代入均方误差误差公式,就得到了损失值。这个损失值在网络刚开始训练的时候可能会很高,这是因为权重值都是随机初始化出来的。最终目的就是想要得到预测值和真实值一样。为了达到这个目的,需要尽量减少损失值,损失值越小就说明预测结果越接近。在这一个过程中,需要不断的调整权重值,来寻找出哪些权重值能使网络的损失减小。可以使用到梯度下降算法来寻找这些权重值。可选地,根据第二卷积核对第一向量做卷积运算,得到第二向量包括:获取预先设置的第二卷积核,其中,第二卷积核为一维向量;利用预先设置的第二卷积核对第一向量做卷积运算,得到第二向量。实施例2为了减少全连接层的参数个数,使用如下的方案:1.上一层的输出reshape为一维向量。2.以固定的顺序重新排列这个向量;按照卷积核的滑动经过的2维向量依次排列成一维向量。3.对这个向量做一维卷积。从线性代数的角度讲,全连接层将一个向量空间映射到另一个向量空间,如果映射矩阵w的秩大于输入向量维数,信息不会有丢失。卷积操作从线性代数的角度讲,就是完成上面这个映射操作,而且就卷积神经网络使用的一般方式而言,卷积操作生成的映射矩阵w的秩一般为min{m,n},m为输入向量维度,n为输出向量维度;因此从向量空间角度讲,这意味着卷积操作的信息丢失仅和输出向量维度相关。对于二者的参数个数而言,全连接层需要的参数个数为m*n,卷积层需要的参数个数为noc*nconv,这里noc为输出通道个数,nconv为卷积核大小,事实上,这些参数还要满足如下的等式,stride为卷积每次移动的距离。也就是说,卷积需要的参数个数是m*noc-n*stride,少于全连接参数个数的m*n。这里的noc一般只有n的几分之一到几十分之一。han等使用参数剪枝方法降低全连接层参数数目,在他们的实验中,全连接层参数可以被压缩到20%,这意味着,在全连接参数矩阵中,仅仅有20%非零元素;这个实验也证明了使用一维卷积的合理性。大部分参数为0,说明参数的稀疏性,而卷积的参数共享正是大大减小了参数量。因为压缩感知良好的数据恢复能力,压缩感知是当前非常热门的领域,从编码看,它是一种新的有损压缩编码方式;压缩感知的想法是使用通用的编码方式,特殊的解码方式完成编解码过程。在理论上,压缩一个服从分布p(x)的向量x,压缩感知编码的一种可能做法是对这个向量随机采样,解码时使用l1范数作为代价方程,恢复原向量,可以证明,如果分布符合某种条件,恢复的向量和原始向量的误差可以很小。使用重排的另一个原因是,因为卷积核的局部性质,仅仅经过卷积产生的向量只有局部信息,没有全局信息,重排后,对新的向量卷积,根据上面的压缩感知性质,卷积后的向量包含原始向量所有的信息,这样的卷积结果会有更好的全局特性。在当前的网络中,常用的分类器是softmax,在分类器之前也有一个全连接层;这个全连接层和其它全连接层的不同之处在于,它的输出维度是确定的,必须和类别数相同(其它的全连接层的输出维度一般由经验自由给定,没有必须的要求)。直接使用上述的过程,会有卷积后输出维度和类别数不匹配的问题,因此,在这里接一个全连接层。最终的结果是,整个网络只有softmax之前一个全连接层,这会大大减少网络的参数。通过在mnist上的实验说明了这一点。mnist为手写字体数据集,包含0-9的手写数字数据集及标签,准确率即为网络对手写体数字正确识别的概率。在mnist上的实验结果:方法参数个数softmax7840conv+fc+softmax3273504conv+fc+softmax8556实施例3根据本发明实施例,还提供了一种图片分类装置。该图片分类装置可以执行上述图片分类方法,上述图片分类方法也可以通过该图片分类装置实施。图2是根据本发明实施例的一种图片分类装置的示意图。如图2所示,该装置包括:输入单元10、第一运算单元20、第二运算单元30、分类单元40。输入单元10,用于将待分类的目标图片输入卷积神经网络的卷积层,其中,卷积神经网络至少包括一个卷积层和一个池化层。第一运算单元20,用于根据预先设置的第一卷积核对第一矩阵做卷积运算,得到第一向量,其中,第一向量为一维向量,第一矩阵是卷积神经网络的最后一个池化层的输出。第二运算单元30,用于根据预先设置的第二卷积核对第一向量做卷积运算,得到第二向量,其中,第二向量为一维向量。分类单元40,用于根据第二向量对目标图片进行分类。可选地,第一运算单元20包括:第一运算子单元、排列子单元。第一运算子单元,用于根据第一卷积核对第一矩阵做卷积运算,得到第二矩阵。排列子单元,用于将第二矩阵的所有元素按照预设顺序重新排列,得到第一向量。可选地,装置还包括:获取单元、训练单元。获取单元,用于在第一运算单元20根据第一卷积核对第一矩阵做卷积运算之前,获取训练样本,其中,训练样本包括预先划分好类别的多张图片,类别用于表征训练样本所指示的事物的种类。训练单元,用于根据训练样本对卷积神经网络进行训练,得到第一卷积核。可选地,训练单元包括:输入子单元、第二运算子单元、第三运算子单元、第一确定子单元、比较子单元、判断子单元、调整子单元、第二确定子单元。输入子单元,用于将训练样本输入到卷积神经网络的卷积层中。第二运算子单元,用于根据初始状态的卷积核对第一矩阵做卷积运算,得到第一向量。第三运算子单元,用于根据第二卷积核对第一向量做卷积运算,得到第二向量。第一确定子单元,用于根据第二向量中目标元素的值确定训练样本的分类结果,其中,第二向量中目标元素的值指示第二向量的类别与目标元素对应的类别相同的概率大小,其中,目标元素是第二向量中的任意一个元素。比较子单元,用于将分类结果与每张图片的类别进行比较,得到分类误差值。判断子单元,用于判断分类误差值是否大于预设误差值。调整子单元,用于如果分类误差值大于预设误差值,对初始状态的卷积核的权重值进行调整,直至分类误差值小于等于预设误差值。第二确定子单元,用于如果分类误差值小于等于预设误差值,则训练结束,并将当前的卷积核作为第一卷积核。可选地,第一卷积核满足如下公式:其中,m为卷积神经网络中输入向量维度,n为输出向量维度,stride为第一卷积核的步长,noc为输出通道个数,nconv为第一卷积核大小。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1