掌桥专利:专业的专利平台
掌桥专利
首页

图像模型训练、图像处理方法、芯片、设备及介质

文献发布时间:2023-06-19 09:41:38


图像模型训练、图像处理方法、芯片、设备及介质

技术领域

本发明涉及智能芯片领域,尤其涉及一种图像模型训练、图像处理方法、芯片、设备及介质。

背景技术

随着科学技术的发展,人工智能技术也应用在各个场景中,例如智能机器人、智能家居、智能安防等场景。在上述场景中,往往是通过若干集成的智能芯片亦或者单独智能芯片实现各个场景下的不同功能,不同的场景下,对于智能芯片的要求也不尽相同。

一般的智能芯片中的神经网络模型参数均为float32型算子,但是随着智能芯片中神经网络模型的参数越来越多,智能芯片要获取更高性能以及能耗比时,不得不采用低比特算子计算,例如采用int4/int8/int16/float16来代替原始模型float32算子,因此需要对智能芯片进行量化。虽然量化采用的比特数越少,智能芯片所需要的内存越少,计算越快,功耗越低,但是过少的比特数必然会引起整个神经网络精度的下降。如何决定神经网络中每个处理过程需要量化的比特数来平衡性能和精度是一项复杂的工程,因此现有的智能芯片中缺少具有有效量化方式的神经网路。

发明内容

本发明实施例提供一种图像模型训练、图像处理方法、芯片、设备及介质,以解决神经网络量化的比特数无法平衡智能芯片性能和精度的问题。

一种图像模型训练方法,包括:

获取样本图像集,所述样本图像集中包含至少一个样本图像;一个所述样本图像与一个原始网络输出关联;

将所述样本图像输入至包含初始参数的预设神经网络模型中,通过所述预设神经网络模型对所述样本图像进行对称量化处理,以获取所述预设神经网络模型输出的第一量化网络输出;

确定所述第一量化网络输出与所述原始网络输出之间的第一余弦相似度;

根据所述第一余弦相似度、预设相似度阈值以及预设混合精度量化方法,对所述预设神经网络模型进行优化处理,获取优化处理后的预设神经网络模型的预设网络输出;

确定所述预设网络输出与所述原始网络输出之间的损失值,在所述损失值未达到预设收敛条件时,迭代更新所述预设神经网络模型的初始参数,直至所述损失值达到预设收敛条件时,将所述预设神经网络模型记录为图像处理模型。

一种图像处理方法,包括:

获取待处理图像;

将所述待处理图像输入至图像处理模型中,得到与所述待处理图像对应图像输出结果;所述图像处理模型是根据上述图像模型训练方法得到的。

一种智能芯片,包括存储模块、处理模块以及存储在所述存储模块中并可在所述处理模块上运行的图像处理模型,所述图像处理模型是根据上述图像处理模型训练方法得到的;所述处理模块用于通过所述图像处理模型执行上述图像处理方法。

一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述图像处理模型训练方法,或者所述处理器执行所述计算机程序时实现上述图像处理方法。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述图像模型训练方法,或者所述计算机程序被处理器执行时实现上述图像处理方法。

上述图像模型训练、图像处理方法、芯片、设备及介质,该方法通过确定经过对称量化处理后的第一量化网络输出与原始网络输出之间的第一余弦相似度,并根据第一余弦相似度、余弦相似度阈值以及预设混合精度量化方法,对预设神经网络模型进行进一步优化处理,保并在预设神经网络模型的预设网络输出与原始网络输出之间的损失值达到预设收敛条件时,将训练完成的神经网络模型记录为图像处理模型,以通过混合精度量化方式以及不断调节初始参数的方法,使得最终得到的图像处理模型的网络输出与原始网路输出之间的损失值较小,并且在混合精度量化过程中可以减少预设神经网络的参数,进而提高最终训练得到的图像处理模型的推理速率,以在将图像处理模型设置在智能芯片时,可以保证智能芯片的处理性能和处理精度。

附图说明

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

图1是本发明一实施例中图像模型训练方法的一流程图;

图2是本发明一实施例中图像模型训练方法中步骤S20的一流程图;

图3是本发明一实施例中图像模型训练方法中步骤S40的一流程图;

图4是本发明一实施例中图像模型训练方法中步骤S40的另一流程图;

图5是本发明一实施例中图像模型训练方法中步骤S40的另一流程图;

图6是本发明一实施例中图像模型训练方法中步骤S40的另一流程图;

图7是本发明一实施例中计算机设备的一示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在一实施例中,如图1所示,提供一种图像模型训练方法,包括如下步骤:

S10:获取样本图像集,所述样本图像集中包含至少一个样本图像,每一样本图像均关联一个原始网络输出。

其中,样本图像集中的各样本图像可以为各类不同场景下采集到的图像,示例性地,样本图像可以为监控摄像头拍摄的监控图像,也可以为通过互联网下载得到的图像。原始网络输出可以是通过其它神经网络模型(也即除了下述包含预设初始参数的预设神经网络模型以外的其它模型)对样本图像进行处理后得到的输出。可以理解地,其它神经网络模型对样本图像进行处理的方法,与下述步骤中包含初始参数的预设神经网络模型中的处理方法不相同。

