通过人工智能加速器处理特征图的方法和装置与流程



1.本公开涉及集成电路技术领域,尤其是一种通过人工智能加速器处理特征图的方法和装置。


背景技术:



2.由深度卷积(depthwise conv)和点卷积(pointwise conv)两部分构成的深度可分离卷积(depthwise separable convolution)目前应用较为广泛。
3.具体实现时,一般先对待进行深度可分离卷积的特征图进行深度卷积运算,待特征图中的所有数据均完成深度卷积运算且将所有深度卷积结果均存储至双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,ddr)之后,再利用ddr中存储的数据进行点卷积运算,以实现特征图的深度可分离卷积。


技术实现要素:



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.基于本公开上述实施例提供的通过人工智能加速器处理特征图的方法和装置、神经网络模型的编译方法和装置、计算机可读存储介质及电子设备,基于合并卷积层的深度卷积参数和点卷积参数,再通过引入缓存区,有效实现了深度卷积和点卷积运算的融合,从而达到高效快捷地实现深度可分离卷积;此外,本公开实施例由于未使用位于人工智能
(artificialintelligence,ai)加速器外部的ddr,仅通过人工智能加速器内部的缓存实现深度可分离卷积,从而能够有效地提升深度可分离卷积的运算速度。
附图说明
37.通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
38.图1-1是相关技术中普通卷积的卷积核形状的示意图。
39.图1-2是相关技术中深度卷积的卷积核形状的示意图。
40.图1-3是相关技术中点卷积的卷积核形状的示意图。
41.图2-1是相关技术中普通卷积的计算方式的示意图。
42.图2-2是相关技术中深度卷积+点卷积的深度可分离卷积的计算方式的示意图。
43.图3是本公开一示例性实施例中深度可分离卷积的实现原理图。
44.图4是本公开一示例性实施例提供的通过人工智能加速器处理特征图的方法的流程示意图。
45.图5是本公开另一示例性实施例提供的通过人工智能加速器处理特征图的方法的流程示意图。
46.图6是本公开再一示例性实施例提供的通过人工智能加速器处理特征图的方法的流程示意图。
47.图7是本公开一示例性实施例提供的神经网络模型的编译方法的流程示意图。
48.图8是本公开另一示例性实施例提供的神经网络模型的编译方法的流程示意图。
49.图9是本公开一示例性实施例中深度可分离卷积的实现原理图。
50.图10是本公开一示例性实施例提供的通过人工智能加速器处理特征图的装置的结构示意图。
51.图11是本公开另一示例性实施例提供的通过人工智能加速器处理特征图的装置的结构示意图。
52.图12是本公开再一示例性实施例提供的通过人工智能加速器处理特征图的装置的结构示意图。
53.图13是本公开一示例性实施例提供的神经网络模型的编译装置的结构示意图。
54.图14是本公开另一示例性实施例提供的神经网络模型的编译装置的结构示意图。
55.图15是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
56.下面,将参考附图详细地描述根据本公开的示例实施例。所描述的实施例仅仅是本公开的一部分实施例,而不是全部实施例,本公开不受示例实施例的限制。
57.应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
58.本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别
不同步骤、设备或模块等,不代表特定技术含义和必然逻辑顺序。“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
59.还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
60.本公开中术语“和/或”,仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
61.还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
62.应当明白,附图中示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
63.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
64.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
65.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
66.本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
67.终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
68.申请概述
69.深度卷积和点卷积是两种特殊类型的卷积;其中,深度卷积也可以称为dw卷积,点卷积也可以称为pw卷积。如图1-1所示,普通卷积中卷积核形状是n*dk*dk*m;如图1-2所示,深度卷积中卷积核形状是m*dk*dk*1;如图1-3所示,点卷积中卷积核形状是n*1*1*m。
70.由深度卷积和点卷积两部分构成的深度可分离卷积目前应用较为广泛,普通卷积的计算方式可以参见图2-1,深度卷积+点卷积的深度可分离卷积的计算方式可以参见图2-2。
71.需要说明的是,在具体实现深度可分离卷积时,一般先对待进行深度可分离卷积的特征图进行深度卷积运算,待特征图中的所有数据均完成深度卷积运算且将所有深度卷积结果均存储至人工智能加速器内部的ddr之后,再利用ddr中存储的数据进行点卷积运算。这样,完成特征图的深度可分离卷积需要花费非常长的时间,运算速度慢,难以较好地
满足实际需求。
72.示例性系统
73.为了解决深度可分离卷积运算速度慢,难以较好地满足实际需求的技术问题,如图3所示,本公开可以分别从神经网络模型的编译阶段和执行阶段进行改进;其中,在编译阶段,可以对深度卷积层和点卷积层进行合并,得到合并卷积层,为合并卷积层分配缓存区,并将合并卷积层和缓存区用于指令生成;在执行阶段,可以通过编译阶段生成的指令的执行,高效快捷地实现深度可分离卷积。
74.示例性方法
75.图4是本公开一示例性实施例提供的通过人工智能加速器处理特征图的方法的流程示意图。图4所示的方法包括步骤410、步骤420、步骤430、步骤440、步骤450和步骤460,下面分别对各步骤进行说明。
76.步骤410,确定目标神经网络模型中的合并卷积层,合并卷积层的层参数包括深度卷积参数和点卷积参数。
77.需要说明的是,目标神经网络模型可以为通过下文中的神经网络模型的编译方法编译得到的任一神经网络模型,目标神经网络模型中可以包括合并卷积层,以及除了合并卷积层之外的其他网络层。
78.合并卷积层的层参数可以包括深度卷积参数和点卷积参数;其中,深度卷积参数是指实现深度卷积运算所需的参数,点卷积参数是指实现点卷积运算所需的参数。可选地,深度卷积参数可以包括深度卷积核、步长值(dw stride)、填充值(dw paddings)等,深度卷积核承载有卷积核形状(dw kernel shape)、权重值(dw weight)等信息;点卷积参数可以包括点卷积核,点卷积核承载有卷积核数量(pw kernel num)、权重值(pw weight)等信息。
79.除了合并卷积层之外的其他网络层包括但不限于深度卷积层、点卷积层、池化层、修正线性单元(rectified linear unit,relu)层等。
80.步骤420,确定合并卷积层对应的缓存区。
81.需要说明的是,合并卷积层对应的缓存区可以为:在编译阶段,编译器给合并卷积层分配的缓存区。可选地,缓存区可以为芯片的静态随机存取存储器(static random-access memory,sram)中的某一区域;缓存区也可以称为temporary buffer。
82.步骤430,基于深度卷积参数,对合并卷积层的输入特征图进行深度卷积运算。
83.在步骤430中,可以基于深度卷积参数中的深度卷积核、步长值、填充值,对合并卷积层的输入特征图进行深度卷积运算,即对输入特征图的每个通道单独进行卷积操作。
84.假设填充值不为0,则可以先基于填充值,对合并卷积层的输入特征图进行边缘填充处理,以得到经边缘填充处理后的输入特征图,例如,在填充值为1的情况下,可以为输入特征图的上下左右分别填充一个像素。
85.接下来,可以基于步长值,将深度卷积核在经边缘填充处理后的输入特征图上滑动,在深度卷积核滑动的同时,针对深度卷积核所覆盖的区域的每个通道与深度卷积核中的相应通道,进行元素对应相乘后求和的运算。
86.步骤440,将深度卷积运算得到的至少两个深度卷积结果依次缓存至缓存区,至少两个深度卷积结果中的任意两个深度卷积结果对应输入特征图中的不同局部区域。
87.需要说明的是,深度卷积运算得到的任一深度卷积结果对应输入特征图中的一个
局部区域,该深度卷积结果与该局部区域之间的关系可以理解为:深度卷积核覆盖的区域仅包括该局部区域,或者,深度卷积核覆盖的区域仅包括该局部区域和输入特征图中的部分边缘填充区域时,将深度卷积核覆盖的区域的每个通道与深度卷积核中的相应通道进行元素对应相乘后求和的运算,以得到深度卷积核覆盖的区域的每个通道各自对应的运算结果值,这些运算结果值可以组成该深度卷积结果。也即,每个深度卷积结果的宽度和高度均为1,通道数与输入特征图的通道数相同。
88.在深度卷积核滑动的过程中,深度卷积核覆盖的区域不断变化,因此能够依次得到对应输入特征图中的不同局部区域的多个深度卷积结果,在每次得到一深度卷积结果之后,可以将得到的该深度卷积结果缓存至缓存区。
89.步骤450,基于点卷积参数,对缓存区缓存的深度卷积结果进行点卷积运算。
90.在步骤450中,可以基于点卷积参数中的点卷积核,对缓存区缓存的深度卷积结果进行点卷积运算,即对缓存区缓存的深度卷积结果进行通道方向的加权求和。
91.步骤460,基于点卷积运算得到的点卷积结果,确定合并卷积层的输出特征图。
92.由于深度卷积运算得到的所有深度卷积结果会依次缓存至缓存区,通过执行步骤450,可以得到所有深度卷积结果各自对应的点卷积结果,这样,在步骤460中,通过汇总所有深度卷积结果各自对应的点卷积结果,可以得到合并卷积层的输出特征图。
93.本公开的实施例中,基于合并卷积层的深度卷积参数和点卷积参数,再通过引入缓存区,有效实现了深度卷积和点卷积运算的融合,从而达到高效快捷地实现深度可分离卷积;此外,本公开的实施例由于未使用位于人工智能加速器外部的ddr,仅通过人工智能加速器内部的缓存实现深度可分离卷积,从而能够有效地提升深度可分离卷积的运算速度。
94.在图4所示实施例的基础上,如图5所示,步骤450,包括步骤4505、步骤4507、步骤4509和步骤4511。
95.步骤4505,确定缓存区的空间占用率与预设空间占用率之间的第一大小关系。
96.可选地,预设空间占用率可以为85%、90%、95%等,在此不再一一列举。
97.在步骤4505中,可以确定缓存区当前的空间占用率,并将缓存区当前的空间占用率与预设空间占用率进行大小比较,以得到第一大小关系。
98.步骤4507,确定缓存区缓存的深度卷积结果的数量与第一预设数量之间的第二大小关系。
99.可选地,第一预设数量可以为2、3、4、5等,在此不再一一列举。
100.在步骤4507中,可以确定缓存区当前缓存的深度卷积结果的数量,并将缓存区当前缓存的深度卷积结果的数量与第一预设数量进行大小比较,以得到第二大小关系。
101.步骤4509,确定当前时刻与预设时刻之间的时间关系。
102.这里,预设时刻可以为预先设定的进行点卷积运算的时刻。可选地,可以将某一特定时刻作为起始时刻,且每间隔预设时长的时刻均作为预设时刻,例如,t1为起始时刻,预设时长为t,则t1+t、t1+2t、
……
、t1+nt均可以作为预设时刻。
103.在步骤4509中,可以通过调用系统时钟函数,确定当前时刻,接下来可以确定当前时刻与预设时刻之间的时间关系,时间关系可以用于表征当前时刻与预设时刻在时间上的先后关系。
104.步骤4511,响应于第一大小关系、第二大小关系、时间关系中的至少一者用于触发点卷积运算,基于点卷积参数,对缓存区缓存的深度卷积结果进行点卷积运算。
105.假设第一大小关系表征缓存区当前的空间占用率大于或等于预设空间占用率为第一条件,在第一条件满足的情况下,可以判定第一大小关系用于触发点卷积运算,在第一条件不满足的情况下,可以判定第一大小关系并非用于触发点卷积运算。
106.假设第二大小关系表征缓存区当前缓存的深度卷积结果的数量大于或等于第一预设数量为第二条件,在第二条件满足的情况下,可以判定第二大小关系用于触发点卷积运算,在第二条件不满足的情况下,可以判定第二大小关系并非用于触发点卷积运算。
107.假设时间关系表征当前时刻等于预设时刻为第三条件,在第三条件满足的情况下,可以判定时间关系用于触发点卷积运算,在第三条件不满足的情况下,可以判定时间关系并非用于触发点卷积运算。
108.需要说明的是,在第一条件、第二条件、第三条件中的至少一者满足的情况下,可以默认缓存区缓存有充足的深度卷积结果,如果不及时针对这些深度卷积结果进行点卷积运算,这些深度卷积结果可能会被后续缓存至缓存区中的深度卷积结果覆盖,从而导致部分点卷积结果的缺失。有鉴于此,本公开的实施例中,可以参考第一大小关系、第二大小关系和时间关系,高效快捷地确定用于触发点卷积运算的时机,以便在缓存区缓存有充足的深度卷积结果时,及时针对这些深度卷积结果进行点卷积运算,从而有效地保证最终得到的合并卷积层的输出特征图的完整性和准确性。
109.在图4所示实施例的基础上,如图6所示,步骤440,包括步骤4401。
110.步骤4401,将深度卷积运算得到的至少两个深度卷积结果依次缓存至缓存区中的第一缓存子区。
111.这里,缓存区可以包括第一缓存子区和第二缓存子区。可选地,第一缓存子区和第二缓存子区的空间大小可以相同,也可以不同。
112.步骤450,包括步骤4513和步骤4515。
113.步骤4513,将第一缓存子区缓存的深度卷积结果转存至第二缓存子区。
114.可选地,可以在第一缓存子区的空间占用率大于或等于预设空间占用率的情况下,将第一缓存子区缓存的深度卷积结果转存至第二缓存子区;或者,可以在第一缓存子区缓存的深度卷积结果的数量大于或等于第一预设数量的情况下,将第一缓存子区缓存的深度卷积结果转存至第二缓存子区。
115.可选地,在将第一缓存子区缓存的深度卷积结果转存至第二缓存子区时,可以清空第一缓存子区缓存的深度卷积结果。
116.步骤4515,基于点卷积参数,对第二缓存子区缓存的深度卷积结果进行点卷积运算。
117.可选地,可以在第二缓存子区的空间占用率大于或等于预设空间占用率,第二缓存子区缓存的深度卷积结果的数量大于或等于第一预设数量,当前时刻等于预设时刻这三个条件中的至少一个条件满足的情况下,基于点卷积参数,对第二缓存子区缓存的深度卷积结果进行点卷积运算。
118.本公开的实施例中,通过将缓存区划分为第一缓存子区和第二缓存子区,第一缓存子区可以用于直接缓存深度卷积运算得到的深度卷积结果,第二缓存子区缓存的深度卷
积结果可以用于点卷积运算,这样,可以认为第一缓存子区专门分配给深度卷积运算使用,第二缓存子区专门分配给点卷积运算使用,由此可以实现深度卷积运算和点卷积运算的并发执行,从而能够进一步提升深度可分离卷积的运算速度。
119.图7是本公开一示例性实施例提供的神经网络模型的编译方法的流程示意图。图7所示的方法包括步骤710、步骤720、步骤730、步骤740和步骤750,下面分别对各步骤进行说明。
120.步骤710,确定待编译神经网络模型。
121.需要说明的是,待编译神经网络模型是指需要进行编译的神经网络模型,待编译神经网络模型可以包括多个网络层,多个网络层包括但不限于深度卷积层、点卷积层、池化层、修正线性单元(rectified linear unit,relu)层等。
122.步骤720,从待编译神经网络模型中确定配对的第一卷积层和第二卷积层。
123.在步骤720中,可以先从待编译神经网络模型包括的多个网络层中确定出所有卷积层,然后从确定出的所有卷积层中筛选出配对的第一卷积层和第二卷积层,第一卷积层和第二卷积层配对可以是指:第一卷积层和第二卷积层的组合可以实现深度可分离卷积;其中,第一卷积层可以为深度卷积层,第一卷积层的层参数可以包括深度卷积参数;第二卷积层可以为点卷积层,第二卷积层的层参数可以包括点卷积参数。
124.步骤730,将第一卷积层和第二卷积层进行合并,得到合并卷积层,合并卷积层的层参数包括第一卷积层的深度卷积参数和第二卷积层的点卷积参数。
125.在步骤730中,可以从第一卷积层的层参数中提取深度卷积参数,从第二卷积层的层参数中提取点卷积参数,之后通过第一卷积层和第二卷积层之间的合并,可以得到层参数包括深度卷积参数和点卷积参数的合并卷积层。
126.步骤740,为合并卷积层分配缓存区。
127.可选地,可以按照特定规则,从sram中选择一个区域作为缓存区分配给合并卷积层;或者,可以随机地从sram中选择一个区域作为缓存区分配给合并卷积层。
128.步骤750,基于合并卷积层、缓存区,以及待编译神经网络模型中除了第一卷积层和第二卷积层之外的网络层,编译生成目标神经网络模型,目标神经网络模型包括用于执行通过人工智能加速器处理特征图的方法(例如图4、图5或图6所示实施例中的通过人工智能加速器处理特征图的方法)的指令。
129.在步骤750中,可以由编译器后端基于合并卷积层、缓存区,以及待编译神经网络模型中除了第一卷积层和第二卷积层之外的网络层进行编译处理,从而生成二进制的目标神经网络模型,具体编译处理方式可以根据实际需求采用任意可实施的方式,本公开对此不做赘述。
130.本公开的实施例中,在编译阶段,可以将待编译神经网络模型中配对的第一卷积层和第二卷积层合进行合并,得到合并卷积层,并为合并卷积层分配缓存区,以便将合并卷积层、缓存区,以及待编译神经网络模型中除了第一卷积层和第二卷积层之外的网络层用于模型编译,以生成目标神经网络模型。这样,在执行阶段,基于合并卷积层的深度卷积参数和点卷积参数,再通过引入缓存区,有效实现了深度卷积和点卷积运算的融合,从而达到高效快捷地实现深度可分离卷积;此外,本公开的实施例由于未使用位于人工智能加速器外部的ddr,仅通过人工智能加速器内部的缓存实现深度可分离卷积,从而能够有效地提升
深度可分离卷积的运算速度。
131.在图7所示实施例的基础上,如图8所示,步骤720,包括步骤7201、步骤7203和步骤7205。
132.步骤7201,确定待编译神经网络模型中的第一卷积层的输出结果使用信息。
133.可选地,可以从待编译神经网络模型中,提取第一卷积层的输出结果使用信息,输出结果使用信息可以用于表征第一卷积层的输出结果具体提供给待编译神经网络模型中的哪些网络层使用;其中,输出结果使用信息也可以称为use-def关系。
134.步骤7203,基于输出结果使用信息,确定待编译神经网络模型中使用第一卷积层的输出结果的网络层的数量和类型。
135.在一个例子中,第一卷积层表示为conv1,步骤7201中得到的输出结果使用信息为如下形式:conv2_output=conv(conv1_output),则可以确定,conv1的输出结果提供给conv2这一个网络层使用,并且,conv2的类型为卷积层。
136.在另一个例子中,第一卷积层表示为conv1,步骤7201中得到的输出结果使用信息为如下形式:conv2_output=conv(conv1_output),relu1_output=conv(conv1_output),则可以确定,conv1的输出结果提供给conv2和relu1这两个网络层使用,并且,conv2的类型为卷积层,relu1的类型为修正线性单元层。
137.步骤7205,基于使用输出结果的网络层的数量和类型,确定与第一卷积层配对的第二卷积层。
138.在一种具体实施方式中,步骤7205,包括:
139.响应于使用输出结果的网络层的数量为第二预设数量,且使用输出结果的网络层的类型为点卷积层,将使用输出结果的网络层确定为与第一卷积层配对的第二卷积层。
140.可选地,第二预设数量可以为1。
141.在步骤7205中,可以判断使用第一卷积层的输出结果的网络层的数量是否为1,以及判断使用输出结果的网络层的类型是否为点卷积层。
142.如果使用第一卷积层的输出结果的网络层的数量为1,且使用输出结果的网络层的类型为点卷积层,则可以将使用第一卷积层的输出结果的网络层确定为与第一卷积层配对的第二卷积层,后续可以进行第一网络层和第二网络层的合并。
143.如果使用第一卷积层的输出结果的网络层的数量不为1,和/或,使用输出结果的网络层的类型不为点卷积层,则可以判定待编译神经网络模型中不存在与第一网络层配对的第二网络层,后续无需进行第一网络层和第二网络层的合并。
144.这样,通过将使用第一卷积层的输出结果的网络层的数量与特定数量进行比对,以及将使用输出结果的网络层的类型与特定类型进行比对,能够高效快捷地确定出与第一卷积层配对的第二卷积层。
145.本公开的实施例中,参考待编译神经网络模型中的第一卷积层的输出结果使用信息,可以高效快捷地确定待编译神经网络模型中使用第一卷积层的输出结果的网络层的数量和类型,以便基于确定结果,高效快捷地确定与第一卷积层配对的第二卷积层,这样,本公开的实施例能够高效快捷地识别出可通过组合实现深度可分离卷积的卷积层对。
146.在一个可选示例中,在编译阶段,假设待编译神经网络模型中存在conv1,conv1(相当于上文中的第一卷积层)的类型是深度卷积层,基于conv1的输出结果使用关系,确定
conv1的输出结果只被待编译神经网络模型中的一个网络层使用,且该网络层的类型是点卷积层,则可以将该网络层作为与conv1配对的卷积层(相当于上文中的第二卷积层)。
147.假设与conv1配对的卷积层是conv2,则可以将conv1和conv2进行合并,以得到合并网络层(其可以称为dwpw conv),合并网络层的层参数可以包括conv1的深度卷积参数(其可以称为depthwise conv weight),以及conv2的点卷积参数(其可以称为pointwise conv weight)。另外,还可以给合并网络层分配缓存区(其可以称为temporary buffer),基于合并网络层、缓存区,以及待编译神经网络模型中除了conv1和conv2之外的网络层,可以通过汇编生成指令。
148.在执行阶段,可以执行编译阶段通过汇编生成的指令。具体地,如图9所示,可以利用合并网络层的层参数中的深度卷积参数,对合并卷积层的输入特征图(其可以称为input feature)进行深度卷积运算,并将得到的各个深度卷积结果依次缓存至缓存区,并利用合并网络层的层参数中的点卷积参数,对缓存区中的深度卷积结果进行点卷积运算,以便将点卷积结果用于合并卷积层的输出特征图的生成。
149.需要说明的是,假设conv1的输入输出用如下形式表示:conv1_output=conv(input),conv2的输入输出用如下形式表示:conv2_output=conv(conv1_output),则合并卷积层的输入输出可以用如下形式表示:conv2_output=dwpw_conv(input)。
150.综上,本公开的实施例充分利用了深度卷积运算的运算速度快,以及点卷积运算的计算简单,只需要依赖深度卷积运算的部分结果的特点,通过引入缓存区,点卷积运算无需等到输入特征图中的所有数据均完成深度卷积运算再执行,由此可以有效地提升深度可分离卷积的运算速度。
151.本公开实施例提供的任一种通过人工智能加速器处理特征图的方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种通过人工智能加速器处理特征图的方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种通过人工智能加速器处理特征图的方法。下文不再赘述。
152.本公开实施例提供的任一种神经网络模型的编译方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种神经网络模型的编译方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种神经网络模型的编译方法。
153.示例性装置
154.图10是本公开一示例性实施例提供的通过人工智能加速器处理特征图的装置的结构示意图。图10所示的装置包括第一确定模块1010、第二确定模块1020、第一运算模块1030、缓存模块1040、第二运算模块1050和第三确定模块1060。
155.第一确定模块1010,用于确定目标神经网络模型中的合并卷积层,合并卷积层的层参数包括深度卷积参数和点卷积参数;
156.第二确定模块1020,用于确定第一确定模块1010确定的合并卷积层对应的缓存区;
157.第一运算模块1030,用于基于第一确定模块1010确定的合并卷积层的深度卷积参数,对合并卷积层的输入特征图进行深度卷积运算;
158.缓存模块1040,用于将第一运算模块1030的深度卷积运算得到的至少两个深度卷积结果依次缓存至第二确定模块1020确定的缓存区,至少两个深度卷积结果中的任意两个深度卷积结果对应输入特征图中的不同局部区域;
159.第二运算模块1050,用于基于第一确定模块1010确定的合并卷积层的点卷积参数,对第二确定模块1020确定的缓存区缓存的深度卷积结果进行点卷积运算;
160.第三确定模块1060,用于基于第二运算模块1050的点卷积运算得到的点卷积结果,确定第一确定模块1010确定的合并卷积层的输出特征图。
161.在一个可选示例中,如图11所示,缓存模块1040,包括:
162.第一确定子模块10401,用于确定缓存区中的第一缓存子区;
163.缓存子模块10403,用于将第一运算模块1030的深度卷积运算得到的至少两个深度卷积结果依次缓存至第一确定子模块10401确定的缓存区中的第一缓存子区;
164.第二运算模块1050,包括:
165.第二确定子模块10501,用于确定缓存区中的第二缓存子区;
166.转存子模块10503,用于将第一确定子模块10401确定的第一缓存子区缓存的深度卷积结果转存至第二确定子模块10501确定的第二缓存子区;
167.第一运算子模块10505,用于基于第一确定模块1010确定的合并卷积层的点卷积参数,对第二确定子模块10501确定的第二缓存子区缓存的深度卷积结果进行点卷积运算。
168.在一个可选示例中,如图12所示,第二运算模块1050,包括:
169.第三确定子模块10507,用于确定第二确定模块1020确定的缓存区的空间占用率与预设空间占用率之间的第一大小关系;
170.第四确定子模块10509,用于确定第二确定模块1020确定的缓存区缓存的深度卷积结果的数量与第一预设数量之间的第二大小关系;
171.第五确定子模块10511,用于确定当前时刻与预设时刻之间的时间关系;
172.第二运算子模块10513,用于响应于第三确定子模块10507确定的第一大小关系、第四确定子模块10509确定的第二大小关系、第五确定子模块10511确定的时间关系中的至少一者用于触发点卷积运算,基于第一确定模块1010确定的合并卷积层的点卷积参数,对第二确定模块1020确定的缓存区缓存的深度卷积结果进行点卷积运算。
173.图13是本公开一示例性实施例提供的神经网络模型的编译装置的结构示意图。图13所示的装置包括第四确定模块1310、第五确定模块1320、合并模块1330、分配模块1340和生成模块1350。
174.第四确定模块1310,用于确定待编译神经网络模型;
175.第五确定模块1320,用于从第四确定模块1310确定的待编译神经网络模型中确定配对的第一卷积层和第二卷积层;
176.合并模块1330,用于将第五确定模块1320确定的第一卷积层和第二卷积层进行合并,得到合并卷积层,合并卷积层的层参数包括第一卷积层的深度卷积参数和第二卷积层的点卷积参数;
177.分配模块1340,用于为合并模块1330得到的合并卷积层分配缓存区;
178.生成模块1350,用于基于合并模块1330得到的合并卷积层、分配模块1340分配的缓存区,以及第四确定模块1310确定的待编译神经网络模型中除了第五确定模块1320确定
的第一卷积层和第二卷积层之外的网络层,编译生成目标神经网络模型,目标神经网络模型包括用于执行上述通过人工智能加速器处理特征图的方法的指令。
179.在一个可选示例中,如图14所示,第五确定模块1320,包括:
180.第六确定子模块13201,用于确定第四确定模块1310确定的待编译神经网络模型中的第一卷积层的输出结果使用信息;
181.第七确定子模块13203,用于基于第六确定子模块13201确定的输出结果使用信息,确定待编译神经网络模型中使用第一卷积层的输出结果的网络层的数量和类型;
182.第八确定子模块13205,用于基于第七确定子模块13203确定的使用输出结果的网络层的数量和类型,确定与第一卷积层配对的第二卷积层。
183.在一个可选示例中,如图14所示,第八确定子模块13205,包括:
184.判断单元132051,用于判断第七确定子模块13203确定的使用输出结果的网络层的数量是否为预设数量,以及判断第七确定子模块13203确定的使用输出结果的网络层的类型是否为点卷积层;
185.确定单元132053,用于响应于判断单元132051判断出使用输出结果的网络层的数量为第二预设数量,且使用输出结果的网络层的类型为点卷积层,将使用输出结果的网络层确定为与第一卷积层配对的第二卷积层。
186.示例性电子设备
187.下面,参考图15来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
188.图15图示了根据本公开实施例的电子设备的框图。
189.如图15所示,电子设备1500包括一个或多个处理器1510和存储器1520。
190.处理器1510可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1500中的其他组件以执行期望的功能。
191.存储器1520可以包括一个或多个计算机程序产品,所述计算机程序产品可包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1510可以运行所述程序指令,以实现上文所述的本公开的各个实施例的通过人工智能加速器处理特征图的方法或者神经网络模型的编译方法。在所述计算机可读存储介质中还可存储诸如输入信号、信号分量、噪声分量等各种内容。
192.在一个示例中,电子设备1500还可以包括:输入装置1530和输出装置1540,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
193.例如,在该电子设备是第一设备或第二设备时,该输入装置1530可以是麦克风或麦克风阵列。在该电子设备是单机设备时,该输入装置1530可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
194.此外,该输入装置1530还可以包括例如键盘、鼠标等等。
195.该输出装置1540可以向外部输出各种信息,包括确定出的距离信息、方向信息等。
该输出装置1540可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
196.当然,为了简化,图15中仅示出了该电子设备1500中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1500还可以包括任何其他适当的组件。
197.示例性计算机程序产品和计算机可读存储介质
198.除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的通过人工智能加速器处理特征图的方法或者神经网络模型的编译方法中的步骤。
199.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
200.此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的通过人工智能加速器处理特征图的方法或者神经网络模型的编译中的步骤。
201.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
202.以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
203.本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
204.本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使
用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
205.可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
206.还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
207.提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
208.为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

