目标检测定点模型建立方法、装置及可读存储介质转让专利

申请号 : CN202210924766.3

文献号 : CN115019150B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨敏艾国杨作兴

申请人 : 深圳比特微电子科技有限公司

摘要 :

本发明实施例提出目标检测定点模型建立方法、装置及可读存储介质。方法包括:获取待检测场景的原始图像集;将各帧原始图像输入目标检测神经网络进行目标检测QAT,其中,神经网络的每一运算模块的输入方向连接伪量化模块,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子;调整目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型;对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。本发明实施例提高了目标检测定点模型的检测准确度和精度。

权利要求 :

1.一种目标检测定点模型建立方法,其特征在于,该方法包括:获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像;

将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测量化感知训练QAT,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子;

调整所述目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型;

对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。

2.根据权利要求1所述的方法,其特征在于,所述获取待检测场景的原始图像集之后、所述将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测QAT之前,进一步包括:分别对每帧原始图像中的目标进行标注,得到标注目标图像集;

所述将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测QAT之后、所述调整所述目标检测神经网络的可学习参数之前,进一步包括:根据目标检测神经网络检测出的当前原始图像中的目标与对应的标注目标图像中标注的目标,计算当前损失函数;

所述调整所述目标检测神经网络的可学习参数,包括:

根据当前损失函数调整所述目标检测神经网络的可学习参数。

3.根据权利要求1所述的方法,其特征在于,所述得到最终使用的目标检测定点模型之后,进一步包括:将在待检测场景中采集的待检测图像输入所述目标检测定点模型进行计算,得到所述待检测图像中的目标。

4.根据权利要求1所述的方法,其特征在于,所述量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,包括:m1‑1‑n1 ‑(m1‑1‑n1)

计算s1'=round(s1×2 )×2

其中,s1为当前原始浮点型缩放因子,s1'为对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,round()为取整函数,m1为预设正整数,n1为整数n1且满足:s1=s01×2 ,其中,s01∈[0.5, 1)。

5.根据权利要求4所述的方法,其特征在于,m1的取值范围为:16≤m1≤32。

