机器学习模型的搜索方法及相关装置、设备与流程

文档序号:20781795发布日期:2020-05-19 21:18阅读:300来源:国知局
机器学习模型的搜索方法及相关装置、设备与流程

本发明涉及终端技术领域,尤其涉及一种机器学习模型的搜索方法及相关装置、设备。



背景技术:

随着深度学习的高速发展,深度神经网络在图像、语音、文本的分类、识别等领域广泛应用。深度神经网络的网络结构通常复杂、推理时间长、运行需要占用大量的内存。由于移动终端的处理器计算能力和存储器存储资源的限制,导致,深度神经网络无法应用到移动终端。因此,如何将计算量与日俱增的深度学习模型部署在移动终端上是目前亟待解决的难题。

对深度神经网络进行混合比特量化是解决这一问题的一种高效解决方案。混合比特量化是指,将原本用32bit的浮点存储的模型参数通过成不同低比特(包括1bit,2bit,4bit等等)的定点存储,进而减少深度神经网络在移动终端运行的内存大小,推理时间和功耗等。

现有技术提出了一种将混合比特量化和神经网络架构搜索(neuralarchitecturesearch,nas)结合对模型进行加速的方法,其原理是:步骤s1,从待量化模型的第一层开始逐层利用强化学习决策器预测出每一层的量化方式(可选方案为1至8bit,实际使用2至8bit);步骤s2,当其预测确定第k层的量化方案后,会在硬件上计算当前量化模型的推理时间(rom大小或者功耗)。如果不满足要求,则从第一层往后顺序减少已量化层的bit数(比如第一层是7bit量化方案,则减少为6bit),直至满足要求;步骤s3,将步骤s2得到的模型进行训练,得到基于准确率的回报函数,放入步骤s1中的强化学习决策器中,进行下一层的量化方案选择,直到模型全部量化,得到最终混合比特量化模型。

然而,上述对待量化模型的量化和搜索过程中,设备需要在训练过程中不断与移动终端通讯,获取当前模型性能,且量化是逐层进行,这样会增加模型搜索的耗时,导致模型的量化和搜索效率低。



技术实现要素:

本发明实施例提供一种机器学习模型的搜索方法及相关装置、设备,以解决模型的量化和搜索过程中效率低的问题。

第一方面,本发明实施例提供了一种机器学习模型的搜索方法,包括:计算设备根据待量化模型生成m个纯比特模型,获取所述m个纯比特模型中每一层层结构的n个评价参数,该m个纯比特模型中每一层层结构的n个评价参数是由移动终端在运行所述m个纯比特模型时测量得到的;进而,执行至少一次模型搜索,输出所述n个评价参数和所述准确率都满足要求的模型;其中,模型搜索的过程包括:通过第一数据集对从候选集中选择出的候选模型进行训练和测试,得到目标模型和该目标模型的准确率;在目标模型的n个评价参数中存在至少一个评价参数不满足要求且该目标模型的准确率大于目标阈值的情况下,根据m个纯比特模型中每一层层结构的n个评价参数获取该目标模型中每一层层结构的n个评价参数,根据目标模型的网络结构和目标模型中每一层层结构的n个评价参数确定该目标模型中每一层层结构的量化权重,进而,对该目标模型中量化权重最大的层结构进行量化,将量化得到的模型添加至候选集中。其中,上述纯比特模型和待量化模型为网络结构相同的深度神经网络,m为大于1的正整数;候选集包括至少一个候选模型;候选模型是与待量化模型的网络结构相同的混合比特模型;第一数据集包括多个样本,用于训练和测试所述候选集中的候选模型。

应理解,上述计算设备可以是服务器、云端或分布式计算系统等。

上述方法,在对模型量化和模型搜索之前,根据待量化模型生成多个纯比特模型,进而获取到多个纯比特模型中每一层层结构的评价参数,进而,在从候选集中选择一个候选模型进行训练和测试,得到目标模型之后,可以基于目标模型的网络结构和目标模型中每一层层结构的评价参数确定出该目标模型中每一层层结构的量化权重,从而对目标模型中量化权重最大的层结构进行量化,将量化得到的模型添加进候选集,可以减少与终端的频繁信息交互,提高模型搜索和模型量化的效率。

结合第一方面,在一种可能的实现方式中,该n个评价参数包括推理时间和参数量,计算设备根据所述目标模型的网络结构和目标模型中每一层层结构的n个评价参数,确定目标模型中每一层层结构的量化权重的一种实现方式可以是:

若目标模型的推理时间大于目标推理时间且目标模型的参数量不大于目标参数量,则根据目标模型中的层结构i的推理时间和层结构i的权重确定目标模型中的层结构i的量化权重;

若目标模型的推理时间不大于目标推理时间且目标模型的参数量大于目标参数量,则根据目标模型中的层结构i的参数量和层结构i的权重确定目标模型中的层结构i的量化权重;

若目标模型的推理时间大于目标推理时间且目标模型的参数量大于目标参数量,则根据目标模型中的层结构i的推理时间、目标模型中的层结构i的参数量和层结构i的权重确定所述目标模型中的层结构i的量化权重。

应理解,i为目标模型中层结构的索引,i为正整数,i不大于目标模型中层结构的总层数,目标模型中层结构的总层数与待评估模型中的层结构的总层数相同。

上述方法,在目标模型的推理时间不满足要求且参数量满足要求的情况下,在确定目标模型的层结构的量化权重时主要考虑其层结构的推理时间;在目标模型的推理时间满足要求且参数量不满足要求的情况下,在确定目标模型的层结构的量化权重时主要考虑其层结构的参数量;而在目标模型的推理时间和推理时间都不满足要求的情况下,在确定目标模型的层结构的量化权重时同时考虑其层结构的推理时间和推理时间,进而,使得量化可以向推理时间和参数量都满足要求的方向进行,进一步提高搜索和量化的效率。

可选地,目标模型中层结构i的量化权重pi为:

其中,α、β分别为推理时间和参数量的权重;oi为层结构i的权重,li为层结构i的推理时间或为层结构i的推理时间与目标模型的推理时间的比值;ri为层结构i的参数量或层结构i的参数量与目标模型的参数量的比值;t为目标模型的推理时间与目标推理时间的比值,m为目标模型的参数量与目标参数量的比值。

其中,目标模型的推理时间为目标模型中的每一层层结构的推理时间之和;目标模型的参数量为目标模型中的每一层层结构的参数量之和。

可选地,层结构i的权重与层结构i在目标模型中的位置有关,越靠近目标模型的输入层的层结构具有较小的权重,而越靠近目标模型的输出层的层结构具有较大的权重。

上述方法,在确定目标模型中层结构的量化权重时,考虑了层结构在模型中的位置对模型的准确度的重要性,尽量避免对靠近输入层的层结构进行更低比特的量化,保证模型的准确度,提高搜索和量化的效率。

结合第一方面,在又一种可能的实现方式中,在通过第一数据集对从候选集中选择出的候选模型进行训练和测试之前,还可以从候选集中选择一个模型,从候选集中选择一个模型的具体实现方式可以是:计算设备通过第二数据集对候选集中每一个候选模型进行训练和测试,得到候选集中每一个候选模型的测验准确率,第二数据集中的样本的数量小于第一数据集中的样本的数量;进而,根据每一个候选模型的测验准确率和每一个候选模型的权重从所述候选集中选择一个候选模型。

可选地,候选模型的权重是根据候选模型被添加到候选集时模型搜索的总次数和当前模型搜索的总次数确定的。

可选地,候选集中第j个候选模型被选择的概率/权重qj可以表示为:

qj=softmax(wjaj)

其中,aj为第j个候选模型的测验准确率,wj为第j个候选模型的权重。

在从候选集中选择一个模型的另一种实现方式中,也可以直接根据每一个候选模型的测验准确率从所述候选集中选择一个候选模型,例如,从候选集中选择测验准确率最大的候选模型。

上述方法,基于准确率进行选择模型,保证了选中的模型的准确率最优,进而,提高最终输出的目标模型的准确率。