S20:将所述样本图像输入至包含初始参数的预设神经网络模型中,通过预设神经网络模型对所述样本图像进行对称量化处理之后,获取预设神经网络模型输出的第一量化网络输出。

其中,预设神经网络模型是通过对如CNN(Convolutional Neural Networks,卷积神经网络)网络模型进行改进得到的,该预设神经网络模型中包含神经元处理单元以及矢量处理单元。

具体地,如图2所示,步骤S20中,也即将所述样本图像输入至包含初始参数的预设神经网络模型中,通过所述预设神经网络模型对所述样本图像进行对称量化处理,以获取所述预设神经网络模型输出的第一量化网络输出,包括如下步骤:

S201:获取与所述样本图像对应的第一精度算子以及第二精度算子;所述第二精度算子的精度高于所述第一精度算子的精度。

示例性地,第一精度算子可以为Convolution(卷积算子)、Dense(密集型算子)、Add(叠加算子)、Relu(激活算子)和Pool(池化算子)等算子。示例性地,第二精度算子可以为SoftMax(分类算子)、Sigmoid(激活算子)、Normalize(归一化算子)。需要说明的是,第一精度算子以及第二精度算子均为float型算子,并且第二精度算子的精度高于第一精度算子的精度。

S202:对所述第一精度算子进行对称量化处理并获取第一网络输出;

其中,对称量化处理指的是将第一精度算子从float型量化成INT型算子,并在以INT型算子进行计算之后,将INT型算子反量化为float型算子的过程。

具体地,步骤S302中,也即对所述第一精度算子进行对称量化处理并获取第一网络输出,包括如下步骤:

(1)采用对称量化模型对所述第一精度算子进行量化,得到与所述第一精度算子对应的量化算子。

具体地,在获取与所述样本图像对应的第一精度算子以及第二精度算子之后,获取所述对称量化模型中的量化参数;根据所述量化参数以及预设取整方法,对所述第一精度算子进行取整处理,得到与所述第一精度算子对应的取整算子;根据所述量化参数以及预设截取方法,对所述取整算子进行截取处理,得到所述量化算子。

进一步地,可以通过如下表达式得到量化算子:

x

其中:scale为收缩因子;threshold为量化阈值;N为量化位宽(N可以选取4、8、16等);x

进一步地,第一精度算子为float型算子,需要将第一精度算子转换成INT型的算子才可以通过神经元处理单元对其进行计算,而对于第一精度算子来说,采用8bit量化可以保证第一精度算子的精度的同时,减小第一精度算子的参数,因此该对称量化模型默认采用8bit Per channel对第一精度算子进行量化,也即上述表达式中的N取值为8,因此对于不同channel的对称量化模型,对应的scale也不相同;第一精度算子对应的量化对象包括Activation(算子的激活输出)和weight(算子参数),因此采用8bit Per channel对第一精度算子进行量化,也即表征采用INT8表示第一精度算子的Activation和weight。

进一步地,上述表达式中的threshold,对于第一精度算子的量化对象为Activation时,通过calibration(校准)的方式统计得到;对于第一精度算子的量化对象为weight时,直接取weight的绝对值的最大值。上述表达式中的clip()为截取函数,其中-2N-1为允许的最小长度的算子,也即出现任意一个算子长度小于该值,则舍去;2N-1-1为允许的最大长度的算子,也即任意一个算子长度大于该值,则舍去;也即限定对第一精度算子进行量化后,各算子的算子长度限定在-2N-1~2N-1-1之间。

(2)通过所述神经元处理单元对所述量化算子进行计算之后,通过所述矢量处理单元对计算后的所述量化算子进行反量化处理,得到所述第一网络输出。

其中,预设神经网络模型中还包括神经元处理单元。神经元处理单元处理密集型低精度算子,该神经元处理单元主要支持INT8以及INT4算子。反量化处理指的是将计算之后的量化算子从INT型算子反量化为float型算子。

具体地,在采用对称量化模型对所述第一精度算子进行量化,得到与所述第一精度算子对应的量化算子之后,根据所述量化参数以及所述量化算子,通过所述矢量处理单元对计算后的所述量化算子反量化处理,得到所述第一网络输出。

具体地,采用如下反量化模型对计算后的所述量化算子反量化处理:

x

其中,x

需要说明的是,该反量化模型存储在矢量处理单元中,也即在通过神经元处理单元对量化算子进行计算之后,将计算之后的量化算子输入至矢量处理单元中的反量化模型中,通过该反量化模型对计算后的量化算子进行反量化处理,进而将INT型的量化算子反量化为float型算子。

在上述步骤的说明中已经表明,一般默认采用8bit Per channel对第一精度算子进行量化,也即采用INT8表示Activation和weight,而神经元处理单元支持INT8并且主要处理密集型低精度算子,因此在对量化算子进行计算时,通过神经元处理单元对量化算子进行计算。

S203:获取与所述第二精度算子对应的第二网络输出。

也即通过所述矢量处理单元对所述第二精度算子进行计算,得到所述第二网络输出。

