1.本发明涉及图像处理技术领域,特别是一种anchor-free算法转换为anchor-based算法的方法及系统。
背景技术:2.在图像处理领域,目标检测一直是研究最多和应用最广的分支方向。在传统图像算法中,利用滑窗技术、支持向量机等手段去找到目标的位置。以rcnn为起点,深度学习技术在目标检测方向也产生了巨大的影响。
3.目标检测领域中的深度学习技术,从不同的角度可以分为不同类型:从模型结构的角度,分为一阶段算法和二阶段算法;从是否基于锚框的角度,分为anchor-based的算法和anchor-free的算法等。anchor-based算法是指先在图像上设定一系列形状各异、固定大小的先验框(anchor或说priorbox,以下统称anchor),由这些框去预测目标的位置和类别,例如rcnn系列、ssd、retina、yolov3等;anchor-free算法是指不设定先验框,直接在特征图上预测目标的位置和类别,例如fcos、centernet等。
4.anchor-based算法和anchor-free算法各有优劣,往往针对不同场景特点可以选择不同的算法。但是,在模型部署阶段,不同设备端框架对两种算法的支持性不同、两种算法的后处理截然不同。鉴于anchor-based算法应用较早,大多设备端框架支持anchor-based算法的直接部署,而不支持anchor-free算法的部署。因此,把anchor-free算法转换为anchor-based算法,可以打通两者之间的差异,方便在各种情况下统一处理。
技术实现要素:5.鉴于此,本发明提供一种anchor-free算法转换为anchor-based算法的方法及系统,能够更快捷地部署anchor-free算法,将anchor-free算法与anchor-based算法统一成一套操作,便于后续应用使用。
6.本发明公开了一种anchor-free算法转换为anchor-based算法的方法,其包括:
7.步骤1:计算anchor-free算法中所有grid信息,以及获取anchor-free算法的预测值;
8.步骤2:根据anchor-based算法生成anchor的具体规则,生成与anchor-free算法中grid的形状及数量相同的anchor;
9.步骤3:根据anchor-free算法的grid预测值和anchor-based算法的anchor预测值,建立anchor-free算法转换为anchor-based算法的转换关系;
10.步骤4:根据所述转换关系,在神经网络中设置相应的层,实现将anchor-free预测值转换为anchor-based预测值。
11.可选的,所述计算anchor-free算法中所有grid信息,包括:
12.用于预测物体的特征图,其下采样倍数在其对应的原图中平铺即为grid。
13.可选的,所述获取anchor-free算法的预测值,包括:
14.将所述原图输入已经训练好的anchor-free模型,其输出值即预测值。
15.可选的,所述步骤2的具体步骤为:
16.设置anchor-based算法中对原图的下采样倍数、anchor尺寸和长宽,生成与anchor-free算法中grid的形状和数量均相同的anchor。
17.可选的,所述anchor预测值是对目标物体的中心点坐标、长和宽的编码值。
18.可选的,所述grid预测值为grid的中心点分别到目标物体的真实位置框的四条边的距离。
19.可选的,所述grid预测值和anchor预测值是对同一个目标物体的不同表示。
20.可选的,所述步骤4包括:
21.将由anchor-free主体结构和anchor-free后处理构成的anchor-free模型转为由anchor-free主体结构、转换结构和anchor-based后处理构成的anchor-based结构;所述主体结构包括卷积、批归一化、激活、池化、反卷积、相加、变形。
22.可选的,所述anchor-free主体结构的输出值为anchor-free算法中grid的输出值;所述转换结构用于将anchor-free主体结构的输出值转换得到的anchor-based算法中对应的anchor预测值作为其输出的值,并将该输出的值作为anchor-based后处理所需要的输入值。
23.本发明还公开了一种anchor-free算法转换为anchor-based算法的系统,包括:
24.计算获取模块,用于计算anchor-free算法中所有grid信息,以及获取anchor-free算法的预测值;
25.生成模块,用于根据anchor-based算法生成anchor的具体规则,生成与anchor-free算法中grid的形状及数量相同的anchor;
26.转换模块,用于根据anchor-free算法的grid预测值和anchor-based算法的anchor预测值,建立anchor-free算法转换为anchor-based算法的转换关系;
27.实现模块,用于根据所述转换关系,在神经网络中设置相应的层,实现将anchor-free预测值转换为anchor-based预测值。
28.由于采用了上述技术方案,本发明具有如下的优点:本发明能够更快捷地部署anchor-free算法,将anchor-free算法与anchor-based算法统一成一套操作,便于后续应用使用。
附图说明
29.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
30.图1为本发明实施例的一种anchor-free算法转换为anchor-based算法的方法的流程示意图;
31.图2为本发明实施例的一种anchor-free算法转换为anchor-based算法的系统结构示意图;
32.图3为本发明实施例的一种一阶目标检测算法原理示意图;
33.图4本发明实施例的一种fcos算法利用grid预测物体的原理示意图。
具体实施方式
34.结合附图和实施例对本发明作进一步说明,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
35.参见图1,本发明提供了一种anchor-free算法转换为anchor-based算法的方法的实施例,其包括:
36.s101:计算anchor-free算法中所有grid信息,以及获取anchor-free算法的预测值;
37.s102:根据anchor-based算法生成anchor的具体规则,生成与anchor-free算法中grid的形状及数量相同的anchor;
38.s103:根据anchor-free算法的grid预测值和anchor-based算法的anchor预测值,建立anchor-free算法转换为anchor-based算法的转换关系;
39.s104:根据转换关系,在神经网络中设置相应的层,实现将anchor-free预测值转换为anchor-based预测值。
40.本实施例中,计算anchor-free算法中所有grid信息,包括:
41.用于预测物体的特征图,其下采样倍数在其对应的原图中平铺即为grid。例如某特征图是经过16倍下采样得到的,那么它在原图上的grid就是铺满原图的16*16大小的方格。
42.本实施例中,获取anchor-free算法的预测值,包括:
43.将原图输入已经训练好的anchor-free模型,其输出值即预测值。
44.本实施例中,步骤2的具体步骤为:
45.设置anchor-based算法中对原图的下采样倍数、anchor尺寸和长宽,生成与anchor-free算法中grid的形状和数量均相同的anchor。
46.本实施例中,anchor预测值是对目标物体的中心点坐标、长和宽的编码值。
47.本实施例中,grid预测值为grid的中心点分别到目标物体的真实位置框的四条边的距离。
48.本实施例中,grid预测值和anchor预测值是对同一个目标物体的不同表示。
49.本实施例中,步骤4包括:
50.将由anchor-free主体结构和anchor-free后处理构成的anchor-free模型转为由anchor-free主体结构、转换结构和anchor-based后处理构成的anchor-based结构。其中,主体结构包括卷积、批归一化、激活、池化、反卷积、相加、变形。
51.本实施例中,anchor-free主体结构的输出值为anchor-free算法中grid的输出值;转换结构用于将anchor-free主体结构的输出值转换得到的anchor-based算法中对应的anchor预测值作为其输出的值,并将该输出的值作为anchor-based后处理所需要的输入值。
52.参见图2,本发明还提供了一种anchor-free算法转换为anchor-based算法的系统的实施例,包括:
53.计算获取模块201,用于计算anchor-free算法中所有grid信息,以及获取anchor-free算法的预测值;
54.生成模块202,用于根据anchor-based算法生成anchor的具体规则,生成与anchor-free算法中grid的形状及数量相同的anchor;
55.转换模块203,用于根据anchor-free算法的grid预测值和anchor-based算法的anchor预测值,建立anchor-free算法转换为anchor-based算法的转换关系;
56.实现模块204,用于根据转换关系,在神经网络中设置相应的层,实现将anchor-free预测值转换为anchor-based预测值。
57.本发明还提供了一个更为具体的实施例:
58.(1)一阶检测算法的通用做法
59.给定一张原图,输入模型中,模型经过卷积、批归一化、激活、池化、反卷积、相加、变形这一系列操作后,得到多张不同分辨率的特征图。特征图上的每一个像素点,对应到原图上的感受野,称为grid。anchor-free算法根据grid与目标物体之间的关系进行建模,由grid直接预测物体信息(位置、类别等);anchor-based算法在grid处设置一定数量和形状的anchor,由anchor预测物体信息。
60.具体的,如图3所示。原图中有一个目标物体。原图经过模型的卷积、批归一化、激活、池化、反卷积、相加、变形这一系列操作后,得到特征图1、特征图2和特征图3,共三张特征图。以特征图2为例,它相对于原图下采样了16倍,它的每一个像素点映射到原图上,都是一个16*16大小的区域,称为grid。其中一个标灰色的grid,它落在了目标物体的框内。
61.(2)anchor-free
62.anchor-free算法,没有设置anchor这一操作,而是,每一个grid直接预测物体的信息,以经典的fcos算法为例,图4中,灰色grid的中心点落在了目标物体的gt框内,那么,它就负责预测该目标。该grid需要学习和预测的值设定为l
*
、r
*
、t
*
、b
*
,即grid中心点到gt框四条边的距离。
63.(3)anchor-based
64.anchor-based算法在每一个grid区域的中心点处,设置一定数量、形状的anchor(设置规则因不同算法而异)。例如图3中的灰色grid产生的三个形状不同的黑色框。任一anchor的中心点坐标和长宽分别用xa、ya、wa、ha表示,目标物体的中心点坐标和长宽分别x、y、w、h表示。anchor预测的不是x、y、w、h这几个值,而是编码值。具体来说,在训练阶段,用xa、ya、wa、ha对x、y、w、h进行编码,作为anchor学习的目标。测试阶段,对anchor输出值进行相应的逆向解码,解码出来的值就是物体的真实坐标。具体的编码规则,以经典的faster-rcnn为例:
65.t
x
=(x-xa)/wa,ty=(y-ya)/ha,
66.tw=log(w/wa),th=log(h/ha),
[0067][0068][0069]
在训练阶段,x、y分别减去xa、ya并除以wa、ha,得到t
x
、ty;w、h分别除以wa、ha再取log函数,得到tw、th。t
x
、ty、tw、th是模型学习的真正目标。训练完后,使用模型时,模型输出值是
用输出值去逆向解码,得到x
*
、y
*
、w
*
、h
*
,即模型预测物体所在的中心点位置和长宽。
[0070]
以上是anchor-based算法的过程:1.特征图每一个像素点在原图对应的grid处,按一定规则生成一些anchor;2.anchor和其匹配上的目标gt之间,做编码,让模型去学习;3.解码模型预测值,得到物体位置。
[0071]
(4)anchor-free转anchor-based
[0072]
如果把grid看待成:数量为1、形状恰好为grid大小的anchor。这就把anchor-free和anchor-based联系了起来。在图3中,即anchor-based产生的三个黑色anchor,设置成一个和灰色框恰好重叠的anchor。
[0073]
一个anchor-free模型,训练好之后,每个grid的输出值,是l
*
、r
*
、t
*
、b
*
;l
*
+r
*
就等价于是那个虚拟anchor预测的w
*
;b
*
+t
*
就等价于是h
*
,中心点位置也可以同理对应起来。
[0074]
综上,一个anchor-free模型,对输出值做一些操作,就可以转换为一个anchor-based模型。
[0075]
(5)具体转换过程
[0076]
记anchor-free算法中某个grid在原图中的左上角坐标是(x_min,y_min)、右下角坐标是(x_max,y_max);该grid输出的预测值是l
*
、r
*
、t
*
、b
*
,分别代表了预测物体的四条边到grid中心点的距离,如图4所示。那么,转换过程中有两个转换:grid转成对应的anchor,grid预测值转成对应的anchor预测值。
[0077]
1)grid转成对应的anchor的过程,就是按照anchor-based算法中生成anchor的规则,来生成一个恰好和左上角坐标为(x_min,y_min)、右下角坐标为(x_max,y_max)这个形状一模一样的anchor。以retinanet为例,设其下采样倍数是stride,anchor尺寸设置为scale,anchor长宽比设置为ar,那么retina生成的anchor形状是:
[0078]
长
[0079]
宽
[0080]
该anchor要和(x_min,y_min)(x_max,y_max)重合,也就是令:
[0081][0082][0083]
在这两个等式中,x_min、x_max、y_min、y_max、stride都是已知数,那么可以解出scale和ar的值。也就是,在retina的配置文件里,可以填入解出来的scale和ar的值,这样它生成的anchor,就完全和anchor-free算法里的每个grid重合。
[0084]
2)grid预测值转anchor预测值。anchor的预测值是即对目标物体的中心点、长宽的编码值。按照规则解码,得到预测物体的中心点(x
*
、y
*
)、长宽(w
*
、h
*
)。解码过程由下述公式
[0085]
t
x
=(x-xa)/wa,ty=(y-ya)/ha,
[0086]
tw=log(w/wa),th=log(h/ha),
[0087]
[0088][0089]
可以推算:
[0090][0091][0092][0093][0094]
其中,anchor-based算法的x
*
、y
*
、w
*
、h
*
和anchor-free算法的l
*
、r
*
、t
*
、b
*
只是对同一个物体的不同表示方法而已,显然的:
[0095]
x
*
=x
a-l
*
+(l
*
+r
*
)
÷2ꢀꢀꢀ
(5)
[0096]y*
=y
a-t
*
+(t
*
+b
*
)
÷2ꢀꢀꢀ
(6)
[0097]w*
=l
*
+r
*
ꢀꢀꢀ
(7)
[0098]h*
=t
*
+b
*
ꢀꢀꢀ
(8)
[0099]
上述公式(1)至公式(8)的等式的右边是相等的:
[0100][0101][0102][0103][0104]
将公式(9)至(12)的等式分别做变形,依次得到公式(13)至公式(16):
[0105][0106][0107][0108][0109]
也就是说,anchor-free模型的输出值l
*
、r
*
、t
*
、b
*
,结合相应grid的长宽(即anchor-based中anchor的长wa、宽ha),根据上面四个公式做转换,可以得到anchor-based算法中模型的输出值
[0110]
基于上述转换公式,就可以设置相应的层,来实现anchor-free转anchor-based。具体的,anchor-free模型由anchorfree主体结构+anchorfree后处理构成,把一个训练好的anchor-free模型转anchor-based,那么,主体结构不会有改动,anchor-based算法的后处理也是固定的,那么,anchor-based模型可以由anchorfree主体结构+转换结构+anchorbased后处理构成。anchorfree主体结构输出的是l
*
、r
*
、t
*
、b
*
,转换结构做的工作是
最后那四个公式。以为例,anchorfree某两个卷积层conv1,conv2,分别输出r
*
、l
*
,那么在转换结构中,第一层就是一个减法层,输入是conv1conv2的输出;第二层是一个除法层,输入是减法层的输出,以及设置好固定的除数2a。其余三个公式同理。那么,转换结构输出的值,就是anchor-based后处理所需要的输入值。
[0111]
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0112]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,所述计算机可读记录介质包括用于以计算机(例如计算机)可读的形式存储或传送信息的任何机制。
[0113]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。