结合第一方面,在又一种可能的实现方式中,计算设备对目标模型中量化权重最大的层结构进行量化的一种实现方式可以是:计算设备将目标模型中量化权重最大的层结构中模型参数分别转换由至少一个比特数表示的模型参数,该至少一个比特数为比特数集合中比所述目标模型中量化权重最大的层结构的模型参数的当前比特数低的比特数,比特数集合包括m个数值,该m个数值分别用于指示m个纯比特模型中模型参数的比特数。

上述方法,通过将目标模型中被选中的层结构进行更低比特的量化,将量化后的模型作为候选模型。

结合第一方面,在又一种可能的实现方式中,该模型搜索的过程还可以包括:在目标模型的准确率小于所述目标阈值的情况下,计算设备从所述候选集中重新选择一个模型,执行上述模型搜索。

上述方法,在目标模型的准确率不满足要求时,直接去除该目标模型,减少搜索空间,提高搜索效率。

结合第一方面,在又一种可能的实现方式中,n个评价参数包括推理时间,计算设备获取m个纯比特模型中每一层层结构的n个评价参数的一种实现方式可以是:计算设备将m个纯比特模型发送至移动终端,以使移动终端运行m个纯比特模型和测量该m个纯比特模型中每一层层结构的推理时间;进而,接收移动终端发送的m个纯比特模型中每一层层结构的推理时间。

上述方法,只需要计算设备与移动终端信息交互一次,即可推算出任何混合比特模型的推理时间,进而,提高搜索和量化效率。

可选地,移动终端也可以测量该m个纯比特模型中每一层层结构的参数量,进而,计算设备也可以接收移动终端发送的m个纯比特模型中每一层层结构的参数量。

结合第一方面,在又一种可能的实现方式中,在第一次模型搜索时,候选集包括m个纯比特模型中比特数最高的纯比特模型,使得,搜索是从最高比特的纯比特模型开始。

第二方面,本申请实施例还提供了一种图像识别方法,包括:终端获取待识别图像,将待识别图像输入到第二图像识别模型,得到该待识别图像的类别,进而,输出该待识别图像的类别。

其中,第二图像识别模型是以第一图像分类模型作为待量化模型通过上述第一方面或第一方面任意一种实现所述的机器学习模型的搜索方法输出的目标模型。第一图像识别模型是训练后的可识别图像的类别的深度神经网络,第一图像识别模型为全浮点模型或混合模型。

可选地,待识别图像可以是终端可以通过摄像头获取当前场景中的图像。

上述终端可以是手机、平板电脑、台式电脑、数码相机、智能手表、智能手环、摄像头、电视等,此处不作限定。

上述方法,通过上述运行量化后的模型,对内存和处理资源有限的终端可以运行深度神经网络。

第三方面,本申请实施例还提供了一种机器学习模型的搜索装置,包括:

生成模块,用于根据待量化模型生成m个纯比特模型,其中,所述纯比特模型和所述待量化模型为网络结构相同的深度神经网络,m为大于1的正整数;

参数获取模块,用于获取所述m个纯比特模型中每一层层结构的n个评价参数,所述m个纯比特模型中每一层层结构的n个评价参数是由移动终端在运行所述m个纯比特模型时测量得到的;

执行模块,用于执行至少一次模型搜索,输出所述n个评价参数和所述准确率都满足要求的模型;

其中,所述执行模块包括训练测试单元、获取单元、权重单元、量化单元和添加单元,所述执行模块执行所述模型搜索的过程时:

所述训练测试单元用于通过第一数据集对从候选集中选择出的候选模型进行训练和测试,得到目标模型和所述目标模型的准确率;所述候选集包括至少一个候选模型;所述候选模型是与所述待量化模型的网络结构相同的混合比特模型;所述第一数据集包括多个样本,用于训练和测试所述候选集中的候选模型;

所述获取单元用于在所述目标模型的n个评价参数中存在至少一个评价参数不满足要求且所述目标模型的准确率大于目标阈值的情况下,根据所述m个纯比特模型中每一层层结构的n个评价参数获取所述目标模型中每一层层结构的n个评价参数;

所述权重单元用于根据所述目标模型的网络结构和所述目标模型中每一层层结构的n个评价参数确定所述目标模型中每一层层结构的量化权重;

所述量化单元用于对所述目标模型中量化权重最大的层结构进行量化;

所述添加单元用于将量化得到的模型添加至所述候选集中。

可选地,机器学习模型的搜索装置中各个模块/单元的具体实现可以参见上述第一方面或第一方面任意一种可能的实现方式中相关描述,机器学习模型的搜索装置还可以包括用于其他用于实现上述第一方面或第一方面任意一种可能的实现方式的机器学习模型的搜索方法的模块/单元,此处不再赘述。

第四方面,本申请实施例还提供了一种机器学习模型的搜索装置,包括处理器和存储器,所述存储器用于存储程序,所述处理器执行所述存储器存储的程序,当所述存储器存储的程序被执行时,使得所述机器学习模型的搜索装置实现如第一方面或第一方面任意一种可能的实现方式的所述的机器学习模型的搜索方法。

可选地,机器学习模型的搜索装置中各个器件/单元的具体实现可以参见上述第一方面或第一方面任意一种可能的实现方式中相关描述,机器学习模型的搜索装置还可以包括用于其他用于实现上述第一方面或第一方面任意一种可能的实现方式所述的机器学习模型的搜索方法的模块/单元,此处不再赘述。

第五方面,本申请实施例还提供了一种图像识别装置,包括:

获取单元,用于获取待识别图像;

识别单元,用于将待识别图像输入到第二图像识别模型,得到该待识别图像的类别;

输出单元,用于输出该待识别图像的类别。

其中,第二图像识别模型是以第一图像分类模型作为待量化模型通过上述第一方面或第一方面任意一种实现所述的机器学习模型的搜索方法输出的目标模型。第一图像识别模型是训练后的可识别图像的类别的深度神经网络,第一图像识别模型为全浮点模型或混合模型。

可选地,待识别图像可以是终端可以通过摄像头获取当前场景中的图像。

上述图像识别装置可以是手机、平板电脑、台式电脑、数码相机、智能手表、智能手环、摄像头、电视等,此处不作限定。

第六方面,本申请实施例还提供了一种机器学习模型的搜索装置,包括处理器和存储器,所述存储器用于存储程序,所述处理器执行所述存储器存储的程序,当所述存储器存储的程序被执行时,使得所述机器学习模型的搜索装置实现如第二方面或第二方面任意一种可能的实现方式所述的图像识别方法。

可选地,图像识别装置中各个器件/单元的具体实现可以参见上述第二方面或第二方面任意一种可能的实现方式中相关描述,图像识别装置还可以包括用于其他用于实现上述第二方面或第二方面任意一种可能的实现方式所述的图像识别方法的模块/单元,此处不再赘述。

第七方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读介质用于存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机实现如第一方面或第一方面任意一种可能的实现方式所述的机器学习模型的搜索方法。

第八方面,本申请实施例还提供了一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述终端执行如第一方面或第一方面任意一种可能的实现方式所述的机器学习模型的搜索方法。

第九方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读介质用于存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机实现如第二方面或第二方面任意一种可能的实现方式所述的图像识别方法。

第十方面,本申请实施例还提供了一种包含指令的计算机程序产品,当上述计算机程序产品在电子设备上运行时,使得上述终端执行如第二方面或第二方面任意一种可能的实现方式所述的图像识别方法。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种系统的架构示意图;

图2是本申请实施例提供的一种机器学习模型的搜索方法的流程示意图;

图3a-图3c是本申请实施例提供的一种机器学习模型的搜索过程的示意性说明图;

图4是本申请实施例提供的一种图像识别方法的流程示意图;

图5是本申请实施例提供的一种机器学习模型的搜索装置的结构示意图;

图6是本申请实施例提供的一种图像识别装置的结构示意图;

图7是本申请实施例提供的又一种机器学习模型的搜索装置的结构示意图;

图8是本申请实施例提供的又一种图像识别装置的结构示意图。

具体实施方式

首先介绍本申请中涉及的专业术语和概念。

(1)神经网络

神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:

其中,s=1、2、……n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activationfunctions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。

(2)深度神经网络

深度神经网络(deepneuralnetwork,dnn),也称多层神经网络,可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准。从dnn按不同层的位置划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式y=α(wx+b),其中,x是输入向量,y是输出向量,b是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量x经过如此简单的操作得到输出向量y。由于dnn层数多,则系数w和偏移向量b的数量也就很多了。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结就是:第l-1层的第k个神经元到第l层的第j个神经元的系数定义为需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。

