图像处理方法和电子设备、存储介质与流程

文档序号:17238618发布日期:2019-03-30 08:28阅读:211来源:国知局
图像处理方法和电子设备、存储介质与流程

本申请涉及人工智能技术领域,尤其涉及一种图像处理方法和电子设备、存储介质。



背景技术:

人工智能领域发展十分迅速,深度神经网络是人工智能的一个重要分支。神经网络内部结构复杂,参数量呈现越来越多的趋势,对计算能力的要求也越来越高。

相关技术中,神经网络需要在图形处理器上进行训练和测试,如果在中央处理器上进行训练和测试,其测试速度比在图形处理器上要慢数十倍甚至上百倍,故需要将其压缩,并存储到存储空间和计算能力都较为有限的平板电脑、手机等智能设备中。



技术实现要素:

为至少在一定程度上克服相关技术中存在的问题,本申请提供一种图像处理方法和电子设备、存储介质。

根据本申请实施例的第一方面,提供一种图像处理方法,包括:获取待处理的图片;

获取待采用的深度神经网络;

采用所述深度神经网络,对所述图片进行分类,得到分类后的图像;

输出分类后的图像;

其中,所述待采用的深度神经网络为压缩后的深度神经网络,所述获取待采用的深度神经网络,包括:

获取未压缩的深度神经网络;

采用压缩算法,对所述未压缩的深度神经网络进行压缩,得到待采用的深度神经网络;

其中,所述压缩算法包括:深度压缩算法,或者,轻量化网络压缩算法。

可选的,所述深度神经网络为深度学习alexnet网络。

可选的,当采用深度压缩算法时,所述采用压缩算法,对所述未压缩的深度神经网络进行压缩,包括:

对神经网络中卷积层进行网络剪枝;

对所述神经网络的全连接层进行网络剪枝;

对所述神经网络进行权值量化和权值共享。

可选的,所述对神经网络中卷积层进行网络剪枝,包括:

将所述卷积层的稀疏率设置为0到1之间的任意一个数值,学习率设置为固定值0.001;

获取所述神经网络训练过程中产生的连接参数,确定非必要的连接参数,对所述非必要的连接参数进行移除;

设定预设阈值,若所述连接参数小于所述预设阈值,则所述连接参数为所述非必要的连接参数。

可选的,所述对所述神经网络的全连接层进行网络剪枝,包括:

将所述全连接层的稀疏率设置为0到1之间的任意一个数值,学习率设置为固定值0.001。

可选的,所述对所述神经网络进行权值量化和权值共享,包括:

更改所述卷积层的量化项参数状态;

使用k均值聚类方法,减少所需表示的权值的数量;

赋值同一聚类的连接参数为同一个权值。

可选的,当采用轻量化网络压缩算法时,所述采用压缩算法,对所述未压缩的深度神经网络进行压缩,包括:

设置初始学习率为0.01,使所述学习率随着迭代次数线性减少,直至模型达到收敛状态。

可选的,该方法还包括:

获取所述模型最终训练的分类精度。

根据本申请实施例的第二方面,提供一种电子设备,包括:处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:执行如本申请实施例第一方面任一项所述的图像处理方法。

根据本申请实施例的第三方面,提供一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如本申请实施例第一方面任一项所述的图像处理方法。

本申请提供的技术方案可以包括以下有益效果:

通过将压缩后的深度网络算法应用于神经网络,且通过深度压缩算法或轻量化网络压缩算法对深度神经网络进行压缩,从而提高原始神经网络的精度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是本申请一个实施例提供的图像处理方法的流程图;

图2是本申请一个实施例提供的电子设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

图1是本申请一个实施例提供的图像处理方法的流程图。如图1所示,该方法包括以下步骤:

s11:获取待处理的图片;

s12:获取未压缩的深度神经网络;采用深度压缩算法(deepcompression),或者,轻量化网络压缩算法(squeezenet),对所述未压缩的深度神经网络进行压缩,得到待采用的深度神经网络;

s13:采用所述深度神经网络,对所述图片进行分类,得到分类后的图像;

s14:输出分类后的图像;

需要说明的是,神经网络可以包括两种,一种是生物神经网络,另一种是人工神经网络。其中,生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。人工神经网络也简称为神经网络或称作连接模型,它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

本实施例中,通过将压缩后的深度网络算法应用于神经网络,且通过深度压缩算法或轻量化网络压缩算法对深度神经网络进行压缩,从而提高原始神经网络的精度。

