CN115705482A - 模型量化方法、装置、计算机设备及存储介质 - Google Patents
模型量化方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115705482A CN115705482A CN202110817137.6A CN202110817137A CN115705482A CN 115705482 A CN115705482 A CN 115705482A CN 202110817137 A CN202110817137 A CN 202110817137A CN 115705482 A CN115705482 A CN 115705482A
- Authority
- CN
- China
- Prior art keywords
- operator
- range
- quantization
- input range
- quantization parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/776—Validation; Performance evaluation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/148—Segmentation of character regions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
- G06V40/162—Detection; Localisation; Normalisation using pixel segmentation or colour matching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例公开了一种模型量化方法、装置、计算机设备及存储介质,属于计算机技术领域。该方法包括:获取第一模型,第一模型包括多个第一算子、拼接层和第二算子;确定多个第一算子和第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数;基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理,保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种模型量化方法、装置、计算机设备及存储介质。
背景技术
随着人工智能技术的不断发展,各种神经网络模型的应用也越来越广泛。为了提高神经网络模型的处理效率,通常将神经网络模型中各种网络层的网络参数进行量化,这样量化后的网络层就能直接处理整型数据。
相关技术中,考虑到输入至拼接层的多个数据需要范围相同,而量化后的各个网络层输出的整型数据的范围可能不同,因此不对拼接层的网络参数进行量化,而是先将输入至拼接层的多个整型数据转换成浮点型数据,然后基于拼接层对转换得到的多个浮点型数据进行拼接,再将拼接得到的数据从浮点型数据转换成整型数据。但是,仍然无法实现对拼接层的网络参数进行量化,因此亟需提供一种对模型中的拼接层的网络参数进行量化的方法。
发明内容
本申请实施例提供了一种模型量化方法、装置、计算机设备及存储介质,能够对模型中的拼接层的网络参数进行量化。所述技术方案如下:
一方面,提供了一种模型量化方法,所述方法包括:
获取第一模型,所述第一模型包括多个第一算子、拼接层和第二算子,所述第一算子的输出为所述拼接层的输入,所述拼接层的输出为所述第二算子的输入;
确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,所述目标输出范围对应的量化参数用于将任一数据量化至所述目标输出范围;
基于所述目标输出范围对应的量化参数,对所述拼接层中的网络参数进行量化处理。
可选地,所述基于所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新所述第二算子的量化参数,包括:
对所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到所述第二算子的第二输入范围;
基于所述第二算子的第二输入范围以及所述目标输出范围,更新所述第二算子的量化参数,以使更新后的量化参数能够将所述第二输入范围的数据量化至所述目标输出范围。
可选地,所述确定多个所述第一算子和所述第二算子中的每个算子的输入范围,包括:
获取所述拼接层的关联信息,所述关联信息指示位于所述拼接层之前的所述第一算子以及位于所述拼接层之后的多个所述第二算子;
根据所述关联信息,确定多个所述第一算子和所述第二算子;
确定多个所述第一算子的输入范围,以及所述第二算子的输入范围。
可选地,所述获取第一模型,包括:
获取第二模型,所述第二模型包括按顺序连接的多个网络层,所述多个网络层至少包括所述拼接层以及多个第一网络层,所述第一网络层是与所述拼接层连接的、位于所述拼接层之前的网络层;
在所述拼接层与每个第一网络层之间插入所述第一算子,在所述拼接层的后面插入所述第二算子,得到所述第一模型。
另一方面,提供了一种模型量化装置,所述装置包括:
模型获取模块,用于获取第一模型,所述第一模型包括多个第一算子、拼接层和第二算子,所述第一算子的输出为所述拼接层的输入,所述拼接层的输出为所述第二算子的输入;
参数更新模块,用于确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,所述目标输出范围对应的量化参数用于将任一数据量化至所述目标输出范围;
量化处理模块,用于基于所述目标输出范围对应的量化参数,对所述拼接层中的网络参数进行量化处理。
可选地,所述参数更新模块,包括:
第一参数更新单元,用于基于每个所述第一算子的输入范围、所述第二算子的输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数;
第二参数更新单元,用于基于所述第二算子的输入范围以及所述目标输出范围,更新所述第二算子的量化参数,以使每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
可选地,所述参数更新模块,包括:
范围确定单元,用于对于多个轮次中的每个轮次,确定每个所述算子在所述轮次的输入范围;
第三参数更新单元,用于基于每个所述算子在所述轮次的输入范围、所述轮次的上一个轮次的输入范围以及所述目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数。
可选地,所述范围确定单元,用于通过调用所述第一模型对所述轮次对应的多个测试数据进行处理,确定每个所述算子在所述轮次的输入范围,每个轮次对应的多个测试数据不同。
可选地,所述第三参数更新单元,用于:
基于每个所述第一算子在所述轮次的输入范围和所述上一个轮次的输入范围、所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新每个所述第一算子的量化参数;
基于所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新所述第二算子的量化参数,直至每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
可选地,所述第三参数更新单元,用于:
对每个所述第一算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到每个所述第一算子的第一输入范围;
对所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到所述第二算子的第二输入范围;
基于每个所述第一算子的第一输入范围、所述第二输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数。
可选地,所述第三参数更新单元,用于:
确定每个所述第一算子对应的第一权重参数,以及所述第二算子对应的第二权重参数,所述第一权重参数与更新所述量化参数的次数负相关,所述第二权重参数与所述次数正相关;
基于所述第一权重参数和所述第二权重参数,对每个所述第一算子的第一输入范围以及所述第二输入范围进行加权处理,得到每个所述第一算子的目标输入范围;
基于每个所述第一算子的目标输入范围与所述目标输出范围,更新每个所述第一算子的量化参数,以使更新后的量化参数能够将所述目标输入范围的数据量化至所述目标输出范围。
可选地,所述第三参数更新单元,用于:
对于每个第一算子,基于所述第一算子的第一权重参数和所述第二权重参数,对所述第一算子的第一输入范围中的最小值以及所述第二输入范围中的最小值进行加权处理,得到目标最小值;
基于所述第一权重参数和所述第二权重参数,对所述第一输入范围中的最大值以及所述第二输入范围中的最大值进行加权处理,得到目标最大值;
将所述目标最小值至所述目标最大值之间的范围,确定为所述第一算子的目标输入范围。
可选地,所述第一算子包括第一量化参数,所述第三参数更新单元,用于:
对于每个所述第一算子,确定所述第一算子的目标输入范围中的最大值与最小值之间的第一差值;
确定所述目标输出范围中的最大值与最小值之间的第二差值;
将所述第一差值与所述第二差值之间的比值,确定为所述第一算子的更新后的第一量化参数,所述第一量化参数指示对数据的缩放倍数。
可选地,所述第一算子还包括第二量化参数,所述第三参数更新单元,用于:
将所述目标输入范围中的最小值与所述更新后的第一量化参数之间的比值取整,得到参考最小值;
将所述目标输出范围中的最小值与所述参考最小值之间的差值,确定为所述第一算子的更新后的第二量化参数,所述第二量化参数指示对数据的位移幅度。
可选地,所述第三参数更新单元,用于:
对所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到所述第二算子的第二输入范围;
基于所述第二算子的第二输入范围以及所述目标输出范围,更新所述第二算子的量化参数,以使更新后的量化参数能够将所述第二输入范围的数据量化至所述目标输出范围。
可选地,所述参数更新模块,包括:
范围确定单元,用于关闭所述第一模型中的每个所述第一算子和所述第二算子,将所述拼接层的多个输入范围分别确定为对应的第一算子的第三输入范围,将所述拼接层的输出范围确定为所述第二算子的第三输入范围;
第三参数更新单元,用于基于每个所述第一算子的第三输入范围、所述第二算子的第三输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数和所述第二算子的量化参数;
所述范围确定单元,还用于打开所述第一模型中的每个所述第一算子和所述第二算子,确定每个所述第一算子和所述第二算子的第四输入范围;
所述第三参数更新单元,用于基于每个所述第一算子的第四输入范围、所述第二算子的第四输入范围以及所述目标输出范围,继续更新每个所述第一算子的量化参数和所述第二算子的量化参数,以使每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
可选地,所述第一算子包括第一量化算子和第一反量化算子,所述装置还包括:
算子调整模块,用于将每个所述第一算子中的第一反量化算子删除,将所述第二算子中的第二量化算子删除。
可选地,所述参数更新模块,包括:
范围确定单元,用于获取所述拼接层的关联信息,所述关联信息指示位于所述拼接层之前的所述第一算子以及位于所述拼接层之后的多个所述第二算子;
所述范围确定单元,用于根据所述关联信息,确定多个所述第一算子和所述第二算子;
所述范围确定单元,用于确定多个所述第一算子的输入范围,以及所述第二算子的输入范围。
可选地,所述模型获取模块,包括:
模型获取单元,用于获取第二模型,所述第二模型包括按顺序连接的多个网络层,所述多个网络层至少包括所述拼接层以及多个第一网络层,所述第一网络层是与所述拼接层连接的、位于所述拼接层之前的网络层;
算子插入单元,用于在所述拼接层与每个第一网络层之间插入所述第一算子,在所述拼接层的后面插入所述第二算子,得到所述第一模型。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行以实现如上述方面所述的模型量化方法中所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如上述方面所述的模型量化方法中所执行的操作。
另一方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机程序代码,所述计算机程序代码存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取所述计算机程序代码,处理器执行所述计算机程序代码,使得所述计算机设备实现如上述方面所述的模型量化方法中所执行的操作。
本申请实施例提供的方法、装置、计算机设备及存储介质,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图。
图2是本申请实施例提供的一种模型量化方法的流程图。
图3是本申请实施例提供的一种模型量化方法的流程图。
图4是本申请实施例提供的一种算子插入方法的示意图。
图5是本申请实施例提供的另一种算子插入方法的示意图。
图6是本申请实施例提供的一种模型量化方法的流程图。
图7是本申请实施例提供的另一种模型量化方法的流程图。
图8是本申请实施例提供的另一种模型量化方法的流程图。
图9是本申请实施例提供的一种模型量化装置的结构示意图。
图10是本申请实施例提供的另一种模型量化装置的结构示意图。
图11是本申请实施例提供的一种终端的结构示意图。
图12是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一算子称为第二算子,且类似地,可将第二算子称为第一算子。
其中,至少一个是指一个或者一个以上,例如,至少一个算子可以是一个算子、两个算子、三个算子等任一大于等于一的整数个算子。多个是指两个或者两个以上,例如,多个算子可以是两个算子、三个算子等任一大于等于二的整数个算子。每个是指至少一个中的每一个,例如,每个算子是指多个算子中的每一个算子,若多个算子为3个算子,则每个算子是指3个算子中的每一个算子。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、示教学习等技术。
以下将基于人工智能技术,对本申请实施例提供的模型量化方法进行说明。
本申请实施例提供了一种模型量化方法,执行主体为计算机设备,计算机设备能够对第一模型中的拼接层进行量化处理,以使拼接层能够直接对相同范围的数据进行处理。可选地,该计算机设备为终端,例如终端为手机、台式电脑、笔记本电脑、平板电脑、智能电视、智能音箱、车载终端、智能机器人或者智能手表等多种类型的终端。可选地,该计算机设备为服务器,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一种可能实现方式中,本申请实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备能够组成区块链系统。
在一种可能实现方式中,本申请实施例中的计算机设备是区块链系统中的节点,该节点能够将量化后的第一模型存储在区块链中,之后该节点或者该区块链中的其他设备对应的节点可从区块链中获取该量化后的第一模型。
在一种可能实现方式中,如图1所示,本申请实施例的实施环境中包括服务器101和终端102,服务器101和终端102之间通过无线或者有线的方式建立通信连接。其中,服务器101训练第一模型,对第一模型中的拼接层以及其他网络层进行量化,得到量化后的第一模型。由于通过对第一模型进行量化能够减小第一模型的规模,降低了部署该第一模型的设备的配置要求。因此服务器101可以将量化后的第一模型发送给终端102,由终端102部署该量化后的第一模型,并基于量化后的第一模型进行处理。例如,第一模型为图像分割模型,则终端102能够调用该量化后的第一模型对任一图像进行分割,得到分割结果。
图2是本申请实施例提供的一种模型量化方法的流程图。本申请实施例的执行主体为计算机设备,可选地,该计算机设备为上述图1中的终端或者服务器。参见图2,该方法包括:
201、计算机设备获取第一模型。
第一模型包括多个第一算子、拼接层和第二算子,第一算子的输出为拼接层的输入,拼接层的输出为第二算子的输入。也即是,该第一模型中的拼接层的前面分别连接有多个第一算子,该拼接层的后面连接有第二算子。其中,拼接层用于对输入的多个数据进行拼接。
202、计算机设备确定多个第一算子和第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数。
算子的输入范围是指算子的输入数据所属的数值范围。本申请实施例中,目标输出范围是期望算子的输出数据所属的数值范围,由于第一算子的输出是拼接层的输入,因此该目标输出范围还可以理解为是期望拼接层的输入数据所属的数值范围。目标输出范围对应的量化参数用于将任一数据量化至目标输出范围,也即是基于该量化参数对任一数据进行量化处理,所得到的数据属于该目标输出范围。
本申请实施例中,计算机设备确定每个算子的输入范围以及该目标输出范围后,基于每个算子的输入范围以及该目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数。由于输出范围对应的量化参数用于将任一数据量化至目标输出范围,因此每个算子的量化参数收敛于该目标输出范围对应的量化参数,相当于通过更新每个算子的量化参数,使每个算子的输出数据均属于该目标输出范围,也即是使拼接层的多个输入数据均属于该目标输出范围。
203、计算机设备基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理。
计算机设备通过更新每个算子的量化参数,使每个算子的量化参数收敛于目标输出范围对应的量化参数之后,基于该目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理,也即是基于该量化参数将拼接层的网络参数量化至该目标输出范围。
由于通过执行上述步骤202能够使拼接层的多个输入数据均属于目标输出范围,通过执行该步骤203能够使拼接层中的网络参数量化至该目标输出范围,因此拼接层所处理的数据均为该目标输出范围,从而实现对该拼接层进行量化。
本申请实施例提供的方法,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
图3是本申请实施例提供的一种模型量化方法的流程图。本申请实施例的执行主体为计算机设备,可选地,该计算机设备为上述图1中的终端或者服务器。参见图3,该方法包括:
301、计算机设备获取第一模型。
第一模型包括多个第一算子、拼接层和第二算子,第一算子的输出为拼接层的输入,拼接层的输出为第二算子的输入。其中,拼接层用于对输入的多个数据进行拼接。可选地,该拼接层为Concat(连接)算子。该第一模型为任意类型的神经网络模型,仅需保证该第一模型包括拼接层即可。例如该第一模型为语音识别模型、图像分割模型、图像分类模型或者人脸识别模型等,本申请实施例对此不做限定。
在一种可能实现方式中,计算机设备获取第二模型,该第二模型包括按顺序连接的多个网络层,多个网络层至少包括拼接层以及多个第一网络层,第一网络层是与拼接层连接的、位于拼接层之前的网络层。计算机设备在拼接层与每个第一网络层之间插入第一算子,在拼接层的后面插入第二算子,得到该第一模型。其中,该第一网络层为任意类型的网络层,例如卷积层或者池化层等。
计算机设备为拼接层添加对应的第一算子后,原来能够直接输入至该拼接层的输入数据,现在需要先经过一个第一算子进行处理,才能输入至该拼接层。计算机设备为拼接层添加对应的第二算子后,原来能够直接对该拼接层的输出数据进行后续的处理,现在需要先将拼接层的输出数据经过第二算子进行处理,才能继续进行后续的处理。
以第一算子和第二算子为伪量化算子为例,图4是本申请实施例提供的一种算子插入方法的示意图,参见图4,第一网络层401与拼接层403之间插入伪量化算子402,拼接层的后面插入伪量化算子404。每个伪量化算子包括量化算子和反量化算子,量化算子用于进行量化处理,反量化算子用于进行反量化处理。每个伪量化算子还对应有范围统计功能,伪量化算子的范围统计功能用于确定该伪量化算子的输入范围。
图5是本申请实施例提供的另一种算子插入方法的示意图,参见图5,第二模型包括卷积层501、卷积层502、卷积层503和拼接层504,且拼接层504分别与卷积层501、卷积层502和卷积层503连接。则计算机设备在卷积层501和拼接层504之间插入伪量化算子505,在卷积层502和拼接层504之间插入伪量化算子506,在卷积层503和拼接层504之间插入伪量化算子507,在拼接层504的后面连接一个伪量化算子508,得到第一模型。其中,伪量化算子505、伪量化算子506和伪量化算子507属于本申请实施例所示的第一算子,伪量化算子508属于本申请实施例所示的第二算子。
302、计算机设备对于多个轮次中的每个轮次,确定多个第一算子和第二算子中的每个算子的输入范围。
本申请实施例中,计算机设备执行多个轮次来更新算子的量化参数,对于多个轮次中的每个轮次,计算机设备确定每个算子的输入范围。其中,算子的输入范围是指算子的输入数据所属的数值范围。
在一种可能实现方式中,计算机设备通过调用第一模型对该轮次对应的多个测试数据进行处理,确定每个算子在该轮次的输入范围。其中,每个轮次对应的多个测试数据不同。该多个测试数据的类型与第一模型的类型有关,例如该第一模型为图像分割模型,则该多个测试数据可以为多个图像。
计算机设备获取该轮次对应的多个测试数据,调用该第一模型分别对该多个测试数据进行处理。对于每个算子,该算子的前面连接有其他网络层,第一模型在对某一个测试数据进行处理的过程中,该其他网络层的输出数据会输入至该算子中,则第一模型分别对该多个测试数据进行处理,会分别有多个输出数据输入至该算子,计算机设备统计输入至该算子的多个输出数据的数值,根据该多个输出数据的数值,确定该算子的输入范围。例如,计算机设备将多个输出数据的最小值至该多个输出数据的最大值之间的范围,确定为该算子的输入范围。
在另一种可能实现方式中,计算机设备获取拼接层的关联信息,关联信息指示位于拼接层之前的第一算子以及位于拼接层之后的多个第二算子,根据关联信息,确定多个第一算子和第二算子,然后计算机设备确定多个第一算子的输入范围,以及第二算子的输入范围。
为了便于确定拼接层连接有哪些算子,在插入拼接层对应的第一算子和第二算子时,计算机设备生成拼接层的关联信息,该关联信息指示位于拼接层之前的第一算子以及位于拼接层之后的多个第二算子。因此,计算机通过查询拼接层的关联信息,能够确定位于拼接层之前的多个第一算子以及与位于拼接层之后的多个第二算子,从而确定该多个第一算子的输入范围以及该第二算子的输入范围。
其中,计算机设备通过调用第一模型对多个测试数据进行处理,确定第一模型中每个算子的输入范围,将每个算子的输入范围存储下来。然后计算机设备根据关联信息查询拼接层所连接的第一算子和第二算子后,即可在已确定的多个算子的输入范围中,获取每个第一算子的输入范围以及第二算子的输入范围。
可选地,关联信息包括算子标识和多个算子指针,算子标识指示位于拼接层之后的第二算子,算子指针指示位于拼接层之前的第一算子。因此计算机设备能够根据算子标识确定第二算子,根据算子指针确定多个第一算子。
303、计算机设备基于每个第一算子在该轮次的输入范围和上一个轮次的输入范围、第二算子在该轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新每个第一算子的量化参数。
计算机设备除了确定每个算子在该轮次的输入范围,还获取每个算子在该轮次的上一个轮次的输入范围,并基于每个第一算子在该轮次的输入范围和上一个轮次的输入范围、第二算子在该轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新每个第一算子的量化参数。
由于每个轮次中所使用的测试数据不同,因此每个轮次中确定的输入范围也是不同的,在每个轮次中,计算机设备都结合本轮次的输入范围以及上一个轮次的输入范围,来更新第一算子的量化参数,相当于考虑了两个轮次中的测试数据,也即是提高了更新第一算子的量化参数所参考的信息量,有利于提高更新量化参数的准确性,也有利于提高量化参数的收敛速度。
并且,基于每个第一算子和第二算子的输入范围以及目标输出范围,来更新第一算子的量化参数,相当于将第二算子的输入范围广播给每个第一算子,从而采用第二算子的输入范围,来对第一算子的量化参数进行约束,以使第一算子和第二算子的量化参数尽快收敛于同一数值,因此能够进一步提高量化参数的收敛速度。
其中,目标输出范围是期望算子的输出数据所属的数值范围,由于第一算子的输出是拼接层的输入,因此该目标输出范围还可以理解为是期望拼接层的输入数据所属的数值范围,该目标输出范围又称为量化范围。可选地,该目标输出范围是计算机设备预先设置的,或者是由开发人员提供给计算机设备的,本申请实施例对此不做限定。
在一种可能实现方式中,算子的输出数据为整型数据,整型数据是采用二进制的方式存储的。计算机设备确定整型数据的目标存储空间,根据整型数据的存储空间,确定目标输出范围。可选地,计算机设备确定该存储空间所能存储的最小值,以及该存储空间所能存储的最大值,将该最小值至该最大值之间的范围,确定为目标输出范围。例如,在8比特的存储空间中,能够存储的最小值为-128,能够存储的最大值为127,因此目标输出范围为[-128,127]。可选地,该目标存储空间的大小是计算机设备预先设置的,或者是由开发人员提供给计算机设备的,本申请实施例对此不做限定。
在一种可能实现方式中,计算机设备对每个第一算子在该轮次的输入范围和上一个轮次的输入范围进行加权处理,得到每个第一算子的第一输入范围,对第二算子在该轮次的输入范围和上一个轮次的输入范围进行加权处理,得到第二算子的第二输入范围,因此,该第一输入范围包含了第一算子的本轮次以及上一个轮次的输入范围的信息,第二输入范围包含了第二算子的本轮次以及上一个轮次的输入范围的信息。则计算机设备基于每个第一算子的第一输入范围、第二输入范围以及目标输出范围,更新每个第一算子的量化参数,从而提高更新第一算子的量化参数所参考的信息量。
例如,计算机设备对每个第一算子在该轮次的输入范围中的最小值和上一个轮次的输入范围中的最小值进行加权处理,得到加权后的最小值,计算机设备对每个第一算子在该轮次的输入范围中的最大值和上一个轮次的输入范围中的最大值进行加权处理,得到加权后的最大值,将加权后的最小值至加权后的最大值之间的范围,确定为第一输入范围。第二输入范围的确定方式与第一输入范围的确定方式同理。
例如,计算机设备采用本轮次对应的第三权重参数以及上一个轮次对应的第四权重参数,对每个第一算子在该轮次的输入范围和上一个轮次的输入范围进行加权处理,得到每个第一算子的第一输入范围。计算机设备采用该第三权重参数以及该第四权重参数,对第二算子在该轮次的输入范围和上一个轮次的输入范围进行加权处理,得到第二算子的第二输入范围。可选地,该第三权重参数与第四权重参数的和为1,第三权重参数和第四权重参数均为0到1之间的数值。例如,第三权重参数和第四权重参数均为0.5。
在另一种可能实现方式中,上述计算机设备更新每个第一算子的量化参数,包括:确定每个第一算子对应的第一权重参数,以及第二算子对应的第二权重参数,基于第一权重参数和第二权重参数,对每个第一算子的第一输入范围以及第二输入范围进行加权处理,得到每个第一算子的目标输入范围,基于每个第一算子的目标输入范围与目标输出范围,更新每个第一算子的量化参数,以使更新后的量化参数能够将目标输入范围的数据量化至目标输出范围。
其中,第一权重参数与更新量化参数的次数负相关,第二权重参数与更新量化参数的次数正相关。更新量化参数的次数越小,该第一权重参数越大,该第二权重参数越小。更新量化参数的次数越大,该第一权重参数越小,该第二权重参数越大。可选地,该第一权重参数与第二权重参数的和为1,第一权重参数和第二权重参数均为0与1之间的数值。例如,在第一次更新量化参数时,第一权重参数为1,第二权重参数为0,在最后一次更新量化参数时,第一权重参数为0,第二权重参数为1。也即是,在更新量化参数的初期,确定目标输入范围时第一算子的第一输入范围所占的比重更大,第二算子的第二输入范围所占的比重更小,随着不断更新量化参数,逐渐减小第一算子的第一输入范围所占的比重,逐渐增大第二算子的第二输入范围所占的比重,使得在第二算子的输入范围的约束下,第一算子和第二算子的量化参数逐步收敛于同一数值。
在另一种可能实现方式中,上述计算机设备得到每个第一算子的目标输入范围,包括:对于每个第一算子,基于第一算子的第一权重参数和第二权重参数,对第一算子的第一输入范围中的最小值以及第二输入范围中的最小值进行加权处理,得到目标最小值,基于第一权重参数和第二权重参数,对第一输入范围中的最大值以及第二输入范围中的最大值进行加权处理,得到目标最大值,将目标最小值至目标最大值之间的范围,确定为第一算子的目标输入范围。
例如,计算机设备采用以下公式确定目标最小值和目标最大值:
其中,表示第一算子对应的目标最小值,xmin4表示第二算子的第二输入范围中的最小值,xmin1表示第一算子的第一输入范围中的最小值。表示第一算子对应的目标最大值,xmax4表示第二算子的第二输入范围中的最大值,xmax1表示第一算子的第一输入范围中的最大值。α表示第二权重参数,1-α表示第一权重参数,α随着更新量化参数的次数的增大而增大,α的最小值为0,α的最大值为1。
在另一种可能实现方式中,第一算子包括第一量化参数,上述计算机设备更新每个第一算子的量化参数,包括:对于每个第一算子,确定第一算子的目标输入范围中的最大值与最小值之间的第一差值,确定目标输出范围中的最大值与最小值之间的第二差值,将第一差值与第二差值之间的比值,确定为第一算子的更新后的第一量化参数。
其中,第一量化参数指示对数据的缩放倍数。本申请实施例中,第一算子包括量化算子和反量化算子,第一算子能够对任一数据进行量化和反量化,对任一数据进行量化包括将该数据缩小,从而将该数据从一个数值范围映射到另一个数值范围,对任一数据进行反量化包括将量化后的数据放大,从而将量化后的数据从该另一个数值范围映射回该数值范围。第一量化参数也即是对数据进行缩小或者放大的倍数。
例如,计算机设备采用以下公式确定第一量化参数:
其中,scale表示第一量化参数,max_val表示目标输入范围中的最大值,min_val表示目标输入范围中的最小值,qmax表示目标输出范围中的最大值,qmin表示目标输出范围中的最小值。
可选地,第一算子还包括第二量化参数,上述计算机设备更新每个第一算子的量化参数,还包括:将目标输入范围中的最小值与更新后的第一量化参数之间的比值取整,得到参考最小值,将目标输出范围中的最小值与参考最小值之间的差值,确定为第一算子的更新后的第二量化参数。
其中,第二量化参数指示对数据的位移幅度。本申请实施例中,对任一数据进行量化和反量化还包括将任一数据进行位移,从而将该数据从一个数值范围映射到另一个数值范围,也即是将数据从一个数值范围偏移至另一个数值范围。该第二量化参数也即是对数据进行偏移的幅度。
例如,计算机设备采用以下公式确定第二量化参数:
其中,zero_point表示第二量化参数,qmin表示目标输出范围中的最小值,min_val表示目标输入范围中的最小值,scale表示第一量化参数,round(·)表示取整函数。
上述第一量化参数和第二量化参数能够将目标输入范围的数据量化至目标输出范围。在一种可能实现方式中,第一算子和第二算子为伪量化算子,伪量化算子包括量化算子和反量化算子,第一量化参数和第二量化参数是量化算子与反量化参数的参数,该量化算子的表达公式如下:
其中,XF表示量化算子的输入数据,XQ表示量化算子的输出数据,scale表示第一量化参数,round(·)表示取整函数,zero_point表示第二量化参数,qmin表示目标输出范围中的最小值,qmax表示目标输出范围中的最大值。clamp(·)表示区间限定函数,用于将XQ限定在qmin和qmax之间。可选地,该XF为浮点型数据,该XQ为整型数据。
该反量化算子的表达公式如下:
XF1=(XQ-zero_point)*scale;
其中,XQ表示反量化算子的输入数据,XF1表示反量化算子的输出数据,XF1与XF之间存在量化所导致的误差。scale表示第一量化参数,zero_point表示第二量化参数。
304、计算机设备基于第二算子在轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新第二算子的量化参数,直至每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。
计算机设备除了确定每个算子在该轮次的输入范围,还获取每个算子在该轮次的上一个轮次的输入范围,并基于第二算子在该轮次的输入范围和上一个轮次的输入范围以及目标输出范围,更新第二算子的量化参数。
需要说明的是,上述步骤302-步骤304仅以一个轮次为例,来说明更新第一算子和第二算子的量化参数的过程。而本申请实施例中是通过执行多个轮次来对每个算子的量化参数进行多次更新,直至每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。该目标输出范围对应的量化参数用于将任一数据量化至目标输出范围。
在一种可能实现方式中,计算机设备更新第二算子的量化参数,包括:对第二算子在轮次的输入范围和上一个轮次的输入范围进行加权处理,得到第二算子的第二输入范围,基于第二算子的第二输入范围以及目标输出范围,更新第二算子的量化参数,以使更新后的量化参数能够将第二输入范围的数据量化至目标输出范围。
其中,计算机设备基于第二输入范围和目标输出范围更新第二算子的量化参数的过程,与上述步骤303中基于目标输入范围和目标输出范围更新第一算子的量化参数的过程同理,在此不再赘述。
通过执行上述步骤303-步骤304,计算机设备实现了基于每个算子在该轮次的输入范围、该轮次的上一个轮次的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数。除此之外,计算机设备还可以采用与上述步骤303-步骤304不同的方式,来更新量化参数,例如,计算机设备在多个第一算子中确定一个目标第一算子,基于该目标第一算子的输入范围,来约束其他第一算子以及第二算子的量化参数。
305、计算机设备基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理。
计算机设备基于目标输出范围对应的量化参数,将拼接层的网络参数量化至该目标输出范围。
在一种可能实现方式中,量化参数包括上述步骤303所示的第一量化参数和第二量化参数,计算机设备对拼接层中的网络参数进行量化处理的公式如下:
其中,XC表示拼接层的网络参数,XL表示量化后的网络参数,scale表示第一量化参数,round(·)表示取整函数,zero_point表示第二量化参数,qmin表示目标输出范围中的最小值,qmax表示目标输出范围中的最大值。clamp(·)表示区间限定函数,用于将XL限定在qmin和qmax之间。
通过执行上述步骤301-步骤305,能够使拼接层的多个输入数据均属于目标输出范围,通过执行该步骤306能够使拼接层中的网络参数也量化至该目标输出范围,因此拼接层所处理的数据均为该目标输出范围,从而实现对该拼接层进行量化。
需要说明的是,在另一实施例中,第一算子和第二算子均为伪量化算子,第一算子包括第一量化算子和第一反量化算子,第二算子包括第二量化算子和第二反量化算子,更新后的第一算子和第二算子的量化参数均为目标输出范围对应的量化参数。在执行上述步骤304之后,计算机设备将每个第一算子中的第一反量化算子删除,将第二算子中的第二量化算子删除,保留第一算子中的第一量化算子以及第二算子中的第二反量化算子。
由于更新后的第一量化算子的量化参数能够将输入数据量化至目标输出范围,第一量化算子的输出数据为拼接层的输入数据,因此拼接层的多个输入数据均属于目标输出范围。由于拼接层所拼接的是量化后的数据,因此拼接层对数据进行拼接之后,再由第二反量化算子将量化后的数据进行反量化,以便于后面的网络层对反量化后的数据进行处理,从而降低量化处理所导致的误差。
需要说明的是,计算机设备对拼接层中的网络参数进行量化处理,得到量化后的第一模型,后续计算机设备调用该量化后的第一模型对数据进行处理。由于量化后的第一模型中,拼接层的多个输入数据均属于目标输出范围,拼接层能够直接对多个属于相同范围的输入数据进行拼接,因此无需先将多个输入数据转换成浮点型数据,简化了操作过程,有利于提高模型的处理效率。
其中,量化后的第一模型可以为任意类型的模型,不同类型的第一模型能够执行不同的任务。
例如,该量化后的第一模型为图像分割模型,该图像分割模型用于将图像中的天空区域分割出来。计算机设备拍摄包括天空的天空图像,调用该图像分割模型,对该天空图像进行图像分割,得到该天空图像中的天空区域。
例如,该量化后的第一模型为人脸识别模型,该人脸识别模型用于识别图像中的人脸是否为目标人脸。计算机设备采集人脸图像,调用该人脸识别模型,对该人脸图像进行人脸识别,得到人脸识别结果,该人脸识别结果指示该人脸图像中的人脸是否为目标人脸。
例如,该量化后的第一模型为图像分类模型,该图像分类模型用于对风景图像和人物图像进行分类。计算机设备获取图像库中的待检测图像,调用该图像分类模型,对该待检测图像进行分类,得到分类结果,该分类结果指示该待检测图像为风景图像还是人物图像。
本申请实施例提供的方法,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
并且,由于每个轮次中所使用的测试数据不同,因此每个轮次中确定的输入范围也是不同的,在每个轮次中,计算机设备都结合本轮次的输入范围以及上一个轮次的输入范围,来更新算子的量化参数,相当于考虑了两个轮次中的测试数据,也即是提高了更新算子的量化参数所参考的信息量,有利于提高更新量化参数的准确性,也有利于提高量化参数的收敛速度。
并且,基于第一算子和第二算子的输入范围以及目标输出范围,来更新第一算子的量化参数,相当于将第二算子的输入范围广播给每个第一算子,从而采用第二算子的输入范围,来对第一算子的量化参数进行约束,以使第一算子和第二算子的量化参数尽快收敛于同一数值,因此能够进一步提高量化参数的收敛速度。
并且,随着不断更新量化参数,确定目标输入范围时第一算子的第一输入范围所占的比重逐渐大,第二算子的第二输入范围所占的比重逐渐小,使得在第二算子的输入范围的约束下,第一算子和第二算子的量化参数逐步收敛于同一数值。
图3的实施例说明了通过执行多个轮次来更新算子的量化参数,来量化第一模型的拼接层。除此之外,计算机设备还可以仅执行一次更新量化参数的操作,来量化第一模型的拼接层,因此无需参考其他轮次的输入范围。例如,计算机设备将上述图3的实施例中多个轮次中使用的测试数据,均用在一次更新量化参数的过程中,从而完成量化。则参见图6,图6是本申请实施例提供的一种模型量化方法的流程图,本申请实施例以第一算子为第一伪量化算子,第二算子为第二伪量化算子为例进行说明,本申请实施例的执行主体为计算机设备,该方法包括:
601、计算机设备获取第一模型。
602、计算机设备确定多个第一伪量化算子和第二伪量化算子中的每个伪量化算子的输入范围。
上述步骤601-步骤602的过程与上述步骤301-步骤302的过程同理,在此不再赘述。
603、计算机设备基于每个第一伪量化算子的输入范围、第二伪量化算子的输入范围以及目标输出范围,更新每个第一伪量化算子的量化参数。
计算机设备采用第二伪量化算子的输入范围,来对第一伪量化算子的量化参数进行约束,以使第一伪量化算子和第二伪量化算子的量化参数收敛于同一数值。
在一种可能实现方式中,确定每个第一伪量化算子对应的第一权重参数,以及第二伪量化算子对应的第二权重参数,基于第一权重参数和第二权重参数,对每个第一伪量化算子的输入范围以及第二伪量化算子的输入范围进行加权处理,得到每个第一伪量化算子的目标输入范围,基于每个第一伪量化算子的目标输入范围与目标输出范围,更新每个第一伪量化算子的量化参数,以使更新后的量化参数能够将目标输入范围的数据量化至目标输出范围。其中,根据第一伪量化算子的输入范围以及第二伪量化算子的输入范围,确定目标输入范围的过程,与上述步骤303中根据第一输入范围和第二输入范围确定目标输入范围的过程同理,在此不再赘述。根据目标输入范围与目标输出范围更新量化参数的过程,与上述步骤303中根据目标输入范围与目标输出范围更新量化参数的过程同理,在此不再赘述。
604、计算机设备基于第二伪量化算子的输入范围以及目标输出范围,更新第二伪量化算子的量化参数,以使每个第一伪量化算子和第二伪量化算子的量化参数收敛于目标输出范围对应的量化参数。
该步骤604中根据第二伪量化算子的输入范围以及目标输出范围,更新第二伪量化算子的量化参数的过程,与上述步骤304中根据第二输入范围以及目标输出范围,更新第二伪量化算子的量化参数的过程同理,在此不再赘述。
通过执行上述步骤603-步骤604,计算机设备实现了基于每个算子的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数。除此之外,计算机设备还可以采用与上述步骤603-步骤604不同的方式,来更新量化参数,例如,计算机设备在多个第一伪量化算子中确定一个目标第一伪量化算子,基于该目标第一伪量化算子的输入范围,来约束其他第一伪量化算子以及第二伪量化算子的量化参数。
605、计算机设备将每个第一伪量化算子中的第一反量化算子删除,将第二伪量化算子中的第二量化算子删除。
606、计算机设备基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理。
上述步骤605-步骤606的过程与上述步骤305的过程同理,在此不再赘述。
本申请实施例提供的方法,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
在上述图3和图6的实施例中,在打开第一模型中的第一算子和第二算子的情况下,更新第一算子和第二算子的量化参数。而在另一实施例中,为了保证确定的输入范围的准确性,还可以先关闭第一算子和第二算子执行一次更新操作,然后再打开第一算子和第二算子执行一次更新操作,如图7所示,图7是本申请实施例提供的一种模型量化方法的流程图,本申请实施例的执行主体为计算机设备,该方法包括:
701、计算机设备获取第一模型。
该步骤701的过程与上述步骤301的过程同理,在此不再赘述。
702、计算机设备关闭第一模型中的每个第一算子和第二算子,将拼接层的多个输入范围分别确定为对应的第一算子的第三输入范围,将拼接层的输出范围确定为第二算子的第三输入范围。
计算机设备关闭第一模型中的每个第一算子和第二算子,在调用第一模型对数据进行处理时,位于第一算子之前的网络层的输出数据,直接由拼接层进行处理,第一算子不对该第一算子之前的网络层的输出数据进行处理,第二算子也不对拼接层的输出数据进行处理,而是由位于第二算子之后的网络层继续对拼接层的输出数据进行处理。例如,在图5所示的第一模型中,关闭每个第一算子和第二算子,也即是关闭每个伪量化算子后,卷积层501、卷积层502和卷积层503的输出数据直接输入至拼接层504中。
计算机设备关闭第一算子和第二算子后,确定拼接层的多个输入范围以及拼接层的输出范围。由于拼接层对应有多个输入数据,该多个输入数据所属的数值范围即为拼接层的多个输入范围。该多个输入数据与多个第一算子一一对应,因此可以将拼接层的多个输入范围分别确定为对应的第一算子的第三输入范围。由于拼接层的输出数据应为第二算子的输入数据,因此可以将拼接层的输出范围确定为第二算子的第三输入范围。例如,在图5所示的第一模型中,每个卷积层的输出数据为拼接层504的输入数据,拼接层504对应有3个输入数据,卷积层501的输出数据与伪量化算子505对应,卷积层502的输出数据与伪量化算子506对应,卷积层503的输出数据与伪量化算子507对应。
在一种可能实现方式中,计算机设备获取多个测试数据,通过调用关闭第一算子和第二算子的第一模型对该多个测试数据进行处理,确定拼接层的多个输入范围以及该拼接层的输出范围。该步骤与上述步骤302中确定每个算子的输入范围的过程同理,在此不再赘述。
703、计算机设备基于每个第一算子的第三输入范围、第二算子的第三输入范围以及目标输出范围,更新每个第一算子的量化参数和第二算子的量化参数。
该步骤703的过程与上述步骤603-步骤604的过程同理,在此不再赘述。
704、计算机设备打开第一模型中的每个第一算子和第二算子,确定每个第一算子和第二算子的第四输入范围。
计算机设备在关闭第一算子和第二算子的情况下,更新第一算子和第二算子的量化参数后,再重新打开第一模型中的每个第一算子和第二算子,在调用第一模型对数据进行处理时,位于第一算子之前的网络层的输出数据,先由拼接层进行处理,然后再由拼接层对第一算子的输出数据进行处理。拼接层的输出数据先由第二算子进行处理,然后再由位于第二算子之后的网络层继续对第二算子的输出数据进行处理。计算机设备打开每个第一算子和第二算子后,重新确定每个第一算子和第二算子的第四输入范围。该步骤与上述步骤302中确定每个算子的输入范围的过程同理,在此不再赘述。
705、计算机设备基于每个第一算子的第四输入范围、第二算子的第四输入范围以及目标输出范围,继续更新每个第一算子的量化参数和第二算子的量化参数,以使每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。
该目标输出范围对应的量化参数用于将任一数据量化至目标输出范围,该步骤与上述步骤603-步骤604的过程同理,在此不再赘述。
本申请实施例中,在关闭第一算子和第二算子的情况下,第一算子和第二算子没有对数据进行处理,则在该情况下所确定的第一算子和第二算子的第三输入范围,不会受到第一算子和第二算子本身的影响,能够降低第一算子和第二算子对数据的范围所导致的误差,因此计算机设备确定的第三输入范围更加准确,进而根据该第三输入范围所更新的量化参数也更加准确,然后再打开更新量化参数后的第一算子和第二算子,使用更加准确的量化参数对数据进行处理,得到新的输入范围,从而继续更新量化参数,有利于提高整个量化参数更新过程的准确性。例如,本申请实施例中的第一算子和第二算子是伪量化算子,伪量化算子包括量化算子和反量化算子,因此第一算子和第二算子都需要先对数据进行量化然后再进行反量化,在此过程中,会产生由于量化所导致的误差,导致确定的输入范围不够准确,因此本申请实施例采用先关闭第一算子和第二算子的方式,来确定第一算子和第二算子的输入范围,能够避免量化所导致的误差,使得量化参数的更新过程更准确。
需要说明的是,本申请实施例仅以一个轮次为例进行说明,在另一实施例中,计算机设备重复执行上述步骤702-步骤705,从而执行多个轮次,对第一算子和第二算子的量化参数进行多次更新,以使每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。并且,在每个轮次中基于输入范围更新量化参数时,可以综合参考本轮次的输入范围以及上一个轮次的输入范围,详细过程与上述图3的实施例中基于两个轮次的输入范围进行更新的过程同理,在此不再赘述。
706、计算机设备基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理。
上述步骤706的过程与上述步骤305的过程同理,在此不再赘述。
本申请实施例提供的方法,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
上述实施例可应用于对包括拼接层的任意类型的第一模型进行量化。例如,第一模型为图像分割模型,图像分割模型用于对图像进行分割。图8是本申请实施例提供的一种模型量化方法的流程图,参见图8,该方法包括:
801、计算机设备获取训练完成的图像分割模型。
802、计算机设备在图像分割模型的拼接层的前面插入第一伪量化算子,在拼接层的后面插入第二伪量化算子。
803、计算机设备对于多个轮次中的每个轮次,确定多个第一伪量化算子和第二伪量化算子中的每个伪量化算子的输入范围。
计算机设备通过调用图像分割模型对多个测试数据进行处理,确定每个伪量化算子的输入范围。例如,该多个测试数据是通过摄像头拍摄的多张图像,例如每张图像中包括人物区域和背景区域,该图像分割模型对图像进行分割处理,将图像中的人物区域和背景区域分割出来。
804、计算机设备基于每个第一伪量化算子在该轮次的输入范围和上一个轮次的输入范围、第二伪量化算子在该轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新每个第一伪量化算子的量化参数。
805、计算机设备基于第二伪量化算子在该轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新第二伪量化算子的量化参数,直至每个第一伪量化算子和第二伪量化算子的量化参数收敛于目标输出范围对应的量化参数。
806、计算机设备将每个第一伪量化算子中的反量化算子删除,将第二伪量化算子中的量化算子删除,保留每个第一伪量化算子中的量化算子以及第二伪量化算子中的反量化算子。
807、计算机设备基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理,将该网络参数量化至目标输出范围,得到量化后的图像分割模型。
808、计算机设备调用该量化后的图像分割模型,执行图像分割任务。
例如,在图像分割模型用于分割图像中的人物区域的情况下,计算机设备采用摄像头拍摄包括人物的原始图像,调用量化后的图像分割模型,对该原始图像进行分割,得到仅包括人物区域的目标图像,从而实现对图像进行分割。
本申请实施例中,为了提高图像分割模型中的拼接层的运行效率,在拼接层的前面和后面插入伪量化算子,来进行量化感知训练,并将拼接层后面的第二伪量化算子的输入范围广播给拼接层前面的第一伪量化算子,从而采用第二伪量化算子的输入范围,对每个第一伪量化算子的输入范围进行一致性约束,使得每个第一伪量化算子和第二伪量化算子的量化参数相同,从而输入至拼接层的多个整型数据均属于相同的范围,无需将整型数据转换为浮点型数据,有利于提高模型的处理效率。
除此之外,第一模型还可以为人脸识别模型、图像分类模型、语音识别模型、图像去噪模型等任意类型的神经网络模型,本申请实施例对此不做限定。
为了验证本申请实施例的可行性,获取用于进行图像分割的浮点模型,该浮点模型包括至少一个拼接层,采用本申请实施例的方法,对该浮点模型进行量化,得到8比特的量化模型,调用该浮点模型和8比特的量化模型对同一批数据进行处理,处理结果如下述表1所示。
表1
模型 | 轮廓边界IOU | 整体IOU |
浮点模型 | 0.5857 | 0.8336 |
8比特的量化模型 | 0.5861 | 0.8365 |
其中,8比特的量化模型的处理速度高于浮点模型,IOU(Intersection overUnion,重叠度)是一种测量准确度的一个标准。从表1中能够看出,8比特的量化模型的准确度高于浮点模型的准确度。
图9是本申请实施例提供的一种模型量化装置的结构示意图。参见图9,该装置包括:
模型获取模块901,用于获取第一模型,第一模型包括多个第一算子、拼接层和第二算子,第一算子的输出为拼接层的输入,拼接层的输出为第二算子的输入;
参数更新模块902,用于确定多个第一算子和第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数,目标输出范围对应的量化参数用于将任一数据量化至目标输出范围;
量化处理模块903,用于基于目标输出范围对应的量化参数,对拼接层中的网络参数进行量化处理。
本申请实施例提供的模型量化装置,通过每个算子的输入范围和目标输出范围,来更新每个算子的量化参数,以使每个算子的量化参数均收敛于目标输出范围对应的量化参数,从而利用目标输出范围将多个算子的输出范围进行一致性约束,使得每个算子的输出范围保持一致,相当于保证了拼接层的多个输入范围以及网络参数的范围都相同,从而完成了对拼接层的量化。
可选地,参见图10,参数更新模块902,包括:
第一参数更新单元912,用于基于每个第一算子的输入范围、第二算子的输入范围以及目标输出范围,更新每个第一算子的量化参数;
第二参数更新单元922,用于基于第二算子的输入范围以及目标输出范围,更新第二算子的量化参数,以使每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。
可选地,参见图10,参数更新模块902,包括:
范围确定单元932,用于对于多个轮次中的每个轮次,确定每个算子在轮次的输入范围;
第三参数更新单元942,用于基于每个算子在轮次的输入范围、轮次的上一个轮次的输入范围以及目标输出范围,更新每个算子的量化参数,以使每个算子的量化参数收敛于目标输出范围对应的量化参数。
可选地,参见图10,范围确定单元932,用于通过调用第一模型对轮次对应的多个测试数据进行处理,确定每个算子在轮次的输入范围,每个轮次对应的多个测试数据不同。
可选地,参见图10,第三参数更新单元942,用于:
基于每个第一算子在轮次的输入范围和上一个轮次的输入范围、第二算子在轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新每个第一算子的量化参数;
基于第二算子在轮次的输入范围和上一个轮次的输入范围、以及目标输出范围,更新第二算子的量化参数,直至每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。
可选地,参见图10,第三参数更新单元942,用于:
对每个第一算子在轮次的输入范围和上一个轮次的输入范围进行加权处理,得到每个第一算子的第一输入范围;
对第二算子在轮次的输入范围和上一个轮次的输入范围进行加权处理,得到第二算子的第二输入范围;
基于每个第一算子的第一输入范围、第二输入范围以及目标输出范围,更新每个第一算子的量化参数。
可选地,参见图10,第三参数更新单元942,用于:
确定每个第一算子对应的第一权重参数,以及第二算子对应的第二权重参数,第一权重参数与更新量化参数的次数负相关,第二权重参数与次数正相关;
基于第一权重参数和第二权重参数,对每个第一算子的第一输入范围以及第二输入范围进行加权处理,得到每个第一算子的目标输入范围;
基于每个第一算子的目标输入范围与目标输出范围,更新每个第一算子的量化参数,以使更新后的量化参数能够将目标输入范围的数据量化至目标输出范围。
可选地,参见图10,第三参数更新单元942,用于:
对于每个第一算子,基于第一算子的第一权重参数和第二权重参数,对第一算子的第一输入范围中的最小值以及第二输入范围中的最小值进行加权处理,得到目标最小值;
基于第一权重参数和第二权重参数,对第一输入范围中的最大值以及第二输入范围中的最大值进行加权处理,得到目标最大值;
将目标最小值至目标最大值之间的范围,确定为第一算子的目标输入范围。
可选地,参见图10,第一算子包括第一量化参数,第三参数更新单元942,用于:
对于每个第一算子,确定第一算子的目标输入范围中的最大值与最小值之间的第一差值;
确定目标输出范围中的最大值与最小值之间的第二差值;
将第一差值与第二差值之间的比值,确定为第一算子的更新后的第一量化参数,第一量化参数指示对数据的缩放倍数。
可选地,参见图10,第一算子还包括第二量化参数,第三参数更新单元942,用于:
将目标输入范围中的最小值与更新后的第一量化参数之间的比值取整,得到参考最小值;
将目标输出范围中的最小值与参考最小值之间的差值,确定为第一算子的更新后的第二量化参数,第二量化参数指示对数据的位移幅度。
可选地,参见图10,第三参数更新单元942,用于:
对第二算子在轮次的输入范围和上一个轮次的输入范围进行加权处理,得到第二算子的第二输入范围;
基于第二算子的第二输入范围以及目标输出范围,更新第二算子的量化参数,以使更新后的量化参数能够将第二输入范围的数据量化至目标输出范围。
可选地,参见图10,参数更新模块902,包括:
范围确定单元932,用于关闭第一模型中的每个第一算子和第二算子,将拼接层的多个输入范围分别确定为对应的第一算子的第三输入范围,将拼接层的输出范围确定为第二算子的第三输入范围;
第三参数更新单元942,用于基于每个第一算子的第三输入范围、第二算子的第三输入范围以及目标输出范围,更新每个第一算子的量化参数和第二算子的量化参数;
范围确定单元932,还用于打开第一模型中的每个第一算子和第二算子,确定每个第一算子和第二算子的第四输入范围;
第三参数更新单元942,用于基于每个第一算子的第四输入范围、第二算子的第四输入范围以及目标输出范围,继续更新每个第一算子的量化参数和第二算子的量化参数,以使每个第一算子和第二算子的量化参数收敛于目标输出范围对应的量化参数。
可选地,参见图10,第一算子包括第一量化算子和第一反量化算子,装置还包括:
算子调整模块904,用于将每个第一算子中的第一反量化算子删除,将第二算子中的第二量化算子删除。
可选地,参见图10,参数更新模块902,包括:
范围确定单元932,用于获取拼接层的关联信息,关联信息指示位于拼接层之前的第一算子以及位于拼接层之后的多个第二算子;
范围确定单元932,还用于根据关联信息,确定多个第一算子和第二算子;
范围确定单元932,还用于确定多个第一算子的输入范围,以及第二算子的输入范围。
可选地,参见图10,模型获取模块901,包括:
模型获取单元911,用于获取第二模型,第二模型包括按顺序连接的多个网络层,多个网络层至少包括拼接层以及多个第一网络层,第一网络层是与拼接层连接的、位于拼接层之前的网络层;
算子插入单元921,用于在拼接层与每个第一网络层之间插入第一算子,在拼接层的后面插入第二算子,得到第一模型。
需要说明的是:上述实施例提供的模型量化装置在量化模型时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的模型量化装置与模型量化方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的模型量化方法中所执行的操作。
可选地,该计算机设备提供为终端。图11示出了本申请一个示例性实施例提供的终端1100的结构示意图。
终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以集成有GPU(Graphics Processing Unit,图像处理的交互器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一条计算机程序,该至少一条计算机程序用于被处理器1101所具有以实现本申请中方法实施例提供的模型量化方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。可选地,外围设备包括:射频电路1104、显示屏1105、摄像头组件1106和音频电路1107中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置在终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在另一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。前置摄像头设置在终端1100的前面板,后置摄像头设置在终端1100的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
可选地,该计算机设备提供为服务器。图12是本申请实施例提供的一种服务器的结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1201和一个或一个以上的存储器1202,其中,所述存储器1202中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器1201加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的模型量化方法中所执行的操作。
本申请实施例还提供了一种计算机程序产品或计算机程序,计算机程序产品或计算机程序包括计算机程序代码,计算机程序代码存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取计算机程序代码,处理器执行计算机程序代码,使得计算机设备实现如上述实施例的模型量化方法中所执行的操作。在一些实施例中,本申请实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种模型量化方法,其特征在于,所述方法包括:
获取第一模型,所述第一模型包括多个第一算子、拼接层和第二算子,所述第一算子的输出为所述拼接层的输入,所述拼接层的输出为所述第二算子的输入;
确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,所述目标输出范围对应的量化参数用于将任一数据量化至所述目标输出范围;
基于所述目标输出范围对应的量化参数,对所述拼接层中的网络参数进行量化处理。
2.根据权利要求1所述的方法,其特征在于,所述基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,包括:
基于每个所述第一算子的输入范围、所述第二算子的输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数;
基于所述第二算子的输入范围以及所述目标输出范围,更新所述第二算子的量化参数,以使每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
3.根据权利要求1所述的方法,其特征在于,所述确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,包括:
对于多个轮次中的每个轮次,确定每个所述算子在所述轮次的输入范围;
基于每个所述算子在所述轮次的输入范围、所述轮次的上一个轮次的输入范围以及所述目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数。
4.根据权利要求3所述的方法,其特征在于,所述确定每个所述算子在所述轮次的输入范围,包括:
通过调用所述第一模型对所述轮次对应的多个测试数据进行处理,确定每个所述算子在所述轮次的输入范围,每个轮次对应的多个测试数据不同。
5.根据权利要求3所述的方法,其特征在于,所述基于每个所述算子在所述轮次的输入范围、所述轮次的上一个轮次的输入范围以及所述目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,包括:
基于每个所述第一算子在所述轮次的输入范围和所述上一个轮次的输入范围、所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新每个所述第一算子的量化参数;
基于所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新所述第二算子的量化参数,直至每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
6.根据权利要求5所述的方法,其特征在于,所述基于每个所述第一算子在所述轮次的输入范围和所述上一个轮次的输入范围、所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围、以及所述目标输出范围,更新每个所述第一算子的量化参数,包括:
对每个所述第一算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到每个所述第一算子的第一输入范围;
对所述第二算子在所述轮次的输入范围和所述上一个轮次的输入范围进行加权处理,得到所述第二算子的第二输入范围;
基于每个所述第一算子的第一输入范围、所述第二输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数。
7.根据权利要求6所述的方法,其特征在于,所述基于每个所述第一算子的第一输入范围、所述第二输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数,包括:
确定每个所述第一算子对应的第一权重参数,以及所述第二算子对应的第二权重参数,所述第一权重参数与更新所述量化参数的次数负相关,所述第二权重参数与所述次数正相关;
基于所述第一权重参数和所述第二权重参数,对每个所述第一算子的第一输入范围以及所述第二输入范围进行加权处理,得到每个所述第一算子的目标输入范围;
基于每个所述第一算子的目标输入范围与所述目标输出范围,更新每个所述第一算子的量化参数,以使更新后的量化参数能够将所述目标输入范围的数据量化至所述目标输出范围。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一权重参数和所述第二权重参数,对每个所述第一算子的第一输入范围以及所述第二输入范围进行加权处理,得到每个所述第一算子的目标输入范围,包括:
对于每个第一算子,基于所述第一算子的第一权重参数和所述第二权重参数,对所述第一算子的第一输入范围中的最小值以及所述第二输入范围中的最小值进行加权处理,得到目标最小值;
基于所述第一权重参数和所述第二权重参数,对所述第一输入范围中的最大值以及所述第二输入范围中的最大值进行加权处理,得到目标最大值;
将所述目标最小值至所述目标最大值之间的范围,确定为所述第一算子的目标输入范围。
9.根据权利要求7所述的方法,其特征在于,所述第一算子包括第一量化参数,所述基于每个所述第一算子的目标输入范围与所述目标输出范围,更新每个所述第一算子的量化参数,以使更新后的量化参数能够将所述目标输入范围的数据量化至所述目标输出范围,包括:
对于每个所述第一算子,确定所述第一算子的目标输入范围中的最大值与最小值之间的第一差值;
确定所述目标输出范围中的最大值与最小值之间的第二差值;
将所述第一差值与所述第二差值之间的比值,确定为所述第一算子的更新后的第一量化参数,所述第一量化参数指示对数据的缩放倍数。
10.根据权利要求9所述的方法,其特征在于,所述第一算子还包括第二量化参数,所述基于每个所述第一算子的目标输入范围与所述目标输出范围,更新每个所述第一算子的量化参数,以使更新后的量化参数能够将所述目标输入范围的数据量化至所述目标输出范围,包括:
将所述目标输入范围中的最小值与所述更新后的第一量化参数之间的比值取整,得到参考最小值;
将所述目标输出范围中的最小值与所述参考最小值之间的差值,确定为所述第一算子的更新后的第二量化参数,所述第二量化参数指示对数据的位移幅度。
11.根据权利要求1所述的方法,其特征在于,所述确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,包括:
关闭所述第一模型中的每个所述第一算子和所述第二算子,将所述拼接层的多个输入范围分别确定为对应的第一算子的第三输入范围,将所述拼接层的输出范围确定为所述第二算子的第三输入范围;
基于每个所述第一算子的第三输入范围、所述第二算子的第三输入范围以及所述目标输出范围,更新每个所述第一算子的量化参数和所述第二算子的量化参数;
打开所述第一模型中的每个所述第一算子和所述第二算子,确定每个所述第一算子和所述第二算子的第四输入范围;
基于每个所述第一算子的第四输入范围、所述第二算子的第四输入范围以及所述目标输出范围,继续更新每个所述第一算子的量化参数和所述第二算子的量化参数,以使每个所述第一算子和所述第二算子的量化参数收敛于所述目标输出范围对应的量化参数。
12.根据权利要求1所述的方法,其特征在于,所述第一算子包括第一量化算子和第一反量化算子,所述第二算子包括第二量化算子和第二反量化算子;所述更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数之后,所述方法还包括:
将每个所述第一算子中的第一反量化算子删除,将所述第二算子中的第二量化算子删除。
13.一种模型量化装置,其特征在于,所述装置包括:
模型获取模块,用于获取第一模型,所述第一模型包括多个第一算子、拼接层和第二算子,所述第一算子的输出为所述拼接层的输入,所述拼接层的输出为所述第二算子的输入;
参数更新模块,用于确定多个所述第一算子和所述第二算子中的每个算子的输入范围,基于每个算子的输入范围以及目标输出范围,更新每个所述算子的量化参数,以使每个所述算子的量化参数收敛于所述目标输出范围对应的量化参数,所述目标输出范围对应的量化参数用于将任一数据量化至所述目标输出范围;
量化处理模块,用于基于所述目标输出范围对应的量化参数,对所述拼接层中的网络参数进行量化处理。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如权利要求1至13任一项所述的模型量化方法中所执行的操作。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如权利要求1至13任一项所述的模型量化方法中所执行的操作。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110817137.6A CN115705482A (zh) | 2021-07-20 | 2021-07-20 | 模型量化方法、装置、计算机设备及存储介质 |
PCT/CN2022/100106 WO2023000898A1 (zh) | 2021-07-20 | 2022-06-21 | 图像分割模型量化方法、装置、计算机设备及存储介质 |
EP22845063.1A EP4375881A1 (en) | 2021-07-20 | 2022-06-21 | Image segmentation model quantization method and apparatus, computer device, and storage medium |
US18/140,144 US20230260245A1 (en) | 2021-07-20 | 2023-04-27 | Image segmentation model quantization method and apparatus, computer device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110817137.6A CN115705482A (zh) | 2021-07-20 | 2021-07-20 | 模型量化方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705482A true CN115705482A (zh) | 2023-02-17 |
Family
ID=84980093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110817137.6A Pending CN115705482A (zh) | 2021-07-20 | 2021-07-20 | 模型量化方法、装置、计算机设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230260245A1 (zh) |
EP (1) | EP4375881A1 (zh) |
CN (1) | CN115705482A (zh) |
WO (1) | WO2023000898A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116630632A (zh) * | 2023-07-25 | 2023-08-22 | 腾讯科技(深圳)有限公司 | 图像分割模型的量化方法、装置和设备及计算机存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101659578B1 (ko) * | 2015-09-01 | 2016-09-23 | 삼성전자주식회사 | 자기 공명 영상 처리 방법 및 장치 |
CN107688855B (zh) * | 2016-08-12 | 2021-04-13 | 赛灵思公司 | 针对于复杂神经网络的分层量化方法与装置 |
CN109388779A (zh) * | 2017-08-03 | 2019-02-26 | 珠海全志科技股份有限公司 | 一种神经网络权重量化方法和神经网络权重量化装置 |
CN110059733A (zh) * | 2019-04-01 | 2019-07-26 | 苏州科达科技股份有限公司 | 卷积神经网络的优化及快速目标检测方法、装置 |
CN111401550A (zh) * | 2020-03-10 | 2020-07-10 | 北京迈格威科技有限公司 | 神经网络模型量化方法、装置及电子设备 |
CN112561933A (zh) * | 2020-12-15 | 2021-03-26 | 深兰人工智能(深圳)有限公司 | 图像分割方法及装置 |
CN112580492A (zh) * | 2020-12-15 | 2021-03-30 | 深兰人工智能(深圳)有限公司 | 车辆检测方法及装置 |
-
2021
- 2021-07-20 CN CN202110817137.6A patent/CN115705482A/zh active Pending
-
2022
- 2022-06-21 WO PCT/CN2022/100106 patent/WO2023000898A1/zh active Application Filing
- 2022-06-21 EP EP22845063.1A patent/EP4375881A1/en active Pending
-
2023
- 2023-04-27 US US18/140,144 patent/US20230260245A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116630632A (zh) * | 2023-07-25 | 2023-08-22 | 腾讯科技(深圳)有限公司 | 图像分割模型的量化方法、装置和设备及计算机存储介质 |
CN116630632B (zh) * | 2023-07-25 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 图像分割模型的量化方法、装置和设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4375881A1 (en) | 2024-05-29 |
WO2023000898A1 (zh) | 2023-01-26 |
US20230260245A1 (en) | 2023-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299315B (zh) | 多媒体资源分类方法、装置、计算机设备及存储介质 | |
CN111739035B (zh) | 基于人工智能的图像处理方法、装置、设备及存储介质 | |
CN109189950B (zh) | 多媒体资源分类方法、装置、计算机设备及存储介质 | |
CN110490296A (zh) | 一种构造卷积神经网络(cnn)模型的方法和系统 | |
CN111325699B (zh) | 图像修复方法和图像修复模型的训练方法 | |
CN113538273B (zh) | 图像处理方法及图像处理装置 | |
CN112272311B (zh) | 花屏修复方法、装置、终端、服务器及介质 | |
CN114332530A (zh) | 图像分类方法、装置、计算机设备及存储介质 | |
CN111445392A (zh) | 图像处理方法及装置、计算机可读存储介质和电子设备 | |
CN110856048A (zh) | 视频修复方法、装置、设备及存储介质 | |
CN114283050A (zh) | 图像处理方法、装置、设备及存储介质 | |
CN111325220B (zh) | 图像生成方法、装置、设备及存储介质 | |
CN111753498A (zh) | 文本处理方法、装置、设备及存储介质 | |
CN113822322A (zh) | 图像处理模型训练方法及文本处理模型训练方法 | |
CN116108910A (zh) | 用于终端部署的图像处理模型压缩方法、装置以及设备 | |
CN114677350A (zh) | 连接点提取方法、装置、计算机设备及存储介质 | |
CN115705482A (zh) | 模型量化方法、装置、计算机设备及存储介质 | |
CN114333774A (zh) | 语音识别方法、装置、计算机设备及存储介质 | |
CN114283299A (zh) | 图像聚类方法、装置、计算机设备及存储介质 | |
CN112036492B (zh) | 样本集处理方法、装置、设备及存储介质 | |
CN113823296A (zh) | 语音数据处理方法、装置、计算机设备及存储介质 | |
CN111598923B (zh) | 目标跟踪方法、装置、计算机设备及存储介质 | |
CN110689478B (zh) | 图像风格化处理方法、装置、电子设备及可读介质 | |
CN113763931A (zh) | 波形特征提取方法、装置、计算机设备及存储介质 | |
CN112990440B (zh) | 用于神经网络模型的数据量化方法、可读介质和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40081825 Country of ref document: HK |