本申请中,各个模型均为深度神经网络,模型的层结构即为上述隐含层,模型的模型参数即为各个隐含层中权重矩阵,层结构中的模型参数即为该层结构中的权重矩阵。

(3)、定点(fixedpoint)和浮点(floatingpoint)

定点和浮点都是计算机存储数据采用的数据类型。两者的根本区别在于小数点的位置,其中,定点数在小数点前后有固定位数,而浮点数在小数点前后没有固定位数,即浮点数的小数点的位置可以相对于该数字的有效数字变化。与定点数相比,浮点数提供了更大的取值范围和更高的精度。

定点数具有一定数量的保留数字,位于小数点左侧的数字为该定点数的整数部分,位于小数点右边的数字为该定点数的小数部分。例如,数字长度为4,小数点位于中间,那么该定点数可表示的最大数值为99.99,最小数值为00.01(这里以十进制数字为例,计算机其实使用二进制的数字),可见,定点数的固定窗口的形式使得它既不能够表示非常大的数又不能表示非常小的数,其精度丢失4、8、16、32等

浮点数采用科学计数法的形式来表示实数,相对于定点数的固定窗口,它采用浮动窗口,因此可以表示较大精度范围的一个实数。例如,123.456可以表示为1.23456*102

(4)、全浮点模型、纯比特模型和混合比特模型

全浮点模型是一种深度神经网络,其所有的层结构的模型参数(即为权重矩阵)的数据类型均采用浮点表达。

纯比特模型,也称为纯比特量化模型,是一种深度神经网络,其所有的层结构的模型参数(即为权重矩阵)的数据类型均采用相同的固定比特数(位数)的定点表达。

混合比特模型,也称为混合比特量化模型,是一种深度神经网络,其不同层结构的模型参数(即为权重矩阵)的数据类型采用相同或不同的固定比特数(位数)的定点表达。纯比特模型是混合比特模型中的一种,其所有的层结构的模型参数(即为权重矩阵)的数据类型均采用相同的固定比特数(位数)的定点表达。

(5)、模型的量化

本申请实施例中模型的量化,即为神经网络的量化(neuralnetworkquantization),是将浮点存储(运算)转换为整型存储(运算)的一种模型压缩技术,例如,原来一个模型的模型参数使用float32(32位的浮点)表示,量化后该模型的模型参数使用int8(8位的定点)表示,通过模型的量化操作,以较小的精度损失为代价,提高模型的运算速度。

模型的量化的本质是两种数据类型的数据之间的转换/映射,其中,在将浮点数据(数据类型为浮点的数据)转换为定点数据(数据类型为定点的数据)的一种实现方式中,可以通过如下公式:

其中,r为输入的浮点数据,q为浮点数据r量化之后的定点数据,z表示0点值(zeropoint),s表示比例,可见,确定s和z后,既可进行这两个数据之间的转换。s和z的确定方式很多,例如:

z=qmax-rmax/s

其中,rmax表示输入浮点数据的最大值,rmin表示输入浮点数据的最小值,qmax表示定点数据的最大的值,rmin表示定点数据的最小值。

其中,不同比特数(位数,1比特=1位)的定点数据之间的转换可以参照上述浮点数据和定点数据之间的转换方式,也可以是现有技术中其他的转换方式,这里不再赘述。

在一种实现中,4比特和8比特可以参照上述的转换方式进行,而浮点数据和2比特(1比特)转换的一种实现方式可通过如下公式进行:

其中2比特可表示为三个数-1,0,1。t为阈值,浮点数据大于等于t时,转换得到的2比特的定点数据为1。浮点数据小于-t时,其值转换为-1。浮点数据为其他值时,其值转换为0。1比特的转换方式和2比特类似,但其定点值只有-1和1,其中t值为0。

下面介绍本申请实施例涉及的系统架构。如图1所示,图1是本申请实施例提供的一种系统的架构示意图,其中:

客户设备11可以将第一数据集和待量化模型发送至计算设备12,该待量化模型可以是全浮点模型,可以是通过第一数据集训练得到的深度神经网络,也可以是构建的未经过训练的深度神经网络,还也可以是通过自动机器学习(automaticmachinelearning,automl)得到的深度神经网络,客户设备11可以请求计算设备12对待量化模型进行量化,以得到准确率、推理时间、参数量等都符合客户要求的混合比特模型。客户设备12也可以将其对量化后的混合比特模型的目标准确率、目标推理时间、目标参数量等标准发送至计算设备12。

可选地,第一数据集也可以来源于数据库13,第一数据集包括多个样本。在一种场景中,样本可以是标签为物体类型的图像,待量化模型以及客户期望得到的混合比特模型都是具备图像识别能力的深度神经网络,其在接收到待识别图像后,可以识别该待识别图像的图像类别。不限于上述场景,还可以应用于其他场景,如样本还可以是标签为手势类型的图像,待量化模型以及客户期望得到的混合比特模型都是具备手势识别能力的深度神经网络,其在接收到待识别图像后,可以识别该待识别图像的手势。

计算设备12在接收到待量化模型后,可以根据客户的要求对该待量化模型进行量化,以得到准确率大于目标准确率、推理时间大于目标推理时间、参数量小于目标参数量的混合量化模型,在具体实现中,计算设备12可以首先将待量化模型进行量化,得到多个纯比特模型,各个纯比特模型与待量化模型的网络结构相同,但其模型参数的数据类型和模型参数的比特数不同,进而,将得到的多个纯比特模型发送至移动终端测试平台14。

移动终端14包括测试系统,在移动终端14运行各个纯比特模型,移动终端可以通过测试系统获取到各个纯比特模型中每一层层结构的推理时间、参数量等参数,也就是说,移动终端获取了由不同比特数的定点表达的各个层结构的推理时间和参数量。移动终端14可以将测试得到的各个纯比特模型中每一层层结构的推理时间、参数量等发送至计算设备12。

计算设备12可以执行至少一次模型搜索的过程,该过程包括:计算设备12可以通过少量的样本对候选集中的候选模型进行训练,得到各个候选模型的测试准确率,进而基于测试准确率从候选集中选取一个候选模型,并通过第一数据集对该候选模型进行训练和测试,得到训练后的候选模型(即目标模型)和目标模型的准确率;进而,若该目标模型不满足客户的要求,则对根据目标模型中层结构的推理时间和/或参数量等来选择需要进行量化的层结构,进而将目标模型中被选中的层结构进行量化,得到一个或多个量化后的模型,应理解,目标模型在量化前后,只有被选中的层结构的模型参数的表达发生变化,其他层结构保持不变;进一步地,计算设备12将量化得到的模型添加至候选集中,并重复执行下一次模型搜索的过程。应理解,只有当目标模型满足用户要求时,才输出目标模型,输出的目标模型即为客户需要的混合比特模型。

计算设备12可以将输出的目标模型发送至客户设备11。用户设备15(移动终端)可以向客户设备11或计算设备12下载目标模型,以使用目标模型。该目标模型虽然相对于待量化模型牺牲部分精度,但大大提高了运算速度,实现在具有较低内存容量和内存带宽的移动终端上应用复杂的深度神经网络。

计算设备12可以包括多个模块/节点,一方面,计算设备12可以是分布式计算系统,计算设备12包括的多个模块/节点可以分别为具备计算能力的计算机设备;另一方面,计算设备12可以是一个设备,其包括的多个模块/节点可以是计算设备12中的功能模块/器件等。其中,模型增广模块121用于根据待量化模型生成多个纯比特模型。模型推理模块122用于与移动终端进行信息交互,得到各个纯比特模型中每一个层结构的推理时间和参数量。模型选择模块123,用于从候选集中选取一个候选模型。模型训练模块124用于对筛选出的候选模型进行训练,得到目标模型。模型测试模块125用于对目标模型进行测试,以得到目标模型的准确率。处理模块126用于判断目标模型是否满足客户的要求,在目标模型满足客户的要求后,输出该目标模型;量化结构选择模块127用于在目标模型不满足客户要求,但目标模型的准确率满足客户要求时,对基于目标模型中各个层结构的量化权重选择目标模型中量化权重最大的层结构为需要量化的层结构。量化模块128用于对目标模型中被选中的层结构进行量化,得到量化后的模型,并将量化后的模型添加至候选集。