技术特征:


1.一种通过人工智能加速器处理特征图的方法,包括:确定目标神经网络模型中的合并卷积层,所述合并卷积层的层参数包括深度卷积参数和点卷积参数;确定所述合并卷积层对应的缓存区;基于所述深度卷积参数,对所述合并卷积层的输入特征图进行深度卷积运算;将所述深度卷积运算得到的至少两个深度卷积结果依次缓存至所述缓存区,所述至少两个深度卷积结果中的任意两个深度卷积结果对应所述输入特征图中的不同局部区域;基于所述点卷积参数,对所述缓存区缓存的深度卷积结果进行点卷积运算;基于所述点卷积运算得到的点卷积结果,确定所述合并卷积层的输出特征图。2.根据权利要求1所述的方法,其中,所述将所述深度卷积运算得到的至少两个深度卷积结果依次缓存至所述缓存区,包括:将所述深度卷积运算得到的至少两个深度卷积结果依次缓存至所述缓存区中的第一缓存子区;所述基于所述点卷积参数,对所述缓存区缓存的深度卷积结果进行点卷积运算,包括:将所述第一缓存子区缓存的深度卷积结果转存至所述第二缓存子区;基于所述点卷积参数,对所述第二缓存子区缓存的深度卷积结果进行点卷积运算。3.根据权利要求1所述的方法,其中,所述基于所述点卷积参数,对所述缓存区缓存的深度卷积结果进行点卷积运算,包括:确定所述缓存区的空间占用率与预设空间占用率之间的第一大小关系;确定所述缓存区缓存的深度卷积结果的数量与第一预设数量之间的第二大小关系;确定当前时刻与预设时刻之间的时间关系;响应于所述第一大小关系、所述第二大小关系、所述时间关系中的至少一者用于触发点卷积运算,基于所述点卷积参数,对所述缓存区缓存的深度卷积结果进行点卷积运算。4.一种神经网络模型的编译方法,包括:确定待编译神经网络模型;从所述待编译神经网络模型中确定配对的第一卷积层和第二卷积层;将所述第一卷积层和所述第二卷积层进行合并,得到合并卷积层,所述合并卷积层的层参数包括所述第一卷积层的深度卷积参数和所述第二卷积层的点卷积参数;为所述合并卷积层分配缓存区;基于所述合并卷积层、所述缓存区,以及所述待编译神经网络模型中除了所述第一卷积层和所述第二卷积层之外的网络层,编译生成目标神经网络模型,所述目标神经网络模型包括用于执行上述权利要求1-3中任一所述的通过人工智能加速器处理特征图的方法的指令。5.根据权利要求4所述的方法,其中,所述从所述待编译神经网络模型中确定配对的第一卷积层和第二卷积层,包括:确定所述待编译神经网络模型中的第一卷积层的输出结果使用信息;基于所述输出结果使用信息,确定所述待编译神经网络模型中使用所述第一卷积层的输出结果的网络层的数量和类型;
基于使用所述输出结果的网络层的数量和类型,确定与所述第一卷积层配对的第二卷积层。6.根据权利要求5所述的方法,其中,所述基于使用所述输出结果的网络层的数量和类型,确定与所述第一卷积层配对的第二卷积层,包括:响应于使用所述输出结果的网络层的数量为第二预设数量,且使用所述输出结果的网络层的类型为点卷积层,将使用所述输出结果的网络层确定为与所述第一卷积层配对的第二卷积层。7.一种通过人工智能加速器处理特征图的装置,包括:第一确定模块,用于确定目标神经网络模型中的合并卷积层,所述合并卷积层的层参数包括深度卷积参数和点卷积参数;第二确定模块,用于确定所述第一确定模块确定的所述合并卷积层对应的缓存区;第一运算模块,用于基于所述第一确定模块确定的所述合并卷积层的所述深度卷积参数,对所述合并卷积层的输入特征图进行深度卷积运算;缓存模块,用于将所述第一运算模块的所述深度卷积运算得到的至少两个深度卷积结果依次缓存至所述第二确定模块确定的所述缓存区,所述至少两个深度卷积结果中的任意两个深度卷积结果对应所述输入特征图中的不同局部区域;第二运算模块,用于基于所述第一确定模块确定的所述合并卷积层的所述点卷积参数,对所述第二确定模块确定的所述缓存区缓存的深度卷积结果进行点卷积运算;第三确定模块,用于基于所述第二运算模块的所述点卷积运算得到的点卷积结果,确定所述第一确定模块确定的所述合并卷积层的输出特征图。8.一种神经网络模型的编译装置,包括:第四确定模块,用于确定待编译神经网络模型;第五确定模块,用于从所述第四确定模块确定的所述待编译神经网络模型中确定配对的第一卷积层和第二卷积层;合并模块,用于将所述第五确定模块确定的所述第一卷积层和所述第二卷积层进行合并,得到合并卷积层,所述合并卷积层的层参数包括所述第一卷积层的深度卷积参数和所述第二卷积层的点卷积参数;分配模块,用于为所述合并模块得到的所述合并卷积层分配缓存区;生成模块,用于基于所述合并模块得到的所述合并卷积层、所述分配模块分配的所述缓存区,以及所述第四确定模块确定的所述待编译神经网络模型中除了所述第五确定模块确定的所述第一卷积层和所述第二卷积层之外的网络层,编译生成目标神经网络模型,所述目标神经网络模型包括用于执行上述权利要求1-3中任一所述的通过人工智能加速器处理特征图的方法的指令。9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-3中任一所述的通过人工智能加速器处理特征图的方法,或者执行上述权利要求4-6中任一所述的神经网络模型的编译方法。10.一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-3中任一所述的通过人工智能加速器处理特征图的方法,或者实现上述权利要求4-6中任一所述的神经网络模型的编译方法。

技术总结


公开了一种通过人工智能加速器处理特征图的方法和装置。其中,通过人工智能加速器处理特征图的方法包括:确定目标神经网络模型中的合并卷积层,合并卷积层的层参数包括深度卷积参数和点卷积参数;确定合并卷积层对应的缓存区;基于深度卷积参数,对合并卷积层的输入特征图进行深度卷积运算;将深度卷积运算得到的至少两个深度卷积结果依次缓存至缓存区,至少两个深度卷积结果中的任意两个深度卷积结果对应输入特征图中的不同局部区域;基于点卷积参数,对缓存区缓存的深度卷积结果进行点卷积运算;基于点卷积运算得到的点卷积结果,确定合并卷积层的输出特征图。本公开实施例能够有效地提升深度可分离卷积的运算速度。有效地提升深度可分离卷积的运算速度。有效地提升深度可分离卷积的运算速度。


技术研发人员:

李建军 姚猛 王振江 凌坤

受保护的技术使用者:

北京地平线信息技术有限公司

技术研发日:

2022.09.21

技术公布日:

2022/12/16

本文发布于:2024-09-23 01:38:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/43422.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:卷积   所述   缓存   深度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议