其中,预设神经网络模型中还包括矢量处理单元,矢量处理单元处理如第二精度算子等精度比第一精度算子高的算子,该矢量处理单元主要支持INT8、INT16以及Float16算子。

具体地,对于第二精度算子,在本实施例中不采用对称量化模型对其进行量化,因为第二精度算子不需要通过转换成INT型算子的方式之后再进行计算,因此本实施例中,可以直接采用Float16算子表示第二精度算子;并且由于矢量处理单元可以支持Float16算子,而神经元处理单元不支持Float16算子,因此通过矢量处理单元对第二精度算子进行计算,得到第二网络输出。

S204:将所述第一网络输出以及第二网络输出记录为所述预设神经网络模型的第一量化网络输出。

具体地,在获取与样本图像对应的第一精度算子以及第二精度算子之后,对第一精度算子进行对称量化处理后,获取与对称量化处理后的第一精度算子对应的第一网络输出;获取与第二精度算子对应的第二网络输出(也即第二精度算子不进行对称量化,直接对第二精度算子进行计算,进而获取第二网络输出);将第一网络输出以及第二网络输出记录为预设神经网络模型的第一量化网络输出。

进一步地,在获取到第一网络输出以及第二网络输出之后,将第一网络输出以及第二网络输出记录为预设神经网络模型的第一量化网络输出。可以理解地,由于对量化算子进行反量化处理后为float型数据,而第二网络输出中是通过Float16算子表示,因此第二网络输出也为float型数据,因此第一量化网络输出中为float型数据,进而才可以与步骤S30中的原始网络输出进行余弦相似度计算。

S30:确定所述第一量化网络输出与所述原始网络输出之间的第一余弦相似度。

其中,第一余弦相似度用于表征第一量化网络输出以及原始网络输出之间的相似程度。

具体地,在将所述第一网络输出以及第二网络输出记录为所述预设神经网络模型的第一量化网络输出之后,获取通过其它计算机设备(如个人计算机等)对第一精度算子以及第二精度算子进行计算后得到的原始网络输出,进而根据下述表达式确定第一量化网络输出与原始网络输出之间的第一余弦相似度:

其中,α为第一余弦相似度;X

S40:根据所述第一余弦相似度、预设相似度阈值以及预设混合精度量化方法,对所述预设神经网络模型进行优化处理,获取优化处理后的预设神经网络模型的预设网络输出。

其中,第一余弦相似度的取值范围为-1~1,第一余弦相似度的值越大,表明第一量化网络输出与原始网络输出之间的相似程度越高,因此本实施例中预设相似度阈值可以设定为如0.97,0.98等。预设混合精度量化方法指的是针对第一余弦相似度以及预设相似度阈值之间的大小关系,采用不同精度的算子对预设神经网络模型进行替代量化,进而达到优化预设神经网络模型的方法。预设网络输出指的是对预设神经网络模型进行优化处理之后,预设神经网络模型最终的输出结果。

S50:确定所述预设网络输出与所述原始网络输出之间的损失值,在所述损失值未达到预设收敛条件时,迭代更新所述预设神经网络模型的初始参数,直至所述损失值达到预设收敛条件时,将所述预设神经网络模型记录为图像处理模型。

其中,损失值指的是预设网络输出与原始网络输出之间的相似度损失。

具体地,在获取优化处理后的预设神经网络模型的预设网络输出之后,确定预设网络输出与原始网络输出之间的相似度,可以将该相似度与预设相似度阈值之间的差值记录为损失值,则此时预设收敛条件可以为损失值小于0.01,也即预设网络输出与原始网络输出之间的相似度,与预设相似度阈值之间的差值需要小于0.01,进而可以保证优化处理后的预设神经网络模型的输出可以满足余弦相似度的要求的同时,经过优化处理的预设神经网络模型的参数量减小,提高预设神经网络模型的推理速率。

可以理解地,该收敛条件可以为损失值小于设定阈值的条件,也即在损失值小于设定阈值时,停止训练;收敛条件还可以为损失值经过了10000次计算后值为很小且不会再下降的条件,也即损失值经过10000次计算后值很小且不会下降时,停止训练,并将收敛之后的预设神经网络模型记录为图像处理模型。

进一步地,根据预设网络输出与所述原始网络输出确定损失值之后,在损失值未达到预设的收敛条件时,根据该损失值调整预设神经网络模型的初始参数,并将该样本图像重新输入至调整初始参数后的预设神经网络模型中,以在该样本图像对应的损失值达到预设的收敛条件时,选取样本图像集中另一样本图像,并执行步骤S30-S40,得到与该样本图像对应的损失值,并在该损失值未达到预设的收敛条件时,根据该损失值再次调整预设神经网络模型的初始参数,使得该样本图像对应的损失值也达到预设的收敛条件。

如此,在通过样本图像集中所有样本图像对预设神经网络模型进行训练之后,使得预设神经网络模型的输出可以不断向准确地结果靠拢,直至所有样本图像对应的损失值均达到预设的收敛条件时,将收敛之后的预设神经网络模型记录为图像处理模型。