上述计算设备12、计算设备12中的各个模块可以是云服务器、服务器、计算机设备、终端设备等,此处不再赘述。

上述客户设备11或用户设备15可以是手机、平板电脑、个人计算机、车辆、车载单元、销售终端(pointofsales,pos)、个人数字助理(personaldigitalassistant,pda)、无人机、智能手表、智能眼镜、vr设备等,此处不作限定。客户设备11还可以是服务器。

系统中客户设备11、用户设备15、数据库13也不是系统必须的设备,系统不包括上述设备,或还可以包括其他设备或功能单元,本申请实施例不作限定。

下面介绍本申请实施例提供的一种机器学习模型的搜索方法,该方法可以由图1中计算设备执行。可选地,步骤s11也可以由模型增广模块121执行或实现;步骤s12也可以由模型推理模块122执行或实现;步骤s13可以由模型选择模块123执行或实现;步骤s14可以由模型训练模块124和模型测试模块125来实现;步骤s15、s16可以由处理模块126来实现;步骤s17、s18可以由量化结构选择模块127执行或实现;步骤s19、s20也可以由量化模块128来实现。可选的,所述方法60或方法中各个步骤可以分别由cpu处理,也可以由cpu和gpu共同处理,也可以不用gpu,而使用其他适合用于神经网络计算的处理器,例如,神经网络处理器,此处不作限定。本申请实施例以执行主体为计算设备为例来说明,如图2所示的一种机器学习模型的搜索方法的流程示意图和图3a-图3c所示的一种机器学习模型的搜索过程的示意性说明图,该方法可以包括但不限于如下部分或全部步骤:

s11:根据待量化模型生成m个纯比特模型。

其中,待量化模型可以是全浮点模型或混合模型。这里,全浮点模型是指模型参数的数据类型都为浮点的模型,混合模型是指部分模型参数的数据类型为浮点部分模型参数的数据类型为定点的模型,纯比特模型是指模型参数的数据类型都为定点且模型参数的位数都相同。

其中,纯比特模型和待量化模型为网络结构相同的深度神经网络,两者的模型参数的数据类型不同。可选地,该待量化模型可以是训练好的深度学习模型,也可以是构建的未经训练的机器学习模型。

根据待量化模型生成m个纯比特模型,即将待量化模型中模型参数的数据类型分别转换为不同比特数的定点。对层结构进行编码,纯m比特模型中的层结构i也可以称为m比特的层结构i,可以表示为fi,m,层结构fi,m指代层结构n模型参数的数据类型为m比特(位)的定点。m、n为正整数,m通常不大于待量化模型中的模型参数的位数;n不大于待量化模型/纯比特模型中层结构的总层数。

例如,参见图3a所示的全浮点模型量化为5个纯比特模型的示意性说明图,待量化模型为32比特的全浮点模型,包括h层层结构,即层结构i,i=1、2、…、h,h为待量化模型中层结构的总层数,h为正整数。可以将该全浮点模型转换为5个纯比特模型,分别是纯1比特模型、纯2比特模型、纯4比特模型、纯8比特模型、纯16比特模型。需要说明的是,上述转换得到的5个纯比特模型为示例性说明,在另一实施例中,待量化模型还可以转换的比特数为3、5-7、9-16、17-32等的纯比特模型,这里以比特数为1、2、4、8、16为例来说明。

s12:通过移动终端运行m个纯比特模型,获取该m个纯比特模型中每一层层结构的n个评价参数,该n个评价参数包括推理时间和/或参数量。

在s12的一种具体实现中,计算设备可以将m个纯比特模型发送至移动终端,移动终端可以对m个纯比特模型进行基准测试(benchmark),例如将纯比特模型输入到模型性能评估器,以得到该纯比特模型中每一层层结构的推理时间、参数量。进一步地,移动终端可以将测试得到的m个纯比特模型中每一层层结构的推理时间、参数量发送至计算设备。应理解,对于结构相同的两个层结构,若它们的模型参数的比特数不同,则该它们的推理时间一般不同,比特数更大的层结构具有更长的推理时间。应理解,基准测试是一种测试代码性能的方法,模型性能评估器是用于测试深度神经模型中每一层层结构的推理时间和/或参数量的算法/程序。

通过上述步骤s12可以得到待量化模型中每一层层结构的模型参数分别处于不同比特数时的推理时间,以及每一层层结构的参数量,也就是说可以得到层结构fi,m的推理时间、参数量,其中,1≤i≤h,m∈比特数合。其中,h为待量化模型/纯比特模型中层结构的总层数;比特数集合包括m个数值,分别为m个纯比特模型中模型参数的比特数,在图3a-图3c所示的实例中,比特数集合可以为{1,2,4,8,16}。

在另一些实施例中,在待量化模型中每一层层结构的参数量也可以由计算设备来获取。

应理解,应理解,参数量用于指示模型或层结构中模型参数的数据量。待量化模型在进行数据类型的转换前后,各个层结构的模型参数的个数不变,但各个模型参数的位数发生改变,可以理解,层结构的参数量不仅与该层结构中模型参数的个数有关,也与模型参数的位数有关,模型参数的个数越多,模型参数的位数越大,则该层结构的参数量越大。也就是说,针对同一层结构,比特数越低的纯比特模型中,该层结构的参数量越小。

s13:从候选集中选择一个候选模型。

应理解,本申请中候选集中的模型也称为候选模型,候选集初始时可以包括一个候选模型,该候选模型可以是m个纯比特模型中比特数最高的纯比特模型,此时,选择出的模型即为该比特数最高的纯比特模型。应理解,候选集中候选模型是与待量化模型的网络结构相同的混合比特模型。在另一种实现中,候选集初始时可以包括一个或多个混合比特模型,该混合比特模型的网络结构与待量化模型的网络结构相同。

候选集中的候选模型在模型搜索的过程中不断变化,在每次模型搜索过程中被选择出的模型会从候选集中去除,而每次模型搜索过程中进行低比特量化得到的模型会添加至候选集。

计算设备从候选集中选择一个候选模型的可以包括但不限于如下三种实现方式:

第一实现方式:计算设备从候选集中随机选择一个候选模型。

计算设备可以根据候选集中候选模型的准确率来选择模型。候选集中的候选模型都是未经过训练和测试的模型,为减少模型训练和测试占用的计算资源、时间等,本申请实施例,可以通过少量样本(本申请中也称为第二数据集)对候选模型进行轻量化的训练和测试,即通过第二数据集对候选集中每一个候选模型分别进行训练、测试,得到训练后的各个候选模型的准确率,为与通过大量样本(本申请中也称第一数据集)对候选模型进行训练和测试得到的准确率进行区别,这里将通过少量样本成为测验准确率。应理解,第一数据集中样本的个数大于第二数据集中样本的个数,第二数据集可以是第一数据集中的部分样本。

第二实现方式:如图3b所示,计算设备可以基于候选模型的测验准确率和候选模型的权重综合选择候选模型。其中,在一种实现中,候选模型的权重与该候选模型被添加至候选集时模型搜索的总次数有关,可选地,候选模型的权重可以根据该候选模型被添加至候选集时模型搜索的总次数和当前模型搜索的总次数确定。例如,候选模型被添加至候选集时模型搜索的总次数与当前模型搜索的总次数之差越小,则该候选模型的权重越高,进而使得最近一次模型搜索过程中量化得到候选模型被选中的概率越大。

例如,在第3次模型搜索过程中,通过对选中的候选模型进行量化得到了第一候选模型,该第一候选模型在第3次模型搜索过程中被添加至候选集(即为,第一候选模型被添加至候选集时模型搜索的总次数为3),那么,在第4次模型搜索过程中,由于该第一候选模型是最近一次模型搜索过程中被添加至候选集中的,为该第一候选模型设置相对于第3次模型搜索之间已经被添加至候选集中的候选模型更大的权重,使得该第一候选模型被优先选中。然而,若该第一候选模型在第4次模型搜索过程中未被选中,那么随着模型搜索的进行,第一候选模型的权重越来越小,例如,在第8次模型搜索过程中,该第一候选模型的权重小于第5、6、7次模型搜索得到的候选模型的权重,然而,在该第一候选模型的测验准确率高于第5、6、7次模型搜索得到的候选模型的情况下,保留该第一候选模型被选中的情况,该选择候选模型的方法可以在优先选择测验准确率高的候选模型的基础上尽量选取最近模型搜索得到的候选模型。