6.根据权利要求4或5所述的方法,其特征在于,所述伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,包括:根据如下公式对输入每一运算模块的激活向量或/和权重向量进行量化操作:Q1=clip(round(r1/s1')+z1, Q1min, Q1max)根据如下公式对量化后的激活向量或/和权重向量进行反量化操作:r1'=s1'(Q1‑z1)

其中,round()为取整函数;clip()为截断函数,用于将Q1的取值范围限制在[Q1min, Q1max];r1为输入一运算模块的激活向量或权重向量;Q1为r1的量化结果;z1为浮点数0量化后的值;[Q1min, Q1max]为Q1的取值范围;r1'为反量化操作后得到的激活向量或权重向量。

7.根据权利要求1所述的方法,其特征在于,所述对目标检测浮点模型中的各权重进行定点化操作,包括:根据如下公式对目标检测浮点模型中的各权重进行定点化操作:

Q2=clip(round(r2/s2')+z2, Q2min, Q2max)其中,round()为取整函数;clip()为截断函数,用于将Q2的取值范围限制在[Q2min, Q2max];r2为目标检测浮点模型中的权重;z2为浮点数0量化后的值;Q2为目标检测浮点模型m2‑1‑n2 ‑(m2‑1‑n2)中的权重量化后的值;[Q2min, Q2max]为Q2的取值范围;s2'=round(s2×2 )×2 ,s2为当前原始浮点型缩放因子,s2'为对当前原始浮点型缩放因子进行定点化和反定点化n2操作后得到的浮点型缩放因子,m2为预设正整数,n2为整数,且满足:s2=s02×2 ,其中,s02∈[0.5, 1)。

8.根据权利要求1所述的方法,其特征在于,所述对目标检测浮点模型的当前缩放因子进行定点化操作,包括:m3‑1‑n3

sm= round(s3×2 )

其中,s3为目标检测浮点模型的当前缩放因子,sm为对s3定点化操作后得到的定点型当n3前缩放因子,round()为取整函数,m3为预设正整数,n3为整数,且满足:s3=s03×2 ,其中,s03∈[0.5, 1)。

9.一种目标检测定点模型建立装置,其特征在于,该装置包括:训练准备模块,用于获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像;

QAT模块,用于将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测量化感知训练QAT,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子;

调整模块,用于调整所述目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型;

模型定点化模块,用于对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。

10.一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如权利要求1至8中任一项所述的方法的步骤。

说明书 :

目标检测定点模型建立方法、装置及可读存储介质

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及目标检测定点模型建立方法、装置及可读存储介质。

背景技术

[0002] 在某些特定场景如:广场、道路等,需要将感兴趣目标如:人、车辆、宠物等检测出来。目前常用的目标检测模型为神经网络模型,通过训练图像集对神经网络进行训练,训练完毕得到目标检测模型,之后采用该目标检测模型对场景图像进行目标检测。由于训练完毕直接得到的目标检测模型为浮点模型,即模型中的权重都是浮点数,而浮点数占用的硬件资源较多,因此应用受限,且计算速度较慢。
[0003] 为了扩大目标检测模型的应用范围并提高模型计算速度,目前通常通过如下方式将其转换为定点模型:
[0004] 首先,神经网络训练过程采用QAT(Quantization Aware Training,量化感知训练)方式,即在神经网络中插入伪量化模块,训练过程中伪量化模块会对权重向量以及每一层输出的激活向量进行量化和反量化操作,以模拟量化工程,并学习去适应量化带来的噪声和精度损失。图1以卷积运算为例,对QAT的训练过程进行说明,具体过程如下:
[0005] 步骤101:伪量化模块1对前一层(如:卷积运算模块)输出的浮点型激活向量先根据如下公式(1)进行量化操作,然后根据如下公式(2)对公式(1)的量化结果进行反量化操作;
[0006] 同时,伪量化模块2对当前层(如:卷积运算模块)的输入权重向量先根据如下公式(1)进行量化操作,然后根据如下公式(2)对公式(1)的量化结果进行反量化操作:
[0007] Q=clip(round(r/s)+z, Qmin, Qmax)                  (1)
[0008] 其中,round()为取整函数;clip()为截断函数,其作用是将Q的取值限制在[Qmin, Qmax],即,当round(r/s)+zQmax时,令Q=Qmax;r为待量化的浮点数;z为浮点数0量化后的值;Q为量化结果,为定点数;s为当前浮点型缩放因子,s=(rmax‑rmin)/(Qmax‑Qmin),[rmin, rmax]为r的当前取值范围,[Qmin, Qmax]为Q的当前取值范围。
[0009] r'=s(Q‑z)                               (2)
[0010] 其中,r'为反量化后得到的浮点数。
[0011] 步骤102:将101中反量化操作得到的浮点型激活向量和浮点型权重向量输入到当前层进行卷积运算,得到当前层输出的激活向量。
[0012] 每一层都重复上述步骤101、102。
[0013] 通过QAT最终得到的是目标检测浮点模型,模型中的权重是浮点型的,此时,需要再对模型中的权重通过公式(1)进行定点化操作,转换为定点型权重;同时对模型的当前缩放因子s进行定点化操作,得到定点型缩放因子,至此得到目标检测定点模型。其中,s的定点化操作过程如下:
[0014] 步骤201:通过如下公式(3),将s归一化到s0∈[0.5,1):
[0015] s=s0×2n                                            (3)
[0016] s0= s×2‑n                                           (4)
[0017] 其中,s0为s的归一化值。
[0018] 步骤202:对s0进行定点化处理,具体过程如下:
[0019] 步骤2021:将s0乘以2m‑1 后用整数sm表示,即:
[0020] sm= round(s0×2m‑1)                         (5)
[0021] 其中,m为预设正整数。
[0022] 步骤2022:将公式(4)代入公式(5)得到:
[0023] sm= round(s×2‑n×2m‑1)= round(s×2m‑1‑n)              (6)
[0024] 步骤2023:对sm进行反定点化操作:
[0025] s'= sm/2m‑1‑n= sm×2‑(m‑1‑n)                                (7)[0026] 其中,s'为sm的反定点化的结果,将公式(6)代入公式(7)得到:
[0027] s' = round(s×2m‑1‑n) ×2‑(m‑1‑n)                            (8)[0028] 可以看到 s'可以用来近似s,即:
[0029] s'≈s                              (9)
[0030] 在对目标检测浮点模型中的权重以及s进行定点化操作后,此时就得到了完整的目标检测定点模型,当应用目标检测定点模型进行目标检测时,当模型的卷积节点输出一个定点卷积结果x时,使用定点s对其进行修正:
[0031] y=round(s×x)≈round(s'×x)                      (10)
[0032] 其中,y是x的定点数,s是浮点型当前缩放因子。
[0033] 将公式(7)代入公式(10)得到:
[0034] y≈round(sm×2‑(m‑1‑n)×x) =( sm×x+(1<<(shift‑1)))>>shift         (11)[0035] 其中,shift=m‑1‑n,<<为向左移位运算符,>>为向右移位运算符。
[0036] 发明人通过分析现有的目标检测定点模型的建立过程发现:由于缩放因子s的定点化是在QAT之后进行的,且s的定点化会带来误差,因此:目标检测定点模型的检测准确度和精度与QAT训练完毕得到的目标检测浮点模型的检测准确度和精度是不一致的。而理想的目标检测定点模型的检测准确度和精度是应该与QAT训练完毕得到的目标检测浮点模型一致的。

发明内容

[0037] 本发明实施例提出目标检测定点模型建立方法、装置及可读存储介质,以提高目标检测定点模型的目标检测准确度和精度。
[0038] 本发明实施例的技术方案是这样实现的:
[0039] 一种目标检测定点模型建立方法,该方法包括:
[0040] 获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像;
[0041] 将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测量化感知训练QAT,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子;
[0042] 调整所述目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型;
[0043] 对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。
[0044] 所述获取待检测场景的原始图像集之后、所述将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测QAT之前,进一步包括:
[0045] 分别对每帧原始图像中的目标进行标注,得到标注目标图像集;
[0046] 所述将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测QAT之后、所述调整所述目标检测神经网络的可学习参数之前,进一步包括:
[0047] 根据目标检测神经网络检测出的当前原始图像中的目标与对应的标注目标图像中标注的目标,计算当前损失函数;
[0048] 所述调整所述目标检测神经网络的可学习参数,包括:
[0049] 根据当前损失函数调整所述目标检测神经网络的可学习参数。
[0050] 所述得到最终使用的目标检测定点模型之后,进一步包括:
[0051] 将在待检测场景中采集的待检测图像输入所述目标检测定点模型进行计算,得到所述待检测图像中的目标。
[0052] 所述量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,包括:
[0053] 计算s1'=round(s1×2m1‑1‑n1)×2‑(m1‑1‑n1)
[0054] 其中,s1为当前原始浮点型缩放因子,s1'为对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,round()为取整函数,m1为预设正整数,n1为n1整数且满足:s1=s01×2 ,其中,s01∈[0.5, 1)。
[0055] m1的取值范围为:16≤m1≤32。
[0056] 所述伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,包括:
[0057] 根据如下公式对输入每一运算模块的激活向量或/和权重向量进行量化操作:
[0058] Q1=clip(round(r1/s1')+z1, Q1min, Q1max)
[0059] 根据如下公式对量化后的激活向量或/和权重向量进行反量化操作:
[0060] r1'=s1'(Q1‑z1)
[0061] 其中,round()为取整函数;clip()为截断函数,用于将Q1的取值范围限制在[Q1min, Q1max];r1为输入一运算模块的激活向量或权重向量;Q1为r1的量化结果;z1为浮点数0量化后的值;[Q1min, Q1max]为Q1的取值范围;r1'为反量化操作后得到的激活向量或权重向量。
[0062] 所述对目标检测浮点模型中的各权重进行定点化操作,包括:
[0063] 根据如下公式对目标检测浮点模型中的各权重进行定点化操作:
[0064] Q2=clip(round(r2/s2')+z2, Q2min, Q2max)
[0065] 其中,round()为取整函数;clip()为截断函数,用于将Q2的取值范围限制在[Q2min, Q2max];r2为目标检测浮点模型中的权重;z2为浮点数0量化后的值;Q2为目标检测m2‑1‑n2浮点模型中的权重量化后的值;[Q2min, Q2max]为Q2的取值范围;s2'=round(s2×2 )×‑(m2‑1‑n2)
2 ,s2为当前原始浮点型缩放因子,s2'为对当前原始浮点型缩放因子进行定点化和n
反定点化操作后得到的浮点型缩放因子,m2为预设正整数,n2为整数,且满足:s2=s02×2 ,其中,s02∈[0.5, 1)。
[0066] 所述对目标检测浮点模型的当前缩放因子进行定点化操作,包括:
[0067] sm= round(s3×2m3‑1‑n3)
[0068] 其中,s3为目标检测浮点模型的当前缩放因子,sm为对s3定点化操作后得到的定n3点型当前缩放因子,round()为取整函数,m3为预设正整数,n3为整数,且满足:s3=s03×2 ,其中,s03∈[0.5, 1)。
[0069] 一种目标检测定点模型建立装置,该装置包括:
[0070] 训练准备模块,用于获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像;
[0071] QAT模块,用于将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测量化感知训练QAT,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子;
[0072] 调整模块,用于调整所述目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型;
[0073] 模型定点化模块,用于对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。
[0074] 一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的方法的步骤。
[0075] 本发明实施例中,在QAT过程中,伪量化模块对输入目标检测神经网络的每一运算模块的激活向量或/和权重向量进行量化和反量化操作时,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,从而使得最终得到的目标检测定点模型和目标检测浮点模型的检测准确度和精度一致。

附图说明

[0076] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0077] 图1为以卷积运算为例,现有的QAT的训练过程的示意图;
[0078] 图2为本发明实施例提供的目标检测定点模型建立方法流程图;
[0079] 图3为本发明实施例提供的目标检测定点模型建立装置的结构示意图;
[0080] 图4为本发明实施例提供的一种电子设备的示例性结构示意图。

具体实施方式

[0081] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0082] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
[0083] 下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0084] 发明人通过分析现有的目标检测定点模型的建立过程发现:由于缩放因子s的定点化是在QAT之后进行的,且s的定点化会带来误差,因此:目标检测定点模型的检测准确度和精度与QAT训练完毕得到的目标检测浮点模型的检测准确度和精度是不一致的。而理想的目标检测定点模型的检测准确度和精度是应该与QAT训练完毕得到的目标检测浮点模型一致的。
[0085] 图2为本发明实施例提供的目标检测定点模型建立方法流程图,其具体步骤如下:
[0086] 步骤201:获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像。
[0087] 步骤202:将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测QAT,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子。
[0088] 步骤203:调整目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型。
[0089] 可学习参数例如:权重、偏置等。
[0090] 步骤204:对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。
[0091] 本步骤中的“目标检测浮点模型的当前缩放因子”指的是收敛时的目标检测浮点模型对应的缩放因子。
[0092] 上述实施例中,在QAT过程中,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作时,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,从而使得最终得到的目标检测定点模型和目标检测浮点模型的检测准确度和精度一致。
[0093] 一可选实施例中,步骤201之后、步骤202之前,进一步包括:分别对每帧原始图像中的目标进行标注,得到标注目标图像集;
[0094] 且,步骤202之后、步骤203之前,进一步包括:根据目标检测神经网络检测出的当前原始图像中的目标与当前原始图像对应的标注目标图像中标注的目标,计算当前损失函数;
[0095] 且,步骤203中,调整目标检测神经网络的可学习参数,包括:根据当前损失函数调整目标检测神经网络的可学习参数。
[0096] 通常,当连续预设次数都满足:当前损失函数与前一损失函数之间的差值的绝对值都小于预设阈值时,则认为目标检测神经网络收敛。
[0097] 一可选实施例中,步骤204之后,进一步包括:将在待检测场景中采集的待检测图像输入目标检测定点模型进行计算,得到待检测图像中的目标。
[0098] 通常,将在待检测场景中采集的待检测图像输入目标检测定点模型进行计算时,目标检测定点模型输出的是在待检测图像中检测到的各个目标的位置以及各个目标为真实目标的概率,即待检测图像中的目标以两个参数表示:目标在待检测图像中的位置和目标为真实目标的概率。
[0099] 一可选实施例中,步骤202中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,包括:
[0100] 计算
[0101] s1'=round(s1×2m1‑1‑n1)×2‑(m1‑1‑n1)                           (12)[0102] 其中,s1为当前原始浮点型缩放因子,s1'为对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,round()为取整函数,m1为预设正整数,n1为n1整数且满足:s1=s01×2 ,其中,s01∈[0.5, 1),s01的作用是将s1的范围限制在[0.5, 1)。
[0103] 一可选实施例中,m1的取值范围为:16≤m1≤32。
[0104] 一可选实施例中,步骤202中,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,包括:
[0105] 根据如下公式对输入每一运算模块的激活向量或/和权重向量进行量化操作:
[0106] Q1=clip(round(r1/s1')+z1, Q1min, Q1max)                    (13)[0107] 根据如下公式对量化后的激活向量或/和权重向量进行反量化操作:
[0108] r1'=s1'(Q1‑z1)                              (14)
[0109] 其中,round()为取整函数;clip()为截断函数,用于将Q1的取值范围限制在[Q1min, Q1max];r1为输入一运算模块的激活向量或权重向量;Q1为r1的量化结果;z1为浮点数0量化后的值;[Q1min, Q1max]为Q1的取值范围;r1'为反量化操作后得到的激活向量或权重向量。
[0110] 通过公式(13)和(14)可以看出:本申请实施例中,对激活向量和权重向量进行量化和反量化操作时采用的缩放因子并不是当前原始浮点型缩放因子s1,而是对s1进行定点化和反定点化操作后得到的浮点型缩放因子s1'。
[0111] 一可选实施例中,步骤204中,对目标检测浮点模型中的各权重进行定点化操作,包括:
[0112] 根据如下公式对目标检测浮点模型中的各权重进行定点化操作:
[0113] Q2=clip(round(r2/s2')+z2, Q2min, Q2max)                  (15)
[0114] 其中,round()为取整函数;clip()为截断函数,用于将Q2的取值范围限制在[Q2min, Q2max];r2为目标检测浮点模型中的权重;z2为浮点数0量化后的值;Q2为目标检测m2‑1‑n2浮点模型中的权重量化后的值;[Q2min, Q2max]为Q2的取值范围;s2'=round(s2×2 )×‑(m2‑1‑n2)
2 ,s2为当前原始浮点型缩放因子,s2'为对当前原始浮点型缩放因子进行定点化和n2
反定点化操作后得到的浮点型缩放因子,m2为预设正整数,n2为整数,且满足:s2=s02×2 ,其中,s02∈[0.5, 1)。
[0115] 一可选实施例中,m2的取值范围为:16≤m2≤32。
[0116] 一可选实施例中,步骤204中,对目标检测浮点模型的当前缩放因子进行定点化操作,包括:
[0117] sm= round(s3×2m3‑1‑n3)                      (16)
[0118] 其中,s3为目标检测浮点模型的当前缩放因子,sm为定点化操作后得到的定点型n3当前缩放因子,round()为取整函数,m3为预设正整数,n3为整数,且满足:s3=s03×2 ,其中,s03∈[0.5, 1)。
[0119] 一可选实施例中,m3的取值范围为:16≤m3≤32。
[0120] 需要说明的是,由于round()函数不可导,因此在实际应用中,通常采用STE(Straight Through Estimator,直通估计器)来近似round()函数的梯度。卷积运算模块(即卷积层)的梯度在进行伪量化操作之前直接传回权重。STE将round函数的的梯度近似为1,即直接将上一层的梯度传到下一层。
[0121] 图3为本发明实施例提供的目标检测定点模型建立装置的结构示意图,该装置主要包括:训练准备模块31、QAT模块32、调整模块33和模型定点化模块34,其中:
[0122] 训练准备模块31,用于获取待检测场景的原始图像集,该原始图像集中包含多帧原始图像。
[0123] QAT模块32,用于将原始图像集中的各帧原始图像输入目标检测神经网络进行目标检测,其中,目标检测神经网络的每一运算模块的输入方向连接伪量化模块,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,并将反量化操作得到的浮点型激活向量或/和权重向量输入到对应的运算模块,其中,量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子。
[0124] 调整模块33,用于调整目标检测神经网络的可学习参数,直至收敛,得到目标检测浮点模型。
[0125] 模型定点化模块34,用于对目标检测浮点模型中的各权重进行定点化操作,并对目标检测浮点模型的当前缩放因子进行定点化操作,得到最终使用的目标检测定点模型。
[0126] 一可选实施例中,训练准备模块31获取待检测场景的原始图像集之后、进一步用于:分别对每帧原始图像中的目标进行标注,得到标注目标图像集;
[0127] 调整模块33调整目标检测神经网络的可学习参数之前,进一步用于:根据目标检测神经网络检测出的当前原始图像中的目标与对应的标注目标图像中标注的目标,计算当前损失函数;
[0128] 调整模块33调整目标检测神经网络的可学习参数,包括:根据当前损失函数调整目标检测神经网络的可学习参数。
[0129] 一可选实施例中,上述装置进一步包括:定点模型应用模块35,用于将在待检测场景中采集的待检测图像输入目标检测定点模型进行计算,检测得到待检测图像中的目标。
[0130] 一可选实施例中,QAT模块32中的量化和反量化操作中的缩放因子采用对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,包括:
[0131] 计算s1'=round(s1×2m1‑1‑n1)×2‑(m1‑1‑n1)
[0132] 其中,s1为当前原始浮点型缩放因子,s1'为对当前原始浮点型缩放因子进行定点化和反定点化操作后得到的浮点型缩放因子,round()为取整函数,m1为预设正整数,n1为n1整数且满足:s1=s01×2 ,其中,s01∈[0.5, 1);m1的取值范围为:16≤m1≤32。
[0133] 一可选实施例中,QAT模块32中,伪量化模块对输入每一运算模块的激活向量或/和权重向量进行量化和反量化操作,包括:
[0134] 根据如下公式对输入每一运算模块的激活向量或/和权重向量进行量化操作:
[0135] Q1=clip(round(r1/s1')+z1, Q1min, Q1max)
[0136] 根据如下公式对量化后的激活向量或/和权重向量进行反量化操作:
[0137] r1'=s1'(Q1‑z1)
[0138] 其中,round()为取整函数;clip()为截断函数,用于将Q1的取值范围限制在[Q1min, Q1max];r1为输入一运算模块的激活向量或权重向量;Q1为r1的量化结果;z1为浮点数0量化后的值;[Q1min, Q1max]为Q1的取值范围;r1'为反量化操作后得到的激活向量或权重向量。
[0139] 一可选实施例中,模型定点化模块34对目标检测浮点模型中的各权重进行定点化操作,包括:
[0140] 根据如下公式对目标检测浮点模型中的各权重进行定点化操作:
[0141] Q2=clip(round(r2/s2')+z2, Q2min, Q2max)
[0142] 其中,round()为取整函数;clip()为截断函数,用于将Q2的取值范围限制在[Q2min, Q2max];r2为目标检测浮点模型中的权重;z2为浮点数0量化后的值;Q2为目标检测m2‑1‑n2浮点模型中的权重量化后的值;[Q2min, Q2max]为Q2的取值范围;s2'=round(s2×2 )×‑(m2‑1‑n2)
2 ,s2为当前原始浮点型缩放因子,s2'为对当前原始浮点型缩放因子进行定点化和n2
反定点化操作后得到的浮点型缩放因子,m2为预设正整数,n2为整数,且满足:s2=s02×2 ,其中,s02∈[0.5, 1)。
[0143] 一可选实施例中,模型定点化模块34对目标检测浮点模型的当前缩放因子进行定点化操作,包括:
[0144] sm= round(s3×2m3‑1‑n3)
[0145] 其中,s3为目标检测浮点模型的当前缩放因子,sm为定点化操作后得到的定点型n3当前缩放因子,round()为取整函数,m3为预设正整数,n3为整数,且满足:s3=s03×2 ,其中,s03∈[0.5, 1)。
[0146] 本申请实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如上任一实施例所述的方法的步骤。
[0147] 本申请实施例还提供一种非瞬时计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时可执行如上任一实施例所述的方法中的步骤。实际应用中,所述的计算机可读介质可以是上述实施例各设备/装置/系统所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。其中,在计算机可读存储介质中存储指令,其存储的指令在由处理器执行时可执行如上任一实施例所述的方法中的步骤。
[0148] 根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0149] 如图4所示,本发明实施例还提供一种电子设备。如图4所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
[0150] 该电子设备可以包括一个或一个以上处理核心的处理器41、一个或一个以上计算机可读存储介质的存储器42以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器42的程序时,可以实现如上任一实施例所述的方法。
[0151] 具体的,实际应用中,该电子设备还可以包括电源43、输入输出单元44等部件。本领域技术人员可以理解,图4中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0152] 处理器41是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器42内的软件程序和/或模块,以及调用存储在存储器42内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。
[0153] 存储器42可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器41通过运行存储在存储器42的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器42还可以包括存储器控制器,以提供处理器41对存储器42的访问。
[0154] 该电子设备还包括给各个部件供电的电源43,可以通过电源管理系统与处理器41逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源43还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0155] 该电子设备还可包括输入输出单元44,该输入单元输出44可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该输入单元输出44还可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
[0156] 本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0157] 本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。
[0158] 本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本发明的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。