1.本技术涉及目标检测技术领域,尤其涉及一种目标检测知识蒸馏方法、装置、终端设备和存储介质。
背景技术:2.近年来,基于深度学习的目标检测方法得到了较快的发展,但在实际应用场景中如何同时保证模型的实时性与有效性一直是函待解决的课题之一。例如,在设备算力不足的情况下模型的参数量以及计算量都需要足够小,同时检测精度也需要得到保证。然而,在一般情况下,模型参数量越大则其精度也越好,反之精度就会降低,这是一个矛盾。目标检测模型的知识蒸馏正是用于解决上述矛盾的方法之一,在降低模型参数的同时保证甚至提高模型的精度。
3.知识蒸馏是模型压缩的一种常用方法,主要通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息来训练这个小模型,使得小模型获得更好的性能和精度。一般的,这个大模型被称作教师模型,而这个小模型被称作学生模型。
4.目前,知识蒸馏主要用于实现目标分类任务,在将知识蒸馏应用于目标检测任务时没有获得良好的模型蒸馏效果。
技术实现要素:5.有鉴于此,本技术实施例提供了一种目标检测知识蒸馏方法、装置、终端设备和存储介质,能够提高目标检测的模型蒸馏效果。
6.本技术实施例的第一方面提供了一种目标检测知识蒸馏方法,包括:
7.将已标注目标检测框的样本图像分别输入教师模型和学生模型;
8.获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像;
9.根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码;
10.根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到目标蒸馏损失;
11.根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到背景蒸馏损失;
12.根据所述目标蒸馏损失和所述背景蒸馏损失构建损失函数;
13.基于所述损失函数,对所述学生模型的参数进行优化。
14.在本技术实施例中,首先将样本图像分别输入教师模型和学生模型,获取教师模型输出的第一特征图像和学生模型输出的第二特征图像;然后,根据第一特征图像计算得到空间注意力掩码、目标通道注意力掩码以及背景通道注意力掩码;之后,根据第一特征图像、第二特征图像、空间注意力掩码、目标通道注意力掩码以及背景通道注意力掩码等数据,分别计算得到目标蒸馏损失和背景蒸馏损失;最后,根据目标蒸馏损失和背景蒸馏损失
构建损失函数,并基于该损失函数对学生模型的参数进行优化。上述过程在计算通道注意力时会将目标与背景进行区分,分别计算适配于目标以及背景的通道级别注意力,得到目标通道注意力掩码以及背景通道注意力掩码,然后再分别计算得到目标蒸馏损失和背景蒸馏损失,从而分别引导目标与背景的蒸馏。这样处理能够细化蒸馏的粒度,在一定程度上提高目标检测的模型蒸馏效果。
15.在本技术实施例的一种实现方式中,在获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像之后,还可以包括:
16.根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,通过高斯编码的方式计算得到目标高斯掩码和背景高斯掩码;
17.所述根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到目标蒸馏损失,具体可以为:
18.根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到所述目标蒸馏损失;
19.所述根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到背景蒸馏损失,具体可以为:
20.根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到所述背景蒸馏损失。进一步的,所述根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,通过高斯编码的方式计算得到目标高斯掩码和背景高斯掩码,可以包括:
21.根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,获取所述各个目标检测框的中心点坐标;
22.针对每个所述目标检测框,根据该目标检测框的高度和宽度设置高斯半径,并基于二维高斯公式和该目标检测框的中心点坐标计算得到该目标检测框的高斯掩码;
23.根据每个所述目标检测框的高斯掩码构建得到所述目标高斯掩码;
24.根据所述目标高斯掩码构建得到所述背景高斯掩码。
25.更进一步的,在根据所述目标高斯掩码构建得到所述背景高斯掩码之后,还可以包括:
26.根据每个所述目标检测框的高度和宽度,以及所述背景高斯掩码,构建得到尺度掩码;
27.对所述目标高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述目标高斯掩码;
28.对所述背景高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述背景高斯掩码。
29.进一步的,所述根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到所述目标蒸馏损失,可以包括:
30.计算所述第一空间注意力掩码和所述第一目标通道注意力掩码的乘积,得到目标
融合蒸馏掩码;
31.根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码以及所述目标融合蒸馏掩码,计算得到所述目标蒸馏损失;
32.所述根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到所述背景蒸馏损失,可以包括:
33.计算所述第一空间注意力掩码和所述第一背景通道注意力掩码的乘积,得到背景融合蒸馏掩码;
34.根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码以及所述背景融合蒸馏掩码,计算得到所述背景蒸馏损失。
35.在本技术实施例的一种实现方式中,在获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像之后,还可以包括:
36.根据所述第二特征图像计算得到第二空间注意力掩码、第二目标通道注意力掩码以及第二背景通道注意力掩码;
37.根据所述第一空间注意力掩码、所述第二空间注意力掩码、所述第一目标通道注意力掩码、所述第二目标通道注意力掩码、所述第一背景通道注意力掩码以及所述第二背景通道注意力掩码,计算得到模型蒸馏损失;
38.所述根据所述目标蒸馏损失和所述背景蒸馏损失构建损失函数,具体可以为:
39.根据所述目标蒸馏损失、所述背景蒸馏损失以及所述模型蒸馏损失,构建所述损失函数。
40.进一步的,所述根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码,可以包括:
41.根据所述第一特征图像和所述第一特征图像的通道数,计算得到第一中间变量;
42.根据所述第一特征图像的高度和宽度,以及所述第一中间变量,计算得到所述第一空间注意力掩码;
43.根据所述第一特征图像包含的目标检测框的数量、所述第一特征图像包含的每个目标检测框的高度和宽度,以及所述第一特征图像,计算得到第二中间变量;
44.根据所述第一特征图像的通道数和所述第二中间变量,计算得到所述第一目标通道注意力掩码;
45.根据所述第一特征图像的高度和宽度、预设的指示函数以及所述第一特征图像,计算得到第三中间变量;其中,所述指示函数根据所述背景高斯掩码构建;
46.根据所述第一特征图像的通道数和所述第三中间变量,计算得到所述第一背景通道注意力掩码;
47.所述根据所述第二特征图像计算得到第二空间注意力掩码、第二目标通道注意力掩码以及第二背景通道注意力掩码,可以包括:
48.根据所述第二特征图像和所述第二特征图像的通道数,计算得到第四中间变量;
49.根据所述第二特征图像的高度和宽度,以及所述第四中间变量,计算得到所述第二空间注意力掩码;
50.根据所述第二特征图像包含的目标检测框的数量、所述第二特征图像包含的每个目标检测框的高度和宽度,以及所述第二特征图像,计算得到第五中间变量;
51.根据所述第二特征图像的通道数和所述第五中间变量,计算得到所述第二目标通道注意力掩码;
52.根据所述第二特征图像的高度和宽度、所述指示函数以及所述第二特征图像,计算得到第六中间变量;
53.根据所述第二特征图像的通道数和所述第六中间变量,计算得到所述第二背景通道注意力掩码。
54.本技术实施例的第二方面提供了一种目标检测知识蒸馏装置,包括:
55.图像输入模块,用于将已标注目标检测框的样本图像分别输入教师模型和学生模型;
56.特征图像获取模块,用于获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像;
57.第一注意力掩码计算模块,用于根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码;
58.目标蒸馏损失计算模块,用于根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到目标蒸馏损失;
59.背景蒸馏损失计算模块,用于根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到背景蒸馏损失;
60.损失函数构建模块,用于根据所述目标蒸馏损失和所述背景蒸馏损失构建损失函数;
61.模型参数优化模块,用于基于所述损失函数,对所述学生模型的参数进行优化。
62.本技术实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本技术实施例的第一方面提供的目标检测知识蒸馏方法。
63.本技术实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本技术实施例的第一方面提供的目标检测知识蒸馏方法。
64.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行如本技术实施例的第一方面提供的目标检测知识蒸馏方法。
65.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
66.图1是本技术实施例提供的一种目标检测知识蒸馏方法的流程图;
67.图2是本技术实施例提供的一种目标检测知识蒸馏方法的原理示意图;
68.图3是本技术实施例提供的一种目标检测知识蒸馏装置的结构示意图;
69.图4是本技术实施例提供的一种终端设备的示意图。
具体实施方式
70.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
71.本技术实施例提出的是一种目标检测知识蒸馏方法,适用于在目标检测任务中提高模型蒸馏效果,能够有效提升模型检测性能。关于本技术实施例更具体的技术实现细节,请参照下文所述的方法实施例。
72.应当理解,本技术各个方法实施例的执行主体为各种类型的终端设备或服务器,例如可以是手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)、大屏电视,等等,本技术实施例对该终端设备和服务器的具体类型不作任何限制。
73.请参阅图1,示出了本技术实施例提供的一种目标检测知识蒸馏方法,包括:
74.101、将已标注目标检测框的样本图像分别输入教师模型和学生模型;
75.首先,将已标注各个目标检测框的样本图像分别输入教师模型以及学生模型。在模型的知识蒸馏领域,教师模型通常是一个高性能的复杂神经网络,而学生模型则是一个轻量化的简单神经网络。知识蒸馏的流程大致包括:首先预训练教师模型,使其收敛并具有较高的检测性能,然后在训练学生模型的过程中通过教师模型的输出作为额外的监督信息对学生模型进行训练,迁移特征图像中的知识,以提高学生模型的训练优化效果。
76.102、获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像;
77.在将样本图像输入教师模型后,通过教师模型可以输出相应的特征图像,用第一特征图像表示。同样的,在将样本图像输入学生模型后,通过学生模型也可以输出相应的特征图像,用第二特征图像表示。这里输出的特征图像一般可以是模型的中间输出特征,可以是单个尺度也可以是多个不同尺度的特征图像,例如可以是模型的主干网络某一层或多层输出的特征图像,也可以是neck网络某一层或多层输出的特征图像。一般来说教师模型拥有更大的参数量来保证模型的检测性能更强,采用教师模型的中间输出特征来引导学生模型的学习是可行的,极端情况下如果学生模型的中间输出特征和教师模型的中间输出特征一致,那么最后将该特征送给目标检测器的检测头得到的检测结果也将是一致的。
78.在本技术实施例的一种实现方式中,在获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像之后,还可以包括:
79.根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,通过高斯编码的方式计算得到目标高斯掩码和背景高斯掩码。
80.由于样本图像已标注真实标签(即真实的目标检测框的位置以及类型),故第一特征图像和/或第二特征图像都会包含相应的真实标签,也即各个目标检测框的标签,具体可
以包含各个目标检测框的位置以及类型等信息。可以将这些真实标签输入至已编制完成的高斯编码模块,通过高斯编码的方式计算得到目标高斯掩码(对应于图像中的前景目标)和背景高斯掩码(对应于图像中的背景)。
81.进一步的,所述根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,通过高斯编码的方式计算得到目标高斯掩码和背景高斯掩码,可以包括:
82.(1)根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,获取所述各个目标检测框的中心点坐标;
83.(2)针对每个所述目标检测框,根据该目标检测框的高度和宽度设置高斯半径,并基于二维高斯公式和该目标检测框的中心点坐标计算得到该目标检测框的高斯掩码;
84.(3)根据每个所述目标检测框的高斯掩码构建得到所述目标高斯掩码;
85.(4)根据所述目标高斯掩码构建得到所述背景高斯掩码。
86.在通过高斯编码的方式计算目标高斯掩码和背景高斯掩码时,首先可以根据第一特征图像中包含的各个目标检测框的标签和/或第二特征图像中包含的各个目标检测框的标签(第一特征图像和第二特征图像包含的各个目标检测框的标签通常是一致的),获取每个目标检测框的中心点坐标;然后,针对每个目标检测框,根据其高度和宽度设置高斯半径,并基于二维高斯公式和该目标检测框的中心点坐标计算得到该目标检测框的高斯掩码;接下来,根据每个目标检测框的高斯掩码可以构建得到对应特征图像的目标高斯掩码;最后,由于目标(前景)和背景通常是互斥的,故通过目标高斯掩码即可构建出对应的背景高斯掩码。
87.示例性的,高斯编码模块首先利用真实标签获取每个目标检测框的中心点坐标,用(x
i,j
,y
i,j
)表示。假设当前需要计算第r个目标检测框的高斯掩码,则根据该目标检测框的高度hr和宽度wr,可以设置对应的高斯半径为(hr/2,wr/2),再利用二维高斯公式计算得到该目标检测框的高斯掩码,具体如下:
[0088][0089]
其中,sigma是可以自行调节的参数。针对每个目标检测框都可以利用上述方式计算得到对应的高斯掩码,将这些高斯掩码按照对应位置填充后,即可得到整个特征图像对应的目标高斯掩码,用mg表示。
[0090]
在计算得到目标高斯掩码mg后,可以通过以下公式计算得到背景高斯掩码mb:
[0091][0092]
其中,i表示整个特征图像的区域,i,j表示特征图像区域内的各个位置点。
[0093]
更进一步的,在根据所述目标高斯掩码构建得到所述背景高斯掩码之后,还可以包括:
[0094]
(1)根据每个所述目标检测框的高度和宽度,以及所述背景高斯掩码,构建得到尺度掩码;
[0095]
(2)对所述目标高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述目标高斯掩码;
[0096]
(3)对所述背景高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述背景高斯掩码。
[0097]
由于不同的目标检测框可能具有不同的尺寸,为了平衡不同尺寸目标检测框带来的影响,可以利用尺度掩码对目标高斯掩码和背景高斯掩码分别进行处理。示例性的,构建的某个尺度掩码s如下所示:
[0098][0099][0100]
其中,hr和wr分别表示当前特征图像尺度下第r个目标检测框的高度和宽度,h和w分别表示当前特征图像的高度和宽度。
[0101]
接下来通过尺度掩码s分别对目标高斯掩码mg和背景高斯掩码mb进行如下处理,得到更新后的目标高斯掩码mg以及更新后的背景高斯掩码mb:
[0102][0103][0104]
其中,*表示对应位置元素相乘处理。
[0105]
在上述过程中,使用高斯掩码(目标高斯掩码和背景高斯掩码)对图像的目标(前景)和背景进行分离,能够引导模型蒸馏更关注目标实例的中心点区域特征,有利于提高模型的检测性能。另外,如果目标检测的对象是行人,则使用高斯掩码也可以得到更好的贴合性。
[0106]
103、根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码;
[0107]
接下来引入图像的注意力机制,模型蒸馏过程涉及的注意力主要包括空间维度的注意力和通道维度的注意力,本技术实施例在计算通道维度的注意力时将目标实例与背景进行区分,分别计算适配于目标实例以及背景的通道维度注意力,以进一步提高模型蒸馏的效果。
[0108]
由于第一特征图像是教师模型输出的,第二特征图像是学生模型输出的,因此本技术实施例用表示第一特征图像,上标t表示教师,下标c表示通道;用表示第二特征图像,上标s表示学生,下标c表示通道。
[0109]
将第一特征图像输入空间注意力模块进行计算,可以得到第一空间注意力掩码,用表示,其中上标t表示教师(根据教师模型输出的特征图像计算获得),下标s表示空间。空间注意力指的是对特征沿通道维数进行降维,在每个像素点仅用一个值来表示,这种注意力体现了像素在特征图像中的重要程度,响应越强的点表示存在目标的概率越大,
主要用来确定特征图像中应更加关注哪些空间位置的信息。
[0110]
将第一特征图像输入通道注意力模块进行计算,可以得到第一目标通道注意力掩码,用表示,其中上标t表示教师(根据教师模型输出的特征图像计算获得),上标t表示目标,下标c表示通道。将第一特征图像输入通道注意力模块进行计算,还可以得到第一背景通道注意力掩码,用表示,其中上标t表示教师(根据教师模型输出的特征图像计算获得),上标b表示背景,下标c表示通道。通道注意力指的是对特征沿长宽维度进行降维,每个值反应一个通道的响应,这种注意力体现了特征图像中每个通道的重要程度。其中,目标通道注意力主要用来确定特征图像中哪些通道对辨别目标是更重要的,背景通道注意力主要用来确定特征图像中哪些通道对辨别背景是更重要的。
[0111]
类似的,根据第二特征图像可以计算得到第二空间注意力掩码、第二目标通道注意力掩码以及第二背景通道注意力掩码。例如,将第二特征图像输入空间注意力模块进行计算,可以得到第二空间注意力掩码,用表示,其中上标s表示学生(根据学生模型输出的特征图像计算获得),下标s表示空间。将第二特征图像输入通道注意力模块进行计算,可以得到第二目标通道注意力掩码,用表示,其中上标s表示学生(根据学生模型输出的特征图像计算获得),上标t表示目标,下标c表示通道;还可以计算得到第二背景通道注意力掩码,用表示,其中上标s表示学生(根据学生模型输出的特征图像计算获得),上标b表示背景,下标c表示通道。
[0112]
具体的,所述根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码,可以包括:
[0113]
(1)根据所述第一特征图像和所述第一特征图像的通道数,计算得到第一中间变量;
[0114]
(2)根据所述第一特征图像的高度和宽度,以及所述第一中间变量,计算得到所述第一空间注意力掩码;
[0115]
(3)根据所述第一特征图像包含的目标检测框的数量、所述第一特征图像包含的每个目标检测框的高度和宽度,以及所述第一特征图像,计算得到第二中间变量;
[0116]
(4)根据所述第一特征图像的通道数和所述第二中间变量,计算得到所述第一目标通道注意力掩码;
[0117]
(5)根据所述第一特征图像的高度和宽度、预设的指示函数以及所述第一特征图像,计算得到第三中间变量;其中,所述指示函数根据所述背景高斯掩码构建;
[0118]
(6)根据所述第一特征图像的通道数和所述第三中间变量,计算得到所述第一背景通道注意力掩码。
[0119]
在计算第一空间注意力掩码时,首先根据第一特征图像以及第一特征图像的通道数c,计算得到一个中间变量g
t
(f),用第一中间变量表示,具体计算公式如下:
[0120][0121]
之后,根据第一特征图像的高度h和宽度w,以及第一中间变量g
t
(f),可以通过以下公式计算得到第一空间注意力掩码
[0122][0123]
在计算第一目标通道注意力掩码时,首先根据第一特征图像包含的目标检测框的数量n、第一特征图像包含的目标检测框的高度hr和宽度wr,以及第一特征图像计算得到另一个中间变量用第二中间变量表示,具体计算公式如下:
[0124][0125]
之后,根据第一特征图像的通道数c和第二中间变量可以通过以下公式计算得到第一目标通道注意力掩码
[0126][0127]
在计算第一背景通道注意力掩码时,首先根据第一特征图像的高度h和宽度w、预设的某个指示函数以及第一特征图像计算得到另一个中间变量用第三中间变量表示,具体计算公式如下:
[0128][0129]
其中,a(i,j)为设置的指示函数,具体定义如下:
[0130][0131]
表示前文所述的背景高斯掩码中的元素,m为的数量的总和。
[0132]
之后,根据第一特征图像的通道数c和第三中间变量可以通过以下公式计算得到第一背景通道注意力掩码
[0133][0134]
至此,第一空间注意力掩码第一目标通道注意力掩码以及第一背景通道
注意力掩码均计算完毕。
[0135]
所述根据所述第二特征图像计算得到第二空间注意力掩码、第二目标通道注意力掩码以及第二背景通道注意力掩码,可以包括:
[0136]
(1)根据所述第二特征图像和所述第二特征图像的通道数,计算得到第四中间变量;
[0137]
(2)根据所述第二特征图像的高度和宽度,以及所述第四中间变量,计算得到所述第二空间注意力掩码;
[0138]
(3)根据所述第二特征图像包含的目标检测框的数量、所述第二特征图像包含的每个目标检测框的高度和宽度,以及所述第二特征图像,计算得到第五中间变量;
[0139]
(4)根据所述第二特征图像的通道数和所述第五中间变量,计算得到所述第二目标通道注意力掩码;
[0140]
(5)根据所述第二特征图像的高度和宽度、所述指示函数以及所述第二特征图像,计算得到第六中间变量;
[0141]
(6)根据所述第二特征图像的通道数和所述第六中间变量,计算得到所述第二背景通道注意力掩码。
[0142]
计算第二空间注意力掩码第二目标通道注意力掩码以及第二背景通道注意力掩码的方法类似。在计算第二空间注意力掩码时,首先根据第二特征图像以及第二特征图像的通道数c,计算得到一个中间变量gs(f),用第四中间变量表示,具体计算公式如下:
[0143][0144]
之后,根据第二特征图像的高度h和宽度w,以及第四中间变量gs(f),可以通过以下公式计算得到第二空间注意力掩码
[0145][0146]
在计算第二目标通道注意力掩码时,首先根据第二特征图像包含的目标检测框的数量n、第二特征图像包含的目标检测框的高度hr和宽度wr,以及第二特征图像计算得到另一个中间变量用第五中间变量表示,具体计算公式如下:
[0147][0148]
之后,根据第二特征图像的通道数c和第五中间变量可以通过以下公式计算得到第二目标通道注意力掩码
[0149][0150]
在计算第二背景通道注意力掩码时,首先根据第二特征图像的高度h和宽度w、预设的某个指示函数以及第二特征图像计算得到另一个中间变量用第六中间变量表示,具体计算公式如下:
[0151][0152]
其中,a(i,j)为设置的指示函数,具体定义如下:
[0153][0154]
表示前文所述的背景高斯掩码中的元素,m为的数量的总和。
[0155]
之后,根据第二特征图像的通道数c和第六中间变量可以通过以下公式计算得到第二背景通道注意力掩码
[0156][0157]
至此,第二空间注意力掩码第二目标通道注意力掩码以及第二背景通道注意力掩码均计算完毕。
[0158]
接下来,可以根据第一空间注意力掩码第二空间注意力掩码第一目标通道注意力掩码第二目标通道注意力掩码所述第一背景通道注意力掩码以及所述第二背景通道注意力掩码计算得到模型蒸馏损失。
[0159]
具体的,设置模型蒸馏损失lm引导学生模型的各类掩码与教师模型相近使得学生模型关注的空间位置以及通道信息与教师模型相近,可以使用以下公式计算得到模型蒸馏损失lm:
[0160][0161]
其中,l表示回归损失函数,具体可以是l1 loss、l2 loss或者smooth l1 loss等函数。
[0162]
104、根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到目标蒸馏损失;
[0163]
接下来,根据第一特征图像第二特征图像第一空间注意力掩码以及第一目标通道注意力掩码可以计算得到目标蒸馏损失l
t
,主要通过均方误差来评估学生模型输出特征与教师模型输出特征的差异。另外,在计算目标蒸馏损失l
t
时,还可以引入
前文所述的目标高斯掩码mg,这样能够引导模型蒸馏更关注目标实例的中心点区域特征,有利于提高模型的检测性能。也即,具体可以根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到所述目标蒸馏损失。在本技术实施例的一种实现方式中,所述根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到所述目标蒸馏损失,可以包括:
[0164]
(1)计算所述第一空间注意力掩码和所述第一目标通道注意力掩码的乘积,得到目标融合蒸馏掩码;
[0165]
(2)根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码以及所述目标融合蒸馏掩码,计算得到所述目标蒸馏损失。
[0166]
具体计算时,可以先计算第一空间注意力掩码和第一目标通道注意力掩码的乘积,得到目标融合蒸馏掩码m
target
,也即然后,根据第一特征图像第二特征图像目标高斯掩码mg以及目标融合蒸馏掩码m
target
,可以通过以下公式计算得到目标蒸馏损失l
t
:
[0167][0168]
其中,c表示特征图像的通道数,h和w分别表示特征图像的高度和宽度,是目标融合蒸馏掩码m
target
,f表示维度变换,通常是用1*1的卷积来将第一特征图像和第二特征图像的通道维度对其即相等。在上述计算公式中,通过目标高斯掩码mg和目标融合蒸馏掩码m
target
来控制学生模型只学习经过掩码后的特征差异。
[0169]
105、根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到背景蒸馏损失;
[0170]
计算背景蒸馏损失lb的方法与计算目标蒸馏损失l
t
的方法类似,根据第一特征图像第二特征图像第一空间注意力掩码以及第一背景通道注意力掩码可以计算得到背景蒸馏损失lb。同样的,在计算背景蒸馏损失lb时,还可以引入前文所述的背景高斯掩码mb,这样能够引导模型蒸馏更关注目标实例的中心点区域特征,有利于提高模型的检测性能。也即,具体可以根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到所述背景蒸馏损失。在本技术实施例的一种实现方式中,所述根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到所述背景蒸馏损失,可以包括:
[0171]
(1)计算所述第一空间注意力掩码和所述第一背景通道注意力掩码的乘积,得到背景融合蒸馏掩码;
[0172]
(2)根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码以及所述背景融合蒸馏掩码,计算得到所述背景蒸馏损失。
[0173]
具体计算时,可以先计算第一空间注意力掩码和第一背景通道注意力掩码的乘积,得到背景融合蒸馏掩码m
background
,也即然后,根据第一特征图像第二特征图像背景高斯掩码mb以及背景融合蒸馏掩码m
background
,可以通过以下公式计算得到背景蒸馏损失lb:
[0174][0175]
其中,c表示特征图像的通道数,h和w分别表示特征图像的高度和宽度,是背景融合蒸馏掩码m
background
,f表示维度变换。
[0176]
106、根据所述目标蒸馏损失和所述背景蒸馏损失构建损失函数;
[0177]
在计算得到目标蒸馏损失l
t
和背景蒸馏损失lb之后,可以基于这两个蒸馏损失构建相应的损失函数,具体可以通过加权求和的方式构建损失函数。另外,损失函数中还可以加入前文中计算得到的模型蒸馏损失lm。
[0178]
进一步的,在获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像之后,还可以包括:
[0179]
将所述第二特征图像输入所述学生模型对应的目标检测头,并计算得到所述学生模型的目标检测损失。
[0180]
为了进一步提升损失函数的全面性,在构建损失函数时,还可以引入学生模型的目标检测损失。具体的,可以将第二特征图像输入学生模型对应的目标检测头(即目标检测网络中用于检测目标位置和类别的网络结构,例如可以是centernet检测头或者其它类型的检测头),并计算得到学生模型的目标检测损失l
l
。l
l
是centernet或者其它类型检测头的损失,其具体计算原理可以参照现有技术,在此不再赘述。
[0181]
最后,综合考虑目标蒸馏损失l
t
、背景蒸馏损失lb、模型蒸馏损失lm以及目标检测损失l
l
,构建得到的损失函数l如下所示:
[0182]
l=αl
l
+βl
t
+γlb+λlm[0183]
其中,α、β、γ、和λ为可以调节的超参数,主要用来平衡各部分不同的损失。
[0184]
107、基于所述损失函数,对所述学生模型的参数进行优化。
[0185]
在构建损失函数之后,可以基于该损失函数,对学生模型的参数进行优化,从而实现模型蒸馏效果。具体的,可以使用梯度下降反向传播算法来对学生模型的参数进行优化,使得损失函数l收敛至最小,此时学生模型能最大化地从教师模型处获取到知识。
[0186]
在本技术实施例中,首先将样本图像分别输入教师模型和学生模型,获取教师模型输出的第一特征图像和学生模型输出的第二特征图像;然后,根据第一特征图像计算得到空间注意力掩码、目标通道注意力掩码以及背景通道注意力掩码;之后,根据第一特征图像、第二特征图像、空间注意力掩码、目标通道注意力掩码以及背景通道注意力掩码等数据,分别计算得到目标蒸馏损失和背景蒸馏损失;最后,根据目标蒸馏损失和背景蒸馏损失构建损失函数,并基于该损失函数对学生模型的参数进行优化。上述过程在计算通道注意
力时会将目标与背景进行区分,分别计算适配于目标以及背景的通道级别注意力,得到目标通道注意力掩码以及背景通道注意力掩码,然后再分别计算得到目标蒸馏损失和背景蒸馏损失,从而分别引导目标与背景的蒸馏。这样处理能够细化蒸馏的粒度,在一定程度上提高目标检测的模型蒸馏效果。
[0187]
本技术实施例提供的一种目标检测知识蒸馏方法的原理示意图如图2所示,其基本的操作方法包括:将图像数据分别输入教师模型和学生模型,根据图像数据中的真值标签,通过高斯编码模块计算得到目标高斯掩码和背景高斯掩码;通过空间注意力模块分别计算得到教师模型的空间注意力掩码以及学生模型的空间注意力掩码;使用通道注意力模块分别计算得到教师模型的通道注意力掩码和学生模型的通道注意力掩码,其中通道注意力掩码包括目标通道注意力掩码和背景通道注意力掩码;基于教师模型的空间注意力掩码和通道注意力掩码、学生模型的空间注意力掩码和通道注意力掩码、目标高斯掩码和背景高斯掩码构建掩码损失,并分别计算目标融合蒸馏掩码和背景融合蒸馏掩码;接着,将教师模型输出的特征图像与目标融合蒸馏掩码相乘,得到教师模型目标蒸馏特征,将学生模型输出的特征图像与目标融合蒸馏掩码相乘,得到学生模型目标蒸馏特征,并基于教师模型目标蒸馏特征和学生模型目标蒸馏特征计算得到目标蒸馏损失;将教师模型输出的特征图像与背景融合蒸馏掩码相乘,得到教师模型背景蒸馏特征,将学生模型输出的特征图像与背景融合蒸馏掩码相乘,得到学生模型背景蒸馏特征,并基于教师模型背景蒸馏特征和学生模型背景蒸馏特征计算得到背景蒸馏损失;另外,还可以计算学生模型对应的检测头损失,最后通过目标蒸馏损失、背景蒸馏损失和检测头损失等构建损失函数,对学生模型的参数进行优化,实现模型的知识蒸馏。
[0188]
综上所述,本技术实施例基于centernet等算法的检测头,设计了一种基于高斯掩码对蒸馏特征进行区分的机制,将目标与背景分别蒸馏,并引导蒸馏方法更加关注目标的中心点区域特征。与此同时,本技术实施例采用实例级别的通道注意力机制,在计算通道维度注意力时将目标与背景进行区分,能够以更加细粒度的方式加强模型蒸馏方法的精确度,进一步提高学生模型从教师模型迁移知识的能力。
[0189]
应理解,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0190]
上面主要描述了一种目标检测知识蒸馏方法,下面将对一种目标检测知识蒸馏装置进行描述。
[0191]
请参阅图3,本技术实施例中一种目标检测知识蒸馏装置的一个实施例包括:
[0192]
图像输入模块301,用于将已标注目标检测框的样本图像分别输入教师模型和学生模型;
[0193]
特征图像获取模块302,用于获取所述教师模型输出的第一特征图像和所述学生模型输出的第二特征图像;
[0194]
第一注意力掩码计算模块303,用于根据所述第一特征图像计算得到第一空间注意力掩码、第一目标通道注意力掩码以及第一背景通道注意力掩码;
[0195]
目标蒸馏损失计算模块304,用于根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到目标蒸馏损失;
[0196]
背景蒸馏损失计算模块305,用于根据所述第一特征图像、所述第二特征图像、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到背景蒸馏损失;
[0197]
损失函数构建模块306,用于根据所述目标蒸馏损失和所述背景蒸馏损失构建损失函数;
[0198]
模型参数优化模块307,用于基于所述损失函数,对所述学生模型的参数进行优化。
[0199]
在本技术实施例的一种实现方式中,所述目标检测知识蒸馏装置还可以包括:
[0200]
高斯掩码计算模块,用于根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,通过高斯编码的方式计算得到目标高斯掩码和背景高斯掩码;
[0201]
所述目标蒸馏损失计算模块具体可以用于:根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码、所述第一空间注意力掩码以及所述第一目标通道注意力掩码,计算得到所述目标蒸馏损失;
[0202]
所述背景蒸馏损失计算模块具体可以用于:根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码、所述第一空间注意力掩码以及所述第一背景通道注意力掩码,计算得到所述背景蒸馏损失。
[0203]
进一步的,所述高斯掩码计算模块可以包括:
[0204]
中心点坐标获取单元,用于根据所述第一特征图像中包含的各个目标检测框的标签和/或所述第二特征图像中包含的各个目标检测框的标签,获取所述各个目标检测框的中心点坐标;
[0205]
高斯掩码计算单元,用于针对每个所述目标检测框,根据该目标检测框的高度和宽度设置高斯半径,并基于二维高斯公式和该目标检测框的中心点坐标计算得到该目标检测框的高斯掩码;
[0206]
目标高斯掩码构建单元,用于根据每个所述目标检测框的高斯掩码构建得到所述目标高斯掩码;
[0207]
背景高斯掩码构建单元,用于根据所述目标高斯掩码构建得到所述背景高斯掩码。
[0208]
更进一步的,所述高斯掩码计算模块还可以包括:
[0209]
尺度掩码构建单元,用于根据每个所述目标检测框的高度和宽度,以及所述背景高斯掩码,构建得到尺度掩码;
[0210]
目标高斯掩码更新单元,用于对所述目标高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述目标高斯掩码;
[0211]
背景高斯掩码更新单元,用于对所述背景高斯掩码和所述尺度掩码执行对应位置元素相乘处理,得到更新后的所述背景高斯掩码。
[0212]
进一步的,所述目标蒸馏损失计算模块可以包括:
[0213]
目标融合蒸馏掩码计算单元,用于计算所述第一空间注意力掩码和所述第一目标通道注意力掩码的乘积,得到目标融合蒸馏掩码;
[0214]
目标蒸馏损失计算单元,用于根据所述第一特征图像、所述第二特征图像、所述目标高斯掩码以及所述目标融合蒸馏掩码,计算得到所述目标蒸馏损失;
[0215]
所述背景蒸馏损失计算模块可以包括:
[0216]
背景融合蒸馏掩码计算单元,用于计算所述第一空间注意力掩码和所述第一背景通道注意力掩码的乘积,得到背景融合蒸馏掩码;
[0217]
背景蒸馏损失计算单元,用于根据所述第一特征图像、所述第二特征图像、所述背景高斯掩码以及所述背景融合蒸馏掩码,计算得到所述背景蒸馏损失。
[0218]
在本技术实施例的一种实现方式中,所述目标检测知识蒸馏装置还可以包括:
[0219]
第二注意力掩码计算模块,用于根据所述第二特征图像计算得到第二空间注意力掩码、第二目标通道注意力掩码以及第二背景通道注意力掩码;
[0220]
模型蒸馏损失计算模块,用于根据所述第一空间注意力掩码、所述第二空间注意力掩码、所述第一目标通道注意力掩码、所述第二目标通道注意力掩码、所述第一背景通道注意力掩码以及所述第二背景通道注意力掩码,计算得到模型蒸馏损失;
[0221]
所述损失函数构建模块具体可以用于:根据所述目标蒸馏损失、所述背景蒸馏损失以及所述模型蒸馏损失,构建所述损失函数。
[0222]
进一步的,所述第一注意力掩码计算模块可以包括:
[0223]
第一中间变量计算单元,用于根据所述第一特征图像和所述第一特征图像的通道数,计算得到第一中间变量;
[0224]
第一空间注意力掩码计算单元,用于根据所述第一特征图像的高度和宽度,以及所述第一中间变量,计算得到所述第一空间注意力掩码;
[0225]
第二中间变量计算单元,用于根据所述第一特征图像包含的目标检测框的数量、所述第一特征图像包含的每个目标检测框的高度和宽度,以及所述第一特征图像,计算得到第二中间变量;
[0226]
第一目标通道注意力掩码计算单元,用于根据所述第一特征图像的通道数和所述第二中间变量,计算得到所述第一目标通道注意力掩码;
[0227]
第三中间变量计算单元,用于根据所述第一特征图像的高度和宽度、预设的指示函数以及所述第一特征图像,计算得到第三中间变量;其中,所述指示函数根据所述背景高斯掩码构建;
[0228]
第一背景通道注意力掩码计算单元,用于根据所述第一特征图像的通道数和所述第三中间变量,计算得到所述第一背景通道注意力掩码;
[0229]
所述第二注意力掩码计算模块可以包括:
[0230]
第四中间变量计算单元,用于根据所述第二特征图像和所述第二特征图像的通道数,计算得到第四中间变量;
[0231]
第二空间注意力掩码计算单元,用于根据所述第二特征图像的高度和宽度,以及所述第四中间变量,计算得到所述第二空间注意力掩码;
[0232]
第五中间变量计算单元,用于根据所述第二特征图像包含的目标检测框的数量、所述第二特征图像包含的每个目标检测框的高度和宽度,以及所述第二特征图像,计算得到第五中间变量;
[0233]
第二目标通道注意力掩码计算单元,用于根据所述第二特征图像的通道数和所述第五中间变量,计算得到所述第二目标通道注意力掩码;
[0234]
第六中间变量计算单元,用于根据所述第二特征图像的高度和宽度、所述指示函
数以及所述第二特征图像,计算得到第六中间变量;
[0235]
第二背景通道注意力掩码计算单元,用于根据所述第二特征图像的通道数和所述第六中间变量,计算得到所述第二背景通道注意力掩码。
[0236]
本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如图1表示的任意一种目标检测知识蒸馏方法。
[0237]
本技术实施例还提供一种计算机程序产品,当该计算机程序产品在终端设备上运行时,使得终端设备执行如图1表示的任意一种目标检测知识蒸馏方法。
[0238]
图4是本技术一实施例提供的终端设备的示意图。如图4所示,该实施例的终端设备4包括:处理器40、存储器41以及存储在所述存储器41中并可在所述处理器40上运行的计算机程序42。所述处理器40执行所述计算机程序42时实现上述各个目标检测知识蒸馏方法的实施例中的步骤,例如图1所示的步骤101至107。或者,所述处理器40执行所述计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图3所示模块301至307的功能。
[0239]
所述计算机程序42可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器41中,并由所述处理器40执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序42在所述终端设备4中的执行过程。
[0240]
所称处理器40可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0241]
所述存储器41可以是所述终端设备4的内部存储单元,例如终端设备4的硬盘或内存。所述存储器41也可以是所述终端设备4的外部存储设备,例如所述终端设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器41还可以既包括所述终端设备4的内部存储单元也包括外部存储设备。所述存储器41用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
[0242]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0243]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0244]
在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0245]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0246]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。