在另一种的实现,候选集中第j个候选模型被选择的概率/权重qj可以表示为:

qj=softmax(wjaj)(1)

其中,aj为第j个候选模型的测验准确率,wj为第j个候选模型的权重。

为增加区分各个候选模型被选择的概率/权重qj,计算设备可以对各个候选模型被选择的概率/权重qj进行锐化处理,例如,候选集中第j个候选模型被选择的概率/权重qj通过sharpen算法进行处理,得到处理后的概率/权重dj,可以表示为:

其中,c为常数,j为正整数,j≤s,s为候选集中候选模型的总数。

第三实现方式:计算设备也可以选择候选模型中最高的测验准确率对应的候选模型。

在一种的实现,候选集中第j个候选模型被选择的概率/权重qj可以表示为:

qj=softmax(aj)(3)

其中,aj为第j个候选模型的测验准确率。

同第二种实现方式,可以对候选集中第j个候选模型被选择的概率/权重qj通过sharpen算法进行处理,得到处理后的概率/权重dj,具体实现参见上述第二种实现方式,此处不在赘述。

在一些实施例中,以第k次模型搜索过程为例来说明,在进行第k次模型搜索之前,候选集中可以包括前k-1次模型搜索过程中低比特量化得到的至少一个模型。通过上述方法,基于准确率进行候选模型的选择,使得准确率更高的模型被选中,各个轮次得到的模型都有可能被选中,避免模型的搜索进入局部最优,提高搜索的模型的准确率。进一步地,在上述第二实现方式中,基于轮次设定的候选模型的权重,使得搜索轮次越接近本次搜索,则该搜索轮次得到的候选模型的概率/权重越大,从而使得,最近轮次得到的候选模型被优先选中。

在另一些实施例中,在进行第k次模型搜索之前,候选集中仅包括第k-1次模型搜索过程中低比特量化得到的至少一个模型。此时,模型的搜索过程中不考虑前k-2次模型搜索过程中低比特量化得到的模型,可以减少搜索空间,减少实验训练的工作量,加快模型搜索的进程。

需要说明的是,在不同轮次的搜索过程中,从候选集中选择一个候选模型的实现方式可以相同或不同。还需要说明的是,候选集中的候选模型被选择后,被选择的候选模型(即目标模型)从候选集中去除,以避免该目标模型多次被选中。

s14:通过第一数据集对从候选集中选择出的候选模型进行训练和测试,得到目标模型和该目标模型的准确率。

其中,第一数据集包括多个样本,第一数据集可以划分为第一训练数据集和第一测试数据集,通过第一训练数据集对从候选集中选择出的候选模型进行训练,得到训练后的模型(即本申请中的目标模型),进一步地,通过第一测试数据集对目标模型进行测试,以得到该目标模型的准确率。

s15:判断目标模型的n个评价参数和目标模型的准确率是否都满足要求,若目标模型的n个评价参数和准确率都满足要求,则执行s16;若目标模型的n个评价参数存在至少一个n个评价参数不满足要求且目标模型的准确率满足要求,可对该目标模型进行量化,即执行s17-20;若目标模型的准确率不满足要求,则可以重新执行s12,从候选集中选择新的目标模型。

其中,n个评价参数可以包括推理时间和/参数量。目标模型的推理时间可以根据在移动终端测试得到的m个纯比特模型中每一层层结构的推理时间计算得到;同理,目标模型的参数量也可以根据在移动终端测试得到的m个纯比特模型中每一层层结构的参数量计算得到。例如,待量化模型/目标模型包括h层层结构,目标模型的层结构分别表示为f1,8、f2,4、…、fi,8、…、fh,16。那么,目标模型的推理时间即为上述层结构f1,8、f2,4、…、fi,8、…、fh,16的推理时间之和;目标模型的参数量即为上述层结构f1,8、f2,4、…、fi,8、…、fh,16的参数量之和。

其中,判断目标模型的n个评价参数是否都满足要求的实现(一)可以是:判断目标模型的推理时间是否小于目标时间阈值以及判断目标模型的参数量是否小于目标参数量,若目标模型的推理时间小于目标时间阈值以且目标模型的参数量小于目标参数量,则目标模型的n个评价参数都满足要求;当目标模型的推理时间不小于目标时间阈值或目标模型的参数量不小于目标参数量时,则目标模型存在至少一个n个评价参数不满足要求。在另一实现中,n个评价参数可以包括推理时间或参数量,进而,判断目标模型的推理时间或参数量是否满足要求的具体实现可以参见上述实现(一)中相关描述,此处不再赘述。

其中,判断目标模型的准确率是否都满足要求的一种实现可以是判断目标模型的准确率大于目标阈值,如0.76、0.8、0.9等,如果是,则判断目标模型的准确率满足要求,否则,不满足要求。

应理解,上述目标推理时间、目标参数量、目标阈值可以是客户或用户设定的值,指示用户期望的目标模型达到的标准。

s16:输出该目标模型。

当目标模型的n个评价参数都满足要求且目标模型的准确率满足要求,说明当前的目标模型满足客户要求,此时可以输出该目标模型,进一步地,可以将该目标模型发送至客户设备或用户终端。

s17:根据m个纯比特模型中每一层层结构的n个评价参数获取目标模型中每一层层结构的n个评价参数。

其中,目标模型中每一层层结构的推理时间和参数量可以从上述步骤s12中得到各个层结构fi,m的推理时间、参数量,其中,1≤i≤h,m∈比特数集合。

s18:根据目标模型的网络结构和目标模型中每一层层结构的n个评价参数,确定目标模型中每一层层结构的量化权重。其中,量化权重用于目标模型中被低比特量化的层结构的选择,确定层结构的量化权重的具体实现可以参见下述目标模型中层结构i的量化权重pi的具体实现,此处不再赘述。

在步骤s18的一种实现方式中,若所述目标模型的推理时间大于目标推理时间且所述目标模型的参数量不大于目标参数量,则根据所述目标模型中的层结构i的推理时间和所述层结构i的权重确定所述目标模型中的层结构i的量化权重;若所述目标模型的推理时间不大于目标推理时间且所述目标模型的参数量大于目标参数量,则根据所述目标模型中的层结构i的参数量和所述层结构i的权重确定所述目标模型中的层结构i的量化权重;若所述目标模型的推理时间大于目标推理时间且所述目标模型的参数量大于目标参数量,则根据所述目标模型中的层结构i的推理时间、所述目标模型中的层结构i的参数量和所述层结构i的权重确定所述目标模型中的层结构i的量化权重。

以确定目标模型中层结构i的量化权重pi为例来说明目标模型中各个层结构量化权重的确定方法,目标模型中层结构i的量化权重pi为:

pi=softmax{oi[αli*f(t)+βri*f(m)]}(4)

其中,α、β分别为推理时间和参数量的权重,可以是常数,如经验值;oi为所述层结构i的权重,li为所述层结构i的推理时间或为所述层结构i的推理时间与所述目标模型的推理时间的比值;ri为所述层结构i的参数量或所述层结构i的参数量与所述目标模型的参数量的比值;t为所述目标模型的推理时间与所述目标推理时间的比值,m为所述目标模型的参数量与所述目标参数量的比值。

可选地,通常模型中越接近输入数据的层结构的精度对模型的准确度影响越大,为最大程度保持量化后的模型的精度,可以在目标模型的层结构的量化权重中考虑到层结构的位置,这一因素,通过设置层结构的权重,可以优先选择对模型的准确度影响小的层结构进行量化。层结构的权重与层结构在模型中的位置有关,可以是预先设定的值,通常靠近输入数据的层结构具有较小的权重,而靠近输出数据的层结构具有较大的权重。

在步骤s18的第二种实现方式中,也可以不考虑上述层结构的位置,不设置层结构的权重。此时,目标模型中层结构i的量化权重pi可以表示为:

pi=softmax[αli*f(t)+βri*f(m)](6)