在本实施例中,由于第一精度算子的计算性能远远高于浮点算子,且预设神经网络模型中神经元处理单元只支持定点计算,因此本实施中通过对第一精度算子(原始为float型算子)进行对称量化之后(此时转换为INT型算子)进行定点计算,可以使得进行对称量化之后预设神经网络模型中的参数变小,进而减少预设神经网络模型中的存储空间;并且通过根据第一余弦相似度以及预设相似度阈值,对所述预设神经网络模型进行基于混合精度的量化处理,可以进一步减少预设神经网络模型的计算量,提高预设神经网络模型的计算速率。

在一具体实施例中,如图3所示,步骤S40中,也即根据所述第一余弦相似度、预设相似度阈值以及预设混合精度量化方法,对所述预设神经网络模型进行优化处理,包括:

S401:检测所述第一余弦相似度是否大于或等于所述预设相似度阈值。

S402:在所述第一余弦相似度大于或等于所述预设相似度阈值时,采用第一整型算子代替所述第一网络输出中计算量超过第一预设计算量的算子,将替换之后的所述第一网络输出记录为第一替代算子。

其中,第一整型算子指的是各种字节(如4个字节、2个字节等)且有符号整型的算子。第一预设计算量可以根据第一网络输出的算子总数进行确定。根据上述实施例中说明,默认采用8bit per channel(也即INT8型算子)对第一精度算子进行量化后计算,因此作为优选,本实施例中第一整型算子可以为INT4型算子。

具体地,在确定所述第一量化网络输出与所述原始网络输出之间的第一余弦相似度之后,检测第一余弦相似度是否大于或等于预设相似度阈值;在第一余弦相似度大于或等于预设相似度阈值时,将第一网络输出中通过INT8算子表示后通过神经元处理单元计算的算子按照计算量从大到小排序,亦或者从小到大排序(可以理解地,在上述说明中第一网络输出通过对称量化时,采用INT8表示第一精度算子的Activation和weight,因此第一网络输出中均是通过INT8表示后通过神经元处理单元计算的算子),进而将第一网络输出中计算量超过第一预设计算量的算子替换成第一整型算子,也即将超过第一预设计算量的算子替换成采用INT4进行表示其Activation和/或weight(可以理解地,原来超过第一预设计算量的算子是通过转换成8个字节且有符号整型进行计算,现在将超过第一预设计算量的算子替换成4个字节且有符号整型进行计算),并且将替换之后的所述第一网络输出记录为第一替代算子。可以理解地,第一网络输出中除计算量超过第一预设计算量的算子以外的其它算子,以及第二网络输出中各算子,均不进行替换。

S403:通过所述神经元处理单元对所述第一替代算子进行计算,得到第三网络输出,并将所述第三网络输出以及第二网络输出记录为第二量化网络输出。

具体地,在所述第一余弦相似度大于或等于所述预设相似度阈值时,采用第一整型算子代替所述第一网络输出中计算量超过第一预设计算量的算子,将替换之后的所述第一网络输出记录为第一替代算子之后,第一替代算子中包括INT8以及第一整型算子,上述说明中指出神经元处理单元主要支持INT8以及INT4形式的算子,因此此时应通过神经元处理单元对第一替代算子进行计算,并对计算后的第一替代算子进行反量化,得到与第一替代算子对应的第三网络输出,并将第三网络输出以及第二网络输出记录为第二量化网络输出。

S404:确定所述第二量化网络输出与所述原始网络输出之间的第二余弦相似度。

S405:在所述第二余弦相似度大于或等于所述预设相似度阈值时,采用优化查询方法对所述第二量化网络输出进行查询替代处理,以获取所述预设网络输出。

其中,第二余弦相似度的取值范围为-1~1,第二余弦相似度的值越大,表明第二量化网络输出与原始网络输出之间的相似程度越高。优化查询方法可以为动态回归算法、回溯法、分治法以及贪心算法等;本实施例中采用贪心算法作为优化查询方法,查询替代处理指的是从第二量化网络输出中的第三网络输出中找出连续且可以采用第一整型算子代替的算子。

具体地,在将所述第三网络输出以及第二网络输出记录为第二量化网络输出之后,确定第二量化网络输出与原始网络输出之间的第二余弦相似度;检测第二余弦相似度是否大于或等于预设相似度阈值,在第二余弦相似度大于或等于预设相似度阈值时,采用贪心算法寻找第三网络输出中连续且可以采用INT4代替的算子,并且同时设置最大搜索范围(如100个算子),防止搜索时间过长;在寻找到第三网络输出中连续且可以采用第一整型算子代替的算子时(如在剩余采用INT8表示的算子中寻找连续且可以采用第一整型算子代替的算子),将连续且采用INT4代替之后的量化网络(也即包括了第二网络输出以及代替后的第三网络输出)作为待量化图像模型训练完成的结果,得到预设网络输出。