一些实施例中,所述深度神经网络为深度学习alexnet网络。

需要说明的是,alexnet网络是卷积神经网络的一种,主要使用到的新技术点如下:

(1)成功使用relu(线性整流函数,rectifiedlinearunit)作为cnn(卷积神经网络,convolutionalneuralnetworks)的激活函数,并验证其效果在较深的网络超过了sigmoid(s型生长曲线,sigmoidfunction),成功解决了sigmoid在网络较深时的梯度弥散问题。虽然relu激活函数在很久之前就被提出了,但是直到alexnet的出现才将其发扬光大。

(2)训练时使用dropout随机忽略一部分神经元,以避免模型过拟合。其中是在训练神经网络模型时,样本数据过少,防止过拟合而采用的手段。dropout虽有单独的论文论述,但是alexnet将其实用化,通过实践证实了它的效果。在alexnet中主要是最后几个全连接层使用了dropout。

(3)在cnn中使用重叠的最大池化。此前cnn中普遍使用平均池化,alexnet全部使用最大池化,避免平均池化的模糊化效果。并且alexnet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

(4)提出了lrn(局部响应归一化,localresponsenormalization)层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

(5)使用cuda(统一计算设备架构,computeunifieddevicearchitecture)加速深度卷积网络的训练,利用图形处理器强大的并行计算能力,处理神经网络训练时大量的矩阵运算。alexnet使用了两块gtx580型号的图形处理器进行训练,单个gtx580只有3gb(吉字节,gigabyte)显存,这限制了可训练的网络的最大规模。因此作者将alexnet分布在两个图形处理器上,在每个图形处理器的显存中储存一半的神经元的参数。因为图形处理器之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块图形处理器也是非常高效的。同时,alexnet的设计让图形处理器之间的通信只在网络的某些层进行,控制了通信的性能损耗。

(6)数据增强,随机地从256*256的原始图像中截取224*224大小的区域,以及水平翻转的镜像,相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的cnn会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,alexnet论文中提到了会对图像的rgb(rgb色彩模式)数据进行pca(主成分分析技术,principalcomponentsanalysis)处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个技巧可以让错误率再下降1%。

本实施例中,通过使用alexnet网络,解决了sigmoid在深层网络的梯度弥散问题,避免过拟合,提升了特征的丰富性。

一些实施例中,当采用深度压缩算法时,所述采用压缩算法,对所述未压缩的深度神经网络进行压缩,包括:

对神经网络中卷积层进行网络剪枝;

对所述神经网络的全连接层进行网络剪枝;

对所述神经网络进行权值量化和权值共享。

需要说明的是,网络剪枝具体包括如下流程:首先,神经网络进行正常的网络训练,得到的模型中含有各个连接参数,其次,根据权值的大小找到不重要的的连接,对它们进行剪枝,通常权值越大越重要。具体做法是,如果某些权值小于一个特定的阈值,那么这个权值对应的连接就从网络中移除,最后,再次训练网络来对保留的连接进行调优。训练过程结束后,使用压缩稀疏矩阵的存储方式来存储网络的参数。例如对于一个矩阵,如果非零元素个数为a,而行数或列数为n,那么需要用2a+n+1个数来存储。为了进一步压缩,存储的是index的差值,并且将这个差值进行编码;卷积层的权值采用8bits进行编码,全连接层的解权值采用5bits进行编码。如果index之间的差值大于最大的限值,则在中间补一个0。

进一步的,对网络中的权值进行量化,通常使用的是k均值聚类的方法,其目的是减少需要表示的权值的数量,再让同属一个聚类的有效连接的参数使用同一个权值,其目的是减少用来表示权值的比特数,最后再对共享权值进行调优。其中,k均值聚类方法采用现有技术,具体过程此处不再详述。

本实施例中,通过采用深度压缩算法,对深度神经网络进行网络剪枝、权值量化和权值共享,使得参数量压缩,是模型占用的存储空间减少。

一些实施例中,所述对神经网络中卷积层进行网络剪枝,包括:

将所述卷积层的稀疏率设置为0到1之间的任意一个数值,学习率设置为固定值0.001;

获取所述神经网络训练过程中产生的连接参数,确定非必要的连接参数,对所述非必要的连接参数进行移除;

设定预设阈值,若所述连接参数小于所述预设阈值,则所述连接参数为所述非必要的连接参数。

需要说明的是,经过训练测试,可得知损失函数略有减少,而测试的精度则略有上升,由于训练测试是在预训练的模型上进行的调优,故损失函数和精度的变化范围均很小。