其中,公式(6)中各个参数的含义可以参见上述步骤s18的第一种实现方式中相关描述,此处不再赘述。

可见,通过上述公式(4)/公式(6)、公式(5),可以得到目标模型中每一层层结构的量化权重,在目标模型的推理时间小于目标推理时间且目标模型的参数量不小于目标参数量时,则说明目标模型的推理时间满足要求但其参数量不满足要求,此时,f(t)=0,f(m)=m,目标模型中层结构i的量化权重pi主要考虑该层结构的参数量;在目标模型的推理时间不小于目标推理时间且目标模型的参数量小于目标参数量时,则说明目标模型的推理时间不满足要求但其参数量满足要求,此时,f(t)=t,f(m)=0,目标模型中的层结构i的量化权重pi主要考虑该层结构的推理时间;在目标模型的推理时间不小于目标推理时间且目标模型的参数量不小于目标参数量时,则说明目标模型的推理时间和参数量都不满足要求,此时f(t)=t,f(m)=m,目标模型中的层结构i的量化权重pi同时考虑该层结构的推理时间和参数量。

s19:对目标模型中量化权重最大的层结构进行量化,得到量化后的模型。

这里,量化为低比特量化,低比特量化是指将目标模型中被选中的层结构的模型参数的比特数转换为比当前模型参数的比特数更低的比特数。具体实现包括:将所述目标模型中量化权重最大的层结构中模型参数分别转换由至少一个比特数表示的模型参数,所述至少一个比特数为比特数集合中比所述目标模型中量化权重最大的层结构的模型参数的当前比特数低的比特数,所述比特数集合包括m个数值,所述m个数值分别用于指示所述m个纯比特模型中模型参数的比特数。

例如,如图3c所示,比特数集合={1,2,4,8,16},目标模型(f1,8、f2,4、…、fi,8、…、fh,16)中被选中的层结构为fh,16,则可以将该层结构fh,16可以量化得到fh,1、fh,2、fh,4、fh,8得到的低比特量化后的模型分别是模型(f1,8、f2,4、…、fi,8、…、fh,1)、模型(f1,8、f2,4、…、fi,8、…、fh,2)、模型(f1,8、f2,4、…、fi,8、…、fh,4)和模型(f1,8、f2,4、…、fi,8、…、fh,8)。

可选地,在步骤s18之后,s19之前,计算设备还可以也可以确定该被选中的层结构为fh,16量化的比特数。例如,可以选择将该层结构fh,16可以量化得到fh,4、fh,8。此时,相对于上述图3c,可以减少添加到候选集中的量化后的模型,缩小模型的搜索空间,加速模型的搜索过程。

s20:将量化得到的模型添加至候选集中。

在一些实施例中,可以将上述量化得到的所有模型,例如模型(f1,8、f2,4、…、fi,8、…、fh,1)、模型(f1,8、f2,4、…、fi,8、…、fh,2)、模型(f1,8、f2,4、…、fi,8、…、fh,4)和模型(f1,8、f2,4、…、fi,8、…、fh,8)都添加至候选集合中。

在另一些实施例中,也可以将量化得到部分候选模型添加至候选集合中。

在计算设备执行步骤s20,对候选集进行更新后,可以重新执行上述步骤s13-s20中的部分或全部步骤,上述步骤s13-s20可以称为一次/轮模型搜索,在经过多次的模型搜索后,可以得到推理时间、参数量、准确率满足要求的目标模型。

上述图2所示的机器学习模型的搜索方法可以应用于多种场景。例如,图像的分类:

待量化模型可以是第一图像分类模型,该第一图像分类模型可以对输入的图像进行分类。第一数据集和第二数据集均包括多个图像,每一个图像均被标注其类别,例如,第一数据集中包括标注“菊花”的图像、标注“荷花”的图像、标注“麦子”的图像、标注“玉米”的图像、标注“牡丹花”的图像等标注了各种植物的图像,此时,第一图像分类模型可以识别出图像中植物的类别。第一图像分类模型为该第一数据集训练得到的全浮点模型。为了使得该第一图像分类模型可以被应用于终端,通过上述图2所示的机器学习模型的搜索方法对该第一图像分类模型进行量化,以得到推理时间、参数量都满足要求的目标模型(即第二图像分类模型),该第二图像分类模型也是一个图像分类模型,其为混合比特模型。第二图像分类模型和第一图像分类模型的模型结构相同,但模型参数的数据类型不同。

将上述第二图像分类模型应用于终端,可以实现对图像的类别,如图4所示,为本申请实施例涉及的一种图像识别方法,该方法由终端执行,该方法可以包括但不限于如下步骤:

s41:获取待识别图像,其中,待识别图像可以是终端可以通过摄像头获取当前场景中的图像。

s42:将待识别图像输入到第二图像识别模型,得到该待识别图像的类别。其中,第二图像识别模型是以第一图像分类模型作为待量化模型通过上述图2所示的机器学习模型的搜索方法输出的目标模型。

s43:输出该待识别图像的类别。

在一种实现中,终端可以将该待识别图像的类别添加到待识别图像中。例如,当前场景中包括牡丹花,则可以通过第二图像识别模型可以识别到该待识别图像的类别为“牡丹花”,此时,可以将文本“牡丹花”添加至待识别图像中。

通过图2所示的机器学习模型的搜索方法对该第一图像分类模型进行量化,得到的第二机器学习模型可以占用较少的内存和计算资源,具备较快的图像识别速度,可以在通过摄像头实施获取图像的过程中,识别该图像的类别,以向用户实时输出识别结果。

不限于上述场景,本申请实施例提供的机器学习模型的搜索方法可以对其他待量化模型进行处理,得到满足要求的目标模型,以应用于终端。

下面介绍本申请实施例涉及的装置、设备。

如图5所示,为本申请实施例提供的一种机器学习模型的搜索装置,该装置500可以是图1所示的系统中的计算设备12,该装置500可以包括但不限于如下功能单元:

生成模块510,用于根据待量化模型生成m个纯比特模型,其中,所述纯比特模型和所述待量化模型为网络结构相同的深度神经网络,m为大于1的正整数;

参数获取模块520,用于获取所述m个纯比特模型中每一层层结构的n个评价参数,所述m个纯比特模型中每一层层结构的n个评价参数是由移动终端在运行所述m个纯比特模型时测量得到的;

执行模块530,用于执行至少一次模型搜索,输出所述n个评价参数和所述准确率都满足要求的模型;

其中,所述执行模块530包括训练测试单元531、获取单元532、权重单元533、量化单元534和添加单元535,所述执行模块530执行所述模型搜索的过程时:

所述训练测试单元531用于通过第一数据集对从候选集中选择出的候选模型进行训练和测试,得到目标模型和所述目标模型的准确率;所述候选集包括至少一个候选模型;所述候选模型是与所述待量化模型的网络结构相同的混合比特模型;所述第一数据集包括多个样本,用于训练和测试所述候选集中的候选模型;

所述获取单元532用于在所述目标模型的n个评价参数中存在至少一个评价参数不满足要求且所述目标模型的准确率大于目标阈值的情况下,根据所述m个纯比特模型中每一层层结构的n个评价参数获取所述目标模型中每一层层结构的n个评价参数;

所述权重单元533用于根据所述目标模型的网络结构和所述目标模型中每一层层结构的n个评价参数确定所述目标模型中每一层层结构的量化权重;

所述量化单元534用于对所述目标模型中量化权重最大的层结构进行量化;

所述添加单元535用于将量化得到的模型添加至所述候选集中。

在一种可能的实现中,所述n个评价参数包括推理时间和参数量,所述权重单元533具体用于:

若所述目标模型的推理时间大于目标推理时间且所述目标模型的参数量不大于目标参数量,则根据所述目标模型中的层结构i的推理时间和所述层结构i的权重确定所述目标模型中的层结构i的量化权重;

若所述目标模型的推理时间不大于目标推理时间且所述目标模型的参数量大于目标参数量,则根据所述目标模型中的层结构i的参数量和所述层结构i的权重确定所述目标模型中的层结构i的量化权重;

若所述目标模型的推理时间大于目标推理时间且所述目标模型的参数量大于目标参数量,则根据所述目标模型中的层结构i的推理时间、所述目标模型中的层结构i的参数量和所述层结构i的权重确定所述目标模型中的层结构i的量化权重。