进一步地,在第二余弦相似度小于预设相似度阈值时,可以放弃当前结果,并返回步骤S402中,并减少步骤S402中采用第一整型算子进行替代的算子数量(可以理解地,假设第一次采用INT4替代的算子的数量为5个,则此时可以减少为4个),并进一步确定替代后的余弦相似度与预设相似度阈值之间的关系,在余弦相似度大于或等于预设相似度阈值时,执行步骤S405;若在步骤S402中采用第一整型算子进行替代的算子数量减少至1个之后(减少至0个之后与第三网络输出相同,执行步骤S405已经表征余弦相似度大于或等于预设相似度阈值),此时的余弦相似度仍小于预设相似度阈值,则将当前预设神经网络模型的输出作为预设网络输出。

在本实施例中,在满足预设相似度阈值要求的前提下,采用第一整型算子替换第一网络输出中超过第一预设计算量的算子,进而更进一步减少预设神经网络模型的计算量,更进一步提高预设神经网络模型的计算速率,并且在采用优化查询方法进行查询时,设置最大搜索范围,防止搜索时间过长,缩短对预设神经网络模型进行量化过程的时间。

在一实施例中,预设神经网络模型还包括特殊处理单元,如图4所示,步骤S401之后,也即检测所述第一余弦相似度是否大于或等于所述预设相似度阈值之后,还包括:

S406:在所述第一余弦相似度小于所述预设相似度阈值时,采用浮点算子代替所述第二网络输出中计算量低于第二预设计算量的算子,将替换之后的所述第二网络输出记录为第二替代算子。

其中,浮点算子指的是各浮点型算子,作为优选,由于上述实施例中选用Float16型算子表示第二精度算子,因此本实施例中浮点算子采用的是32位浮点型算子。第二预设计算量可以根据第二网络输出的算子总数进行确定。

具体地址,在确定所述第一量化网络输出与所述原始网络输出之间的第一余弦相似度之后,检测第一余弦相似度是否大于或等于预设相似度阈值;在第一余弦相似度小于预设相似度阈值时,将第二网络输出中通过Float16算子表示后通过矢量处理单元计算的算子按照计算量从小到大排序,亦或者从大到小排序(可以理解地,在上述说明中第二网络输出均是通过Float16算子表示第二精度算子后通过矢量处理单元进行计算的),进而将第二网络输出中计算量低于第二预设计算量的算子替换成Float32算子,也即将低于第二预设计算量的算子替换成采用Float32进行表示(可以理解地,原来第二网输出中的第二精度算子是通过转换成16位浮点型形式后通过矢量处理单元进行计算的,现在将低于第二预设计算量的算子替换成32位浮点型形式后通过矢量处理单元进行计算),并将替换之后的第二网络输出记录为第二替代算子。

可以理解地,第二网络输出中除计算量低于第二预设计算量的算子以外的其它算子,以及第一网络输出中各算子均不进行替换。

S407:通过所述特殊处理单元对所述第二替代算子进行计算,得到第四网络输出,并将所述第一网络输出以及所述第四网络输出记录为第三量化网络输出。

其中,特殊处理单元可以为DSP(Digital Signal Process,数字信号处理器)或者CPU(Central Processing Unit,中央处理器),该特殊处理单元可以处理神经元处理单元以及矢量处理单元不支持的算子或者部分第二精度算子(例如Float32、Float16等)。

具体地,在所述第一余弦相似度小于所述预设相似度阈值时,采用浮点算子代替所述第二网络输出中计算量低于第二预设计算量的算子,将替换之后的所述第二网络输出记录为第二替代算子之后,第二替代算子中包括Float16以及浮点算子(也即上述说明中的Float32算子),而矢量处理单元并不支持处理Float32算子,因此需要采用特殊处理单元对第二替代算子进行计算,得到与第二替代算子对应的第四网络输出,并将第一网络输出以及第四网络输出记录为第三量化网络输出(由于此时仅对第二网络输出的算子进行量化,因此第一网络输出并没有产生变化)。

S408:采用预设查询方法查询所述第三量化网络输出中是否存在第一最小算子组合;所述第一最小算子组合指的是第三量化网络输出中的第一最小相似度大于或等于所述预设相似度阈值的所有算子组合中算子数量最少的算子组合;所述第一最小相似度指的是第三量化网络输出中的算子组合与原始网络输出中的预设算子组合之间的余弦相似度。

S409:在采用预设查询方法查询到第一最小算子组合时,采用第一整型算子代替所述第一网络输出中计算量较大的算子,得到所述第一替代算子。

其中,预设查询方法可以为二分法,或者叠加法(也即从单个算子查找,若单个算子不是第一最小算子组合时,扩大范围为两个算子,四个算子,以此类推,直至查询到第一最小算子组合亦或者所有算子组合均查询完毕时结束查询),本实施例中优选选用二分法作为预设查询方法。