本实施例中,通过对神经网络的卷积层进行网络剪枝,降低测试中的损失,同时提高测试精度。

一些实施例中,所述对所述神经网络的全连接层进行网络剪枝,包括:

将所述全连接层的稀疏率设置为0到1之间的任意一个数值,学习率设置为固定值0.001。

需要说明的是,经过训练测试,可得知损失函数稳定,但初始阶段都有一个比较大幅度的上升,这是由于网络结构的改变导致训练的损失函数的精度发生突变。

本实施例中,通过对神经网络的全连接层进行网络剪枝,使测试中的损失函数趋于稳定,提升测试精度。

一些实施例中,所述对所述神经网络进行权值量化和权值共享,包括:

更改所述卷积层的量化项参数状态;

使用k均值聚类方法,减少所需表示的权值的数量;

赋值同一聚类的连接参数为同一个权值。

需要说明的是,更改卷积层的量化项参数状态,表示对卷积层进行权值量化和权值共享,设定学习率为0.001进行训练,得到的分类精度相较上述实施例有所降低,其中k均值聚类方法采用现有技术,此处不再详述。

本实施例中,通过对神经网络进行权值量化和权值共享,可以减少需要表示的权值的数量,以及减少用于表示权值的比特数,以便于对共享权值进行调优。

一些实施例中,当采用轻量化网络压缩算法时,所述采用压缩算法,对所述未压缩的深度神经网络进行压缩,包括:

设置初始学习率为0.01,使所述学习率随着迭代次数线性减少,直至模型达到收敛状态。

需要说明的是,轻量化网络压缩算法的目标是构建一个卷积神经网络的结构,使其具有更少的参数量,并且能够保持较高的精度,因此squeezenet采用了以下三个设计策略:

1)将3×3的卷积核替换为1×1的卷积核,使网络中多数卷积核的尺寸为1×1,因为1×1卷积核的参数量仅仅是3×3卷积核的参数量的九分之一。

2)减少3×3卷积核的输入的通道(channel)数,这里通道数实际上就等于上一层卷积核的数量,对于一个只含有3×3的卷积的网络层,如果输入的通道数是nchannels,而卷积核的数量为nfilters,则这一层的参数量为:

nweights=nfilters×nchannels×3×3,

因此,减少3×3卷积核的数量是一种可行的方法,还可以考虑使nchannels的大小减小,也就是通道的数量。

3)推迟降采样(delayeddownsampling),如果选择比较靠近顶层的层进行降采样,那么该层激活映射(activationmap)的尺寸就比较大,在卷积神经网络中,激活映射的宽度和高度是由两个因素决定的,一是输入数据的尺寸,二是选择哪一层来进行降采样。

一般地,神经网络中的降采样操作都是通过某些卷积层或者池化层中设置步长大于1,即stride>1来实现的,如果在比较靠近底部也就是靠近输入层的层中降采样,那么大多数层的特征映射的宽度和高度都会比较小,而如果把网络大部分层的步长都设置为1,而只在靠近顶部的一些层中将步长设置为stride>1,那么神经网络的大多数的特征映射的维度都会比较高。而直观上,较大的特征映射图能够使用分类精度比较高,这是在有限的参数量的情形下采取的保持精度的措施。

一些实施例中,该方法还包括:

获取所述模型最终训练的分类精度。

需要说明的是,由测试结果可知,squeezenet的参数量压缩倍率为6.87倍,而在分类精度上,squeezenet压缩率不够高,且其分类精度下降较多,原因可能有以下两点:一是初始网络alexnet的原始参数量比较少,如果压缩太多会导致参数量过少从而引起欠拟合。二是squeezenet由于前几层的输出量不够大,导致特征映射的深度不够,网络对训练集的特征提取不充分。

本实施例中,轻量化网络压缩算法采用一种结构更加紧凑的模块,它使用尺寸更小卷积核,从而减少参数量。

图2是本申请一个实施例提供的电子设备的结构示意图。如图2所示,该电子设备包括:处理器21;

用于存储处理器可执行指令的存储器22;

其中,所述处理器被配置为:执行如本申请上述实施例中任一项所述的图像处理方法。

需要说明的是,处理器、存储器型号不限。

本实施例中,提供一种用于实现上述实施例中任一项方法的电子设备,保证该方法的实现。

一些实施例中,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如本申请实施例中任一项所述的图像处理方法。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

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