在又一种可能的实现中,所述执行模块530还包括:

选择单元536,用于在所述训练测试单元执行所述通过第一数据集对从候选集中选择出的候选模型进行训练和测试之前,通过第二数据集对所述候选集中每一个候选模型进行训练和测试,得到所述候选集中每一个候选模型的测验准确率,所述第二数据集中的样本的数量小于所述第一数据集中的样本的数量;根据所述每一个候选模型的测验准确率和所述每一个候选模型的权重从所述候选集中选择一个候选模型。

在又一种可能的实现中,所述候选模型的权重是根据所述候选模型被添加到候选集时模型搜索的总次数和当前模型搜索的总次数确定的。

在又一种可能的实现中,所述量化单元534具体用于:

将所述目标模型中量化权重最大的层结构中模型参数分别转换由至少一个比特数表示的模型参数,所述至少一个比特数为比特数集合中比所述目标模型中量化权重最大的层结构的模型参数的当前比特数低的比特数,所述比特数集合包括m个数值,所述m个数值分别用于指示所述m个纯比特模型中模型参数的比特数。

在又一种可能的实现中,所述执行模块530还用于:

在所述目标模型的准确率小于所述目标阈值的情况下,从所述候选集中重新选择一个模型,执行所述模型搜索。

在又一种可能的实现中,所述n个评价参数包括推理时间,所述参数获取模块520具体用于:

将所述m个纯比特模型发送至移动终端,以使所述移动终端运行所述m个纯比特模型和测量所述m个纯比特模型中每一层层结构的推理时间;

接收所述移动终端发送的所述m个纯比特模型中每一层层结构的推理时间。

在又一种可能的实现中,在第一次模型搜索时,所述候选集包括所述m个纯比特模型中比特数最高的纯比特模型

需要说明的是,上述各个单元的具体实现可以参见上述方法实施例图2所示的机器学习模型的搜索方法中相关描述,此处不再赘述。

如图6所示为本申请实施例提供的一种图像识别装置,该装置600可以是图1所示的系统中的用户设备15,该装置600可以包括但不限于如下功能单元:

获取单元610,用于获取待识别图像;

识别单元620,用于将待识别图像输入到第二图像识别模型,得到该待识别图像的类别;

输出单元630,用于输出该待识别图像的类别。

其中,第二图像识别模型是以第一图像分类模型作为待量化模型通过上述图2所述的机器学习模型的搜索方法输出的目标模型。第一图像识别模型是训练后的可识别图像的类别的深度神经网络,第一图像识别模型为全浮点模型或混合模型。

可选地,待识别图像可以是终端可以通过摄像头获取当前场景中的图像。

需要说明的是,上述各个单元的具体实现可以参见上述方法实施例图4所示的图像识别方法中相关描述,此处不再赘述。

图7是本申请实施例提供的一种机器学习模型的搜索装置的硬件结构示意图。图7所示的神经网络的训练装置700(该装置700具体可以是一种计算机设备)可以包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。

存储器701可以是只读存储器(readonlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行本申请实施例的机器学习模型的搜索方法中的全部或部分步骤。

处理器702可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),图形处理器(graphicsprocessingunit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的神经网络的训练装置中的单元所需执行的功能,或者执行本申请方法中的机器学习模型的搜索方法中的全部或部分步骤。

处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络的训练方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例的机器学习模型的搜索装置中包括的单元所需执行的功能,或者执行本申请方法实施例的机器学习模型的搜索方法中的全部或部分步骤。

通信接口703使用例如但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。例如,可以通过通信接口703获取数据集(第一数据集和/或第二数据集、待量化模型)。

总线704可包括在装置700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。

应理解,机器学习模型的搜索装置500中的参数获取模块520可以相当于神经网络搜索装置700中的通信接口703,生成模块510、执行模块530可以相当于处理器702。

图8示出了终端800的结构示意图。

下面以终端800为例对实施例进行具体说明。应该理解的是,图1所示终端800仅是一个范例,并且终端800可以具有比图8中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。

终端800可以包括:处理器810,外部存储器接口820,内部存储器821,通用串行总线(universalserialbus,usb)接口830,充电管理模块840,电源管理模块841,电池842,天线1,天线2,移动通信模块850,无线通信模块860,音频模块870,扬声器870a,受话器870b,麦克风870c,耳机接口870d,传感器模块880,按键890,马达891,指示器892,摄像头893,显示屏894,以及用户标识模块(subscriberidentificationmodule,sim)卡接口895等。其中传感器模块880可以包括压力传感器880a,陀螺仪传感器880b,气压传感器880c,磁传感器880d,加速度传感器880e,距离传感器880f,接近光传感器880g,指纹传感器880h,温度传感器880j,触摸传感器880k,环境光传感器880l,骨传导传感器880m等。

可以理解的是,本发明实施例示意的结构并不构成对终端800的具体限定。在本申请另一些实施例中,终端800可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器810可以包括一个或多个处理单元,例如:处理器810可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

其中,控制器可以是终端800的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器810中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器810中的存储器为高速缓冲存储器。该存储器可以保存处理器810刚用过或循环使用的指令或数据。如果处理器810需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器810的等待时间,因而提高了系统的效率。

在一些实施例中,处理器810可以包括一个或多个接口。接口可以包括集成电路(inter-integratedcircuit,i2c)接口,集成电路内置音频(inter-integratedcircuitsound,i2s)接口,脉冲编码调制(pulsecodemodulation,pcm)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,uart)接口,移动产业处理器接口(mobileindustryprocessorinterface,mipi),通用输入输出(general-purposeinput/output,gpio)接口,用户标识模块(subscriberidentitymodule,sim)接口,和/或通用串行总线(universalserialbus,usb)接口等。

i2c接口是一种双向同步串行总线,包括一根串行数据线(serialdataline,sda)和一根串行时钟线(derailclockline,scl)。在一些实施例中,处理器810可以包含多组i2c总线。处理器810可以通过不同的i2c总线接口分别耦合触摸传感器880k,充电器,闪光灯,摄像头893等。例如:处理器810可以通过i2c接口耦合触摸传感器880k,使处理器810与触摸传感器880k通过i2c总线接口通信,实现终端800的触摸功能。

i2s接口可以用于音频通信。在一些实施例中,处理器810可以包含多组i2s总线。处理器810可以通过i2s总线与音频模块870耦合,实现处理器810与音频模块870之间的通信。在一些实施例中,音频模块870可以通过i2s接口向无线通信模块860传递音频信号,实现通过蓝牙耳机接听电话的功能。

pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块870与无线通信模块860可以通过pcm总线接口耦合。在一些实施例中,音频模块870也可以通过pcm接口向无线通信模块860传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。

uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器810与无线通信模块860。例如:处理器810通过uart接口与无线通信模块860中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块870可以通过uart接口向无线通信模块860传递音频信号,实现通过蓝牙耳机播放音乐的功能。

mipi接口可以被用于连接处理器810与显示屏894,摄像头893等外围器件。mipi接口包括摄像头串行接口(cameraserialinterface,csi),显示屏串行接口(displayserialinterface,dsi)等。在一些实施例中,处理器810和摄像头893通过csi接口通信,实现终端800的拍摄功能。处理器810和显示屏894通过dsi接口通信,实现终端800的显示功能。

gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器810与摄像头893,显示屏894,无线通信模块860,音频模块870,传感器模块880等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。

usb接口830是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口830可以用于连接充电器为终端800充电,也可以用于终端800与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。

可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端800的结构限定。在本申请另一些实施例中,终端800也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块840用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块840可以通过usb接口830接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块840可以通过终端800的无线充电线圈接收无线充电输入。充电管理模块840为电池842充电的同时,还可以通过电源管理模块841为电子设备供电。

电源管理模块841用于连接电池842,充电管理模块840与处理器810。电源管理模块841接收电池842和/或充电管理模块840的输入,为处理器810,内部存储器821,外部存储器,显示屏894,摄像头893,和无线通信模块860等供电。电源管理模块841还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块841也可以设置于处理器810中。在另一些实施例中,电源管理模块841和充电管理模块840也可以设置于同一个器件中。