具体地,在将所述第一网络输出以及所述第四网络输出记录为第三量化网络输出之后,通过步骤S30中的表达式确定第三量化网络输出与原始网络输出之间的余弦相似度,可以理解地,在该表达式中,是针对于第三量化网络输出以及原始网络输出中每一算子之间的余弦相似度(例如i为2时,则是X

进一步地,在采用二分法查询到第一最小算子组合时,由于第三量化网络输出中的第一网络输出并未对其进行量化处理,也即第一网络输出中的Activation均是通过INT8算子进行表示之后通过神经元处理单元进行计算的,因此按照计算量从大到小排序(或者从小到大)对第一网络输出中各算子进行排序,将第一网络输出中计算量超过第一预设计算量的算子替换成第一整型算子(优选为INT4算子),也即将超过第一预设计算量的算子替换成采用INT4进行表示其Activation和/或weight(可以理解地,原来超过第一预设计算量的算子是通过转换成8个字节且有符号整型进行计算,现在将超过第一预设计算量的算子替换成4个字节且有符号整型进行计算),并且将替换之后的所述第一网络输出记录为第一替代算子。

S410:通过所述神经元处理单元对所述第一替代算子进行计算,得到所述第三网络输出,并将所述第三网络输出以及所述第四网络输出记录为第四量化网络输出。

具体地,在所述第一余弦相似度大于或等于所述预设相似度阈值时,采用INT4算子代替所述第一网络输出中计算量超过第一预设计算量的算子,将替换之后的所述第一网络输出记录为第一替代算子之后,第一替代算子中包括INT8以及INT4算子,上述说明中指出神经元处理单元主要支持INT8以及INT4形式的算子,因此此时应通过神经元处理单元对第一替代算子进行计算,并对计算后的第一替代算子进行反量化,得到与第一替代算子对应的第三网络输出,并将第三网络输出以及第四网络输出记录为第四量化网络输出。

S411:确定所述第四量化网络输出与所述原始网络输出之间的第三余弦相似度。

S412:在所述第三余弦相似度大于或等于所述预设相似度阈值时,采用优化查询方法对所述第四量化网络输出进行查询替代处理,以获取预设网络输出。

其中,第三余弦相似度的取值范围为-1~1,第三余弦相似度的值越大,表明第四量化网络输出与原始网络输出之间的相似程度越高。

具体地,在将所述第三网络输出以及所述第四网络输出记录为第四量化网络输出之后,确定所述第四量化网络输出与所述原始网络输出之间的第三余弦相似度;检测第三余弦相似度是否大于或等于预设相似度阈值,在第三余弦相似度大于或等于预设相似度阈值时,采用优化查询方法寻找第三网络输出中连续且可以采用INT4代替的算子,(如在剩余采用INT8表示的算子中寻找连续且可以采用第一整型算子代替的算子),将连续且采用INT4代替之后的量化网络输出(也即包括了第四网络输出以及代替后的第三网络输出)作为预设网络输出。

在本实施例中,在第一余弦相似度未达到预设相似度阈值时,通过将浮点算子替代第二网络输出中计算量低于第二预设计算量的算子,以提高预设神经网络模型之后的网络输出与原始网络输出之间的余弦相似度,进而在保证余弦相似度满足预设相似度阈值的前提下,减小预设神经网络模型的计算量,并且对第一精度算子部分的网络输出以及第二精度算子部分的网络输出进行算子替换,提升预设神经网络模型之后的网络输出与原始网络输出之间的余弦相似度。

在一实施例中,如图5所示,步骤S408之后,也即采用预设查询方法所述第三量化网络输出中是否存在第一最小算子组合之后,还包括:

S413:在采用预设查询方法未查询到所述第一最小算子组合时,舍弃所述第三量化网络输出,并采用第二整型算子代替所述第一网络输出中激活输出低于预设激活输出阈值的算子,将替换之后的所述第一网络输出记录为第三替代算子。

其中,第二整型算子可以为INT16算子,也即16个字节且有符号整型的算子。预设激活输出阈值可以根据第一网路输出中各算子的Activation(也即各算子对应的激活输出)进行确定。

具体地,在将所述第一网络输出以及所述第四网络输出记录为第三量化网络输出之后,若采用二分法未查询到第一最小算子组合时,也即第三量化网络输出与原始网络输出中各算子组合之间余弦相似度均小于预设相似度阈值,可以理解地,也即所有第二网络输出中的Float16型算子均采用Float32代替后,仍未查询到第一最小算子组合时,则放弃步骤S306对第二网络输出中Float16算子的替换,也即舍弃第三量化网络输出;将第一网络输出中通过INT8算子表示后通过神经元处理单元计算的算子,根据各算子的Activation值且按照从大到小(或者从小到大)对各算子进行排序,将第一网络输出中Activation低于预设激活输出阈值的算子替换成INT16算子,也即将低于预设激活输出阈值的算子替换成采用INT16表示其Activation(可以理解地,原来低于预设激活输出阈值的算子是通过转换成8个字节且有符号整型进行计算,现在将低于预设激活输出阈值的算子替换成16个字节且有符号整型进行计算),并将替换之后的第一网络输出记录为第三替代算子。

进一步地,步骤S412中,不需要考虑各算子对应的weight,因为在大多数情况下采用8bit Per channel对第一精度算子的weight进行量化是可以满足要求的,因此在步骤S412中不需要将第一网络输出中各算子的weight纳入考虑范围,并且除了上述低于预设激活输出阈值的算子需要进行替换之外,第一网络输出中其它算子均不进行替换。

S414:通过所述矢量处理单元对所述第三替代算子进行计算,得到第五网络输出,并将所述第五网络输出以及所述第二网络输出记录为第五量化网络输出。

具体地,在在采用预设查询方法未查询到所述第一最小算子组合时,舍弃所述第三量化网络输出,并采用第二整型算子代替所述第一网络输出中激活输出低于预设激活输出阈值的算子,将替换之后的所述第一网络输出记录为第三替代算子之后,此时第三替代算子中包含了INT8以及第二整型算子(也即INT16算子),并且在上述实施例的说明中指出,该矢量处理单元主要支持INT8、INT16以及Float16算子,而神经元处理单元主要支持INT8以及INT4算子,因此此时应通过矢量处理单元对第三替代算子进行计算,得到第五网络输出,进而将第五网络输出以及第二网络输出记录为第五量化网络输出(由于在步骤S411中指出舍弃第三量化网络输出,也即舍弃步骤S406对第二网络输出进行的替换,因此此时应为第二网络输出与第五网络输出)。

S415:采用预设查询方法查询所述第五量化网络输出中是否存在第二最小算子组合;所述第二最小算子组合指的是第五量化网络输出中的第二最小相似度大于或等于所述预设相似度阈值的所有算子组合中算子数量最少的算子组合;所述第二最小相似度指的是第五量化网络输出中的算子组合与原始网络输出中的预设算子组合之间的余弦相似度。

S416:在采用预设查询方法查询到第二最小算子组合时,获取预设网络输出。

具体地,在将所述第五网络输出以及所述第二网络输出记录为第五量化网络输出之后,通过步骤S30中的表达式确定第五量化网络输出与原始网络输出之间的余弦相似度,可以理解地,在该表达式中,是针对于第五量化网络输出以及原始网络输出中每一算子之间的余弦相似度(例如i为2时,则是X

在本实施例中,在采用二分法为查询到第一最小算子组合时,改变对预设神经网络模型的量化处理,也即通过采用第二整型算子进行替代的方式,保证预设神经网络模型的精度,并且使得替换之后预设神经网络模型中存在满足预设相似度阈值的第二最小算子组合,并且减小了预设神经网络模型的计算量。

在一实施例中,如图6所示,步骤S415之后,也即采用预设查询方法所述第五量化网络输出中是否存在第二最小算子组合之后,还包括:

S417:在采用预设查询方法未查询到所述第二最小算子组合时,采用第二整型算子代替所述第五网络输出中的所有算子,将替代之后的第五量化网络输出记录为第四替代算子。

具体地,在所述第五网络输出以及所述第二网络输出记录为第五量化网络输出之后,若采用预设查询方法未查询到第二最小算子组合时,也即第五量化网络输出与原始网络输出中各算子组合之间余弦相似度均小于预设相似度阈值,则将第五网络输出中的所有算子均替换成第二整型算子,可以理解地,在进行步骤S412的替换之后得到的第五网络输出中包含了INT8以及INT16算子,因此此时即将剩余INT8算子全部替换成INT16算子,也即原始第五网络输出中存在8个字节且有符号整型的算子,现在将其全部替换成16个字节且有符号整型的算子,并将替代之后的第五量化网络输出记录为第四替代算子。可以理解地,第四替代算子中各算子均为INT16算子,也即各算子均为16个字节且有符号整型的算子。

S418:通过所述矢量处理单元对所述第四替代算子进行计算,得到第六网络输出,并将所述第六网络输出以及所述第二网络输出记录为第六量化网络输出。

具体地,在采用二分法未查询到所述第二最小算子组合时,采用第二整型算子代替所述第五网络输出中的所有算子,将替代之后的第五量化网络输出记录为第四替代算子之后,此时第四替代算子中各算子均为第二整型算子(也即INT15算子),因此需要通过矢量处理单元对第四替代算子进行计算,得到第六网络输出,并将第六网络输出以及第二网络输出记录为第六量化网络输出。

S419:确定所述第六量化网络输出与所述原始网络输出之间的第四余弦相似度。

S420:在所述第三余弦相似度小于所述预设相似度阈值时,采用浮点算子代替所述第二网络输出中计算量低于第二预设计算量的算子,将替代之后的所述第二网络输出记录为所述第二替代算子。

具体地,在将第六网络输出以及第二网络输出记录为第六量化网络输出之后,确定所述第六量化网络输出与所述原始网络输出之间的第四余弦相似度;检测第四余弦相似度是否大于或等于预设相似度阈值,在第四余弦相似度小于所述预设相似度阈值时,将第二网络输出中通过Float16算子表示后通过矢量处理单元计算的算子按照计算量从小到大排序,亦或者从大到小排序(可以理解地,在上述说明中第二网络输出均是通过Float16算子表示第二精度算子后通过矢量处理单元进行计算的),进而将第二网络输出中计算量低于第二预设计算量的算子替换成浮点算子(优选为Float32算子),也即将低于第二预设计算量的算子替换成采用Float32进行表示(可以理解地,原来第二网输出中的第二精度算子是通过转换成16位浮点型形式后通过矢量处理单元进行计算的,现在将低于第二预设计算量的算子替换成32位浮点型形式后通过矢量处理单元进行计算),并将替换之后的第二网络输出记录为第二替代算子。

S421:通过所述特殊处理单元对所述第二替代算子进行计算,得到第四网络输出,并将所述第六网络输出以及所述第四网络输出记录为第七量化网络输出。

具体地,在所述第一余弦相似度小于所述预设相似度阈值时,采用浮点算子代替所述第二网络输出中计算量低于第二预设计算量的算子,将替换之后的所述第二网络输出记录为第二替代算子之后,第二替代算子中包括Float16以及Float32算子,而矢量处理单元并不支持处理Float32算子,因此需要采用特殊处理单元对第二替代算子进行计算,得到与第二替代算子对应的第四网络输出,并将第四网络输出以及第六网络输出记录为第七量化网络输出(由于此时仅对第二网络输出的算子进行量化,因此第六网络输出并没有产生变化)。

S422:采用预设查询方法查询所述第七量化网络输出中是否存在第三最小算子组合;所述第三最小算子组合指的是第七量化网络输出中的第三最小相似度大于或等于所述预设相似度阈值的所有算子组合中算子数量最少的算子组合;所述第三最小相似度指的是第七量化网络输出中的算子组合与原始网络输出中的预设算子组合之间的余弦相似度。

S423:在采用预设查询方法查询到第三最小算子组合时,获取预设网络输出。

具体地,在将第四网络输出以及第六网络输出记录为第七量化网络输出之后,通过步骤S30中的表达式确定第三量化网络输出与原始网络输出之间的余弦相似度,可以理解地,在该表达式中,是针对于第七量化网络输出以及原始网络输出中每一算子之间的余弦相似度(例如i为2时,则是X

在本实施例中,在采用预设查询方法为查询到第二最小算子组合时,通过将采用INT8算子表示的所有第一精度算子,替换为采用IN16算子表示,以提高预设网络输出与原始网络输出之间的余弦相似度,使其满足预设相似度阈值的要求,从而在满足余弦相似度要求的前提下,减小预设神经网络模型的计算量。

在另一实施例中,步骤S422之后,也即采用预设查询方法所述第七量化网络输出中是否存在第三最小算子组合之后,还包括:

在采用预设查询方法未查询到所述第三最小算子组合时,提示所述预设神经网络模型训练出现错误。

具体地,在将第四网络输出以及第六网络输出记录为第七量化网络输出之后,若采用预设查询方法未查询到第三最小算子组合,则表征当前预设神经网络模型训练出现错误,无法对其继续进行量化,否则会导致不满足余弦相似度的同时,与精度要求偏离较大,此时提示预设神经网络模型训练出现错误。

在另一具体实施方式中,步骤S50之后,也即将所述预设神经网络模型记录为图像处理模型,还包括:

对图像处理模型进行精度检测,在确定图像处理模型不满足预设精度要求时,提示相关人员对其进行手动调参处理。

其中,预设精度要求根据具体应用场景以及具体地预设神经网络模型的计算要求进行设定。

具体地,在所述损失值未达到预设收敛条件时,迭代更新所述预设神经网络模型的初始参数,直至所述损失值达到预设收敛条件时,将所述预设神经网络模型记录为图像处理模型之后,此时表征该图像处理模型的预设网络输出与原始网络输出之间的余弦相似度达到预设相似度阈值的前提下,减少了预设神经网络模型的计算量,但是不一定是最优的量化结果。其中,不一定是最优的量化结果可能表现在如下两个方面:

第一个方面:图像处理模型可能不满足预设精度要求。

针对第一个方面,可以通过手动将图像处理模型中,可能引起精度下降的算子标注为第二精度算子,例如将INT8算子替换成INT16算子。

第二个方面:图像处理模型利用率没有达到预设利用率要求,需要继续减少图像处理模型的计算量。

针对第二个方面,可以通过手动将图像处理模型中,密集型算子标注为低精度算子。

在本发明中,通过采用对称量化以及基于混合精度的量化处理方式,并且结合手动调参的方式,与现有技术中通过全空间搜索每个算子的量化比特数的方法相比,本发明可以在较短的时间内,快速量化出计算量较少,并且可以保证预设神经网络模型的精度与原始网络输出的精度相差较小,同时减少预设神经网络模型的计算量,以及减小预设神经网络模型的参数,从而提高了预设神经网络模型的计算速率。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在一实施例中,提供一种智能芯片,包括存储模块、处理模块以及存储在所述存储模块中并可在所述处理模块上运行的图像处理模型,所述图像处理模型是根据上述图像处理模型训练方法得到的;所述处理模块用于通过所述图像处理模型执行上述图像处理方法。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储上述图像模型训练方法或者图像处理方法所使用到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图像模型训练方法或者图像处理方法。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中的图像模型训练方法,或者处理器执行计算机程序时实现上述实施例中的图像处理方法。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中图像模型训练方法,或者计算机程序被处理器执行时实现上述实施例中图像处理方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

相关技术
  • 图像模型训练、图像处理方法、芯片、设备及介质
  • 图像处理模型训练方法、图像处理方法、设备及存储介质
技术分类

06120112268293