终端800的无线通信功能可以通过天线1,天线2,移动通信模块850,无线通信模块860,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。终端800中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块850可以提供应用在终端800上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块850可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,lna)等。移动通信模块850可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块850还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块850的至少部分功能模块可以被设置于处理器810中。在一些实施例中,移动通信模块850的至少部分功能模块可以与处理器810的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器870a,受话器870b等)输出声音信号,或通过显示屏894显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器810,与移动通信模块850或其他功能模块设置在同一个器件中。

无线通信模块860可以提供应用在终端800上的包括无线局域网(wirelesslocalareanetworks,wlan)(如无线保真(wirelessfidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(globalnavigationsatellitesystem,gnss),调频(frequencymodulation,fm),近距离无线通信技术(nearfieldcommunication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块860可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块860经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器810。无线通信模块860还可以从处理器810接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,终端800的天线1和移动通信模块850耦合,天线2和无线通信模块860耦合,使得终端800可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(globalsystemformobilecommunications,gsm),通用分组无线服务(generalpacketradioservice,gprs),码分多址接入(codedivisionmultipleaccess,cdma),宽带码分多址(widebandcodedivisionmultipleaccess,wcdma),时分码分多址(time-divisioncodedivisionmultipleaccess,td-scdma),长期演进(longtermevolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(globalpositioningsystem,gps),全球导航卫星系统(globalnavigationsatellitesystem,glonass),北斗卫星导航系统(beidounavigationsatellitesystem,bds),准天顶卫星系统(quasi-zenithsatellitesystem,qzss)和/或星基增强系统(satellitebasedaugmentationsystems,sbas)。

终端800通过gpu,显示屏894,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏894和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器810可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。

显示屏894用于显示图像,视频等。显示屏894包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode的,amoled),柔性发光二极管(flexlight-emittingdiode,fled),miniled,microled,micro-oled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,终端800可以包括1个或n个显示屏894,n为大于1的正整数。

终端800可以通过isp,摄像头893,视频编解码器,gpu,显示屏894以及应用处理器等实现拍摄功能。

isp用于处理摄像头893反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头893中。

摄像头893用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,终端800可以包括1个或n个摄像头893,n为大于1的正整数。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端800在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。终端800可以支持一种或多种视频编解码器。这样,终端800可以播放或录制多种编码格式的视频,例如:动态图像专家组(movingpictureexpertsgroup,mpeg)1,mpeg2,mpeg3,mpeg4等。

npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端800的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口820可以用于连接外部存储卡,例如microsd卡,实现扩展终端800的存储能力。外部存储卡通过外部存储器接口820与处理器810通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器821可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器810通过运行存储在内部存储器821的指令,从而执行终端800的各种功能应用以及数据处理。内部存储器821可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端800使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器821可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。

终端800可以通过音频模块870,扬声器870a,受话器870b,麦克风870c,耳机接口870d,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块870用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块870还可以用于对音频信号编码和解码。在一些实施例中,音频模块870可以设置于处理器810中,或将音频模块870的部分功能模块设置于处理器810中。

扬声器870a,也称“喇叭”,用于将音频电信号转换为声音信号。终端800可以通过扬声器870a收听音乐,或收听免提通话。

受话器870b,也称“听筒”,用于将音频电信号转换成声音信号。当终端800接听电话或语音信息时,可以通过将受话器870b靠近人耳接听语音。

麦克风870c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风870c发声,将声音信号输入到麦克风870c。终端800可以设置至少一个麦克风870c。在另一些实施例中,终端800可以设置两个麦克风870c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端800还可以设置三个,四个或更多麦克风870c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。

耳机接口870d用于连接有线耳机。耳机接口870d可以是usb接口830,也可以是3.5mm的开放移动电子设备平台(openmobileterminalplatform,omtp)标准接口,美国蜂窝电信工业协会(cellulartelecommunicationsindustryassociationoftheusa,ctia)标准接口。

压力传感器880a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器880a可以设置于显示屏894。压力传感器880a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器880a,电极之间的电容改变。终端800根据电容的变化确定压力的强度。当有触摸操作作用于显示屏894,终端800根据压力传感器880a检测所述触摸操作强度。终端800也可以根据压力传感器880a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器880b可以用于确定终端800的运动姿态。在一些实施例中,可以通过陀螺仪传感器880b确定终端800围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器880b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器880b检测终端800抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消终端800的抖动,实现防抖。陀螺仪传感器880b还可以用于导航,体感游戏场景。

气压传感器880c用于测量气压。在一些实施例中,终端800通过气压传感器880c测得的气压值计算海拔高度,辅助定位和导航。

磁传感器880d包括霍尔传感器。终端800可以利用磁传感器880d检测翻盖皮套的开合。在一些实施例中,当终端800是翻盖机时,终端800可以根据磁传感器880d检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。

加速度传感器880e可检测终端800在各个方向上(一般为三轴)加速度的大小。当终端800静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。

距离传感器880f,用于测量距离。终端800可以通过红外或激光测量距离。在一些实施例中,拍摄场景,终端800可以利用距离传感器880f测距以实现快速对焦。

接近光传感器880g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。终端800通过发光二极管向外发射红外光。终端800使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定终端800附近有物体。当检测到不充分的反射光时,终端800可以确定终端800附近没有物体。终端800可以利用接近光传感器880g检测用户手持终端800贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器880g也可用于皮套模式,口袋模式自动解锁与锁屏。

环境光传感器880l用于感知环境光亮度。终端800可以根据感知的环境光亮度自适应调节显示屏894亮度。环境光传感器880l也可用于拍照时自动调节白平衡。环境光传感器880l还可以与接近光传感器880g配合,检测终端800是否在口袋里,以防误触。

指纹传感器880h用于采集指纹。终端800可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

温度传感器880j用于检测温度。在一些实施例中,终端800利用温度传感器880j检测的温度,执行温度处理策略。例如,当温度传感器880j上报的温度超过阈值,终端800执行降低位于温度传感器880j附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,终端800对电池842加热,以避免低温导致终端800异常关机。在其他一些实施例中,当温度低于又一阈值时,终端800对电池842的输出电压执行升压,以避免低温导致的异常关机。

触摸传感器880k,也称“触控面板”。触摸传感器880k可以设置于显示屏894,由触摸传感器880k与显示屏894组成触摸屏,也称“触控屏”。触摸传感器880k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏894提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器880k也可以设置于终端800的表面,与显示屏894所处的位置不同。

骨传导传感器880m可以获取振动信号。在一些实施例中,骨传导传感器880m可以获取人体声部振动骨块的振动信号。骨传导传感器880m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器880m也可以设置于耳机中,结合成骨传导耳机。音频模块870可以基于所述骨传导传感器880m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器880m获取的血压跳动信号解析心率信息,实现心率检测功能。

按键890包括开机键,音量键等。按键890可以是机械按键。也可以是触摸式按键。终端800可以接收按键输入,产生与终端800的用户设置以及功能控制有关的键信号输入。

马达891可以产生振动提示。马达891可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏894不同区域的触摸操作,马达891也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。

指示器892可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

sim卡接口895用于连接sim卡。sim卡可以通过插入sim卡接口895,或从sim卡接口895拔出,实现和终端800的接触和分离。终端800可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口895可以支持nanosim卡,microsim卡,sim卡等。同一个sim卡接口895可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口895也可以兼容不同类型的sim卡。sim卡接口895也可以兼容外部存储卡。终端800通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端800采用esim,即:嵌入式sim卡。esim卡可以嵌在终端800中,不能和终端800分离。

本申请实施例中,处理器14021读取存储器1401中的信息,结合其硬件完成本申请实施例的图像识别装置600中包括的单元所需执行的功能,或者执行本申请方法实施例的图像识别方法。

本申请实施例中,终端800可以通过摄像头893拍摄当前场景的图像,进而得到待识别图像。终端800可以通过显示器输出该待识别图像和/或待识别图像的类别。

上述图8所述的各个功能单元的具体实现可以参见上述图4所示的图像识别方法的实施例中相关描述,本申请实施例不再赘述。

本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。

作为实例而非限制,此类计算机可读存储媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、dsl或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。

可通过例如一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。

本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(ic)或一组ic(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。

以上所述,仅为本申请示例性的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

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