一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种训练神经网络的方法、装置、服务器及系统与流程

2022-04-13 12:45:25 来源:中国专利 TAG:


1.本技术实施例涉及人工智能技术领域,尤其涉及一种训练神经网络的方法、装置、服务器及系统。


背景技术:

2.随着人工智能技术的发展,神经网络在终端设备上的应用越来越广泛。由于不同的应用场景或不同的终端设备对神经网络的需求不同,所以需要根据应用场景或终端设备选择合适的神经网络。以前,神经网络都是人工设计的,近年来,诞生了神经网络结构搜索(neural architecture search,nas)算法,该算法能够自动搜索出合适的神经网络。
3.其中,一次训练多处部署(once for all,ofa)算法是nas算法中重要的一种。采用ofa算法搜索神经网络的过程包括:先选择目标网络,然后设计一定的规则对目标网络进行变化以得到搜索空间,再根据搜索空间构建超网络,该超网络包含搜索空间中的所有子网络。在将超网络中的所有子网络训练收敛后,从超网络中采样一部分子网络进行性能评估,最终根据性能评估结果选择一个子网络作为部署在终端设备上的神经网络。
4.由于超网络中的所有子网络共享参数,所以在对超网络中子网络的训练过程中,一个子网络的参数改变会导致与其共享参数的其他子网络的参数均发生变化,即超网络中子网络间参数的干扰较大,对超网络中子网络的性能影响较大。


技术实现要素:

5.本技术实施例提供了一种训练神经网络的方法、装置、服务器及系统,用于降低超网络中子网络间参数的干扰,以提高超网络中子网络的性能。
6.本技术实施例第一方面提供了一种训练神经网络的方法,包括:基于搜索空间构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,其中,x个子网络共享参数是指对于x个子网络中的任意两个子网络,相同网络结构的部分的参数相同,x为大于1的整数;对x个子网络中的y个子网络进行训练,其中,训练y个子网络的方法可以有多种;基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数;基于第一超网络的参数构建第二超网络,具体地,可以将第一超网络中的x个子网络划分为m组,构建得到的第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数;对x个子网络中的z个子网络进行训练,其中,训练z个子网络的方法可以有多种;基于x个子网络中的z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数,z为小于或等于x的正整数。
7.从x个子网络中选择y个子网络的方法与x个子网络中选择z个子网络的方法可以相同,以选择y个子网络为例,可以通过改变第一超网络中弹性核大小k的取值,从x个子网络中选择y个子网络;可以通过改变改变第一超网络中弹性深度d的取值,从x个子网络中选择y个子网络;还可以通过改变第一超网络中改变弹性宽度e的取值,从x个子网络中选择y
个子网络。
8.先对x个子网络中的y个子网络进行训练,并基于y个子网络的训练结果更新第一超网络的参数,从而保证x个子网络具备较好的性能;然后对x个子网络中的z个子网络进行训练,并基于z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数;由于同一分支网络中的所有子网络共享参数,且基于z个子网络中一个子网络的训练结果,仅会更新该子网络所属的分支网络的参数,而不会导致其他分支网络中子网络的参数变化,从而降低了x个子网络间参数的相互干扰,使得x个子网络的性能得到进一步提高,从而使得最终部署在终端设备上的神经网络的性能较好。
9.在一种实现方式下,基于预设的条件从x个子网络中选择p个子网络作为锚点网络,y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
10.由于y个子网络中包含基于条件选择的锚点网络,所以根据y个子网络的训练结果更新第一超网络的参数,使得第一超网络的参数能够保证锚点网络及网络结构与锚点网络相似的其他锚点网络具有较好的性能。
11.在一种实现方式下,基于预设的条件从x个子网络中选择p个子网络作为锚点网络,z个子网络包括第一子网络、第二子网络、p个锚点网络中以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的子网络,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
12.由于z个子网络中包含基于预设的条件选择的锚点网络,所以根据z个子网络的训练结果更新第二超网络的参数,使得第二超网络的参数能够保证锚点网络及网络结构与锚点网络相似的其他锚点网络具有较好的性能。
13.在一种实现方式下,在构建第一超网络之后,在基于x个子网络中的y个子网络的训练结果更新第一超网络的参数之前,方法还包括:从x个子网络中选择p个满足条件的子网络作为p个锚点网络;其中,该条件可以根据实际需要进行设定。
14.从x个子网络中选择p个满足条件的子网络作为p个锚点网络,使得可以根据p个锚点网络选择y个子网络进行训练。
15.在一种实现方式下,构建第一超网络包括:基于目标网络建立搜索空间,该目标网络可以为第二版的移动端网络或第三版的移动端网络,除此之外,该目标网络也可以为其他结构的神经网络,搜索空间指示目标网络的网络结构的变化范围;基于搜索空间构建第一超网络。
16.该实现方式提供了一种构建第一超网络的具体的可行方案。
17.在一种实现方式下,目标网络包括输入层、至少一个阶段和头部,每个阶段包括至少一个块,每个块包括一个升维点卷积,一个深度卷积和一个降维卷积;变化范围与以下至少一种参数有关:目标网络的通道数量的缩放比例和头部的种类;除此之外,变化范围还可以与至少一个块中每个块的弹性核大小、至少一个阶段中每个阶段的弹性深度、至少一个块中每个块的弹性宽度相关;其中,升维点卷积可以表示为1*1*(e
·
cin),1*1表示升维点
卷积的卷积核的大小,这里的cin表示升维点卷积的输入通道的数量,这里的e表示升维点卷积的输出通道的数量与输入通道的数量的比例;深度卷积可以表示为k*k*(e
·
cin),k*k表示深度卷积的卷积核的大小,这里的cin表示深度卷积的输入通道的数量,这里的e表示深度卷积的输出通道的数量与输入通道的数量的比例;降维卷积可以表示为1*1*cout,1*1表示降维点卷积的卷积核的大小,这里的cout表示降维卷积的输出通道的数量;输入层可以为升维点卷积。除此之外,在至少一个阶段stage和头部之间,还可以包括一层升维点卷积。
18.弹性核大小为块中的深度卷积的卷积核大小,即弹性核大小可以用k表示;弹性深度为阶段中块的数量,本技术实施例用d表示阶段中块的数量;弹性宽度为块中升维点卷积的输出通道的数量与输入通道的数量的比例,即弹性宽度可以用e表示;目标网络的通道数量的缩放比例指示输入层的输出通道的实际数量与输出通道的设定数量的比例、头部的输出通道的实际数量与输出通道的设定数量的比例,以及每个块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例。
19.搜索空间是在目标网络的基础上,定义了网络结构的变化范围,从而可以覆盖多种网络结构的神经网络;并且,本技术实施例除了从弹性核大小、弹性深度和弹性宽度三个维度定义了网络结构的变化范围外,还从通道数量的缩放比例和头部的种类两个维度定义了网络结构的变化范围,从而进一步扩大了搜索空间的覆盖范围,使得搜索空间可以覆盖包括超轻量神经网络在内的更多种网络结构的神经网络。
20.在一种实现方式下,目标网络为第二版的移动端网络或第三版的移动端网络;当目标网络为第二版的移动端网络时,头部的种类为第二版的移动端网络的头部或第三版的移动端网络的头部;当目标网络为第三版的移动端网络时,头部的种类为第二版的移动端网络的头部或第三版的移动端网络的头部;第二版的移动端网络包括五个阶段,且第二版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、三个块和三个块;第三版的移动端网络包括五个阶段,且第三版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、两个块和三个块。
21.在该实现方式下,当目标网络为第二版的移动端网络时,通过第二版的移动端网络的头部和第三版的移动端网络的头部扩大搜索空间的覆盖范围;当目标网络为第三版的移动端网络时,通过第二版的移动端网络的头部和第三版的移动端网络的头部扩大搜索空间的覆盖范围。
22.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个和/或z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个。
23.在该实现方式下,y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个,相比于y个子网络的通道数量的缩放比例仅包括一个缩放比例,该实现方式能够使得y个子网络包括更多网络结构的子网络,从而提高对第一超网络的训练效果;同样地,z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个,相比于z个子网络的通道数量的缩放比例仅包括一个缩放比例,该实现方式能够使得z个子网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。
24.在一种实现方式下,y个子网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同。
25.通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
26.在一种实现方式下,z个子网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同。
27.通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
28.在一种实现方式下,y个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络;和/或z个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络。
29.在该实现方式下,y个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络,所以既能实现对包含第二版的移动端网络的头部的子网络的训练,也能实现对包含第三版的移动端网络的头部的子网络的训练;同样地,z个子网络也包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络,所以既能实现对包含第二版的移动端网络的头部的子网络的训练,也能实现对包含第三版的移动端网络的头部的子网络的训练。
30.在一种实现方式下,y个子网络中,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同。
31.在该实现方式下,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同,既可以保证对包含第二版的移动端网络的头部的子网络的训练的充分性,又可以保证对包含第三版的移动端网络的头部的子网络的训练的充分性。
32.在一种实现方式下,z个子网络中,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同。
33.在该实现方式下,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同,既可以保证对包含第二版的移动端网络的头部的子网络的训练的充分性,又可以保证对包含第三版的移动端网络的头部的子网络的训练的充分性。
34.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
35.在该实现方式下,p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,使得p个锚点网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。
36.在一种实现方式下,p个锚点网络中,通道数量的缩放比例为至少两个缩放比例中
各个缩放比例的锚点网络的数量相同。
37.在该实现方式下p个锚点网络中,目标网络的通道数量的缩放比例为至少两个预设比例的锚点网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
38.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;z个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
39.在该实现方式下,p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,使得p个锚点网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。
40.在一种实现方式下,p个锚点网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的锚点网络的数量相同。
41.在该实现方式下,p个锚点网络中,目标网络的通道数量的缩放比例为至少两个预设比例的锚点网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
42.本技术实施例第二方面提供了一种训练神经网络的装置,包括:构建单元,用于构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,x为大于1的整数;训练单元,用于基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数;构建单元,用于基于第一超网络的参数构建第二超网络,第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数;训练单元,用于基于x个子网络中的z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数,z为小于或等于x的正整数。
43.在一种实现方式下,y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
44.在一种实现方式下,z个子网络包括第一子网络、第二子网络、p个锚点网络中以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的子网络,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
45.在一种实现方式下,训练单元,还用于从x个子网络中选择p个满足条件的子网络作为p个锚点网络。
46.在一种实现方式下,构建单元,用于基于目标网络建立搜索空间,搜索空间指示目标网络的网络结构的变化范围;基于搜索空间构建第一超网络。
47.在一种实现方式下,目标网络包括输入层、头部以及位于输入层和头部之前的至少一个阶段,每个阶段包括至少一个块,每个块包括一个升维点卷积,一个深度卷积和一个
降维卷积;变化范围与以下至少一种参数有关:目标网络的通道数量的缩放比例和头部的种类;目标网络的通道数量的缩放比例指示以下比例中的至少一种:输入层的输出通道的实际数量与输出通道的设定数量的比例、头部的输出通道的实际数量与输出通道的设定数量的比例,以及每个块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例。
48.在一种实现方式下,目标网络为第二版的移动端网络,头部的种类为第二版的移动端网络的头部或第三版的移动端网络的头部;第二版的移动端网络包括五个阶段,且第二版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、三个块和三个块;第三版的移动端网络包括五个阶段,且第三版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、两个块和三个块。
49.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个和/或z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个。
50.在一种实现方式下,y个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络;和/或z个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络。
51.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
52.在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;z个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
53.其中,以上各单元的具体实现、相关说明以及技术效果请参考本技术实施例第一方面的描述。
54.本技术实施例第三方面提供一种服务器,包括:至少一个处理器和存储器,存储器存储有可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,该服务器执行如上述第一方面中任意一种实施方式所述的训练神经网络的方法。
55.本技术实施例第四方面提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行如上述第一方面中任意一种实施方式所述的训练神经网络的方法。
56.本技术实施例第五方面提供了一种计算机存储介质,该计算机存储介质用于储存
为上述服务器所用的计算机软件指令,其包括用于执行为服务器所设计的程序;
57.该服务器可以如前述第二方面所描述的训练神经网络的装置。
58.本技术实施例第六方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一种实施方式所述的训练神经网络的方法。
59.本技术实施例第七方面提供了一种模型部署系统,包括:终端设备和服务器;
60.服务器用于执行如上述第一方面中任意一种实施方式所述的训练神经网络的方法,并用于从第二超网络中选择一个子网部署在终端设备中。
61.从以上技术方案可以看出,本技术实施例具有以下优点:
62.先构建包含x个子网络的第一超网,x个子网络共享参数,然后对x个子网络中的y个子网络进行训练,并基于y个子网络的训练结果更新所述第一超网络的参数,从而保证x个子网络具备较好的性能;此后,构建包括m个分支网络的第二超网络,每个分支网络包含所述x个子网络中的至少一个,再对x个子网络中的z个子网络进行训练,并基于z个子网络的训练结果,更新所述z个子网络所属的分支网络的参数;由于同一分支网络中的所有子网络共享参数,且基于z个子网络中一个子网络的训练结果,仅会更新该子网络所属的分支网络的参数,而不会导致其他分支网络中子网络的参数变化,从而降低了x个子网络间参数的相互干扰,使得x个子网络的性能得到进一步提高,从而使得最终部署在终端设备上的神经网络的性能较好。
附图说明
63.图1为人工智能主体框架的一种结构示意图;
64.图2为人工智能系统的框架示意图;
65.图3为自适应生成神经网络的示意图;
66.图4为nas算法搜索神经网络的示意图;
67.图5为采用ofa算法搜索神经网络的示意图;
68.图6为采用本技术实施例提供的训练神经网络的方法为终端设备选择神经网络的示意图;
69.图7为本技术实施例中训练神经网络的方法的示意图;
70.图8为本技术实施例中第一超网络的第一实施例的结构示意图;
71.图9为本技术实施例中y个子网络共享弹性核大小的示意图;
72.图10为本技术实施例中第一超网络的第二实施例的结构示意图;
73.图11为本技术实施例中子网络的第一实施例的结构示意图;
74.图12为本技术实施例中子网络的第二实施例的结构示意图;
75.图13为本技术实施例中子网络的第三实施例的结构示意图;
76.图14为本技术实施例中包含图11所示的子网络在第二超网络中的位置示意图;
77.图15为本技术实施例中包含图12所示的子网络在第二超网络中的位置示意图;
78.图16为本技术实施例中包含图13所示的子网络在第二超网络中的位置示意图;
79.图17为本技术实施例中构建第二超网络的第一实施例示意图;
80.图18为本技术实施例中训练神经网络的装置的示意图;
81.图19为本技术实施例中服务器的结构示意图;
82.图20为本技术实施例中模型部署系统的结构示意图;
83.图21为本技术实施例中终端设备的结构示意图。
具体实施方式
84.下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
85.下面结合附图,对本技术的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
86.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
87.首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“it价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
88.(1)基础设施
89.基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(cpu、npu、gpu、asic、fpga等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
90.(2)数据
91.基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
92.(3)数据处理
93.数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
94.其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
95.推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
96.决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功
能。
97.(4)通用能力
98.对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
99.(5)智能产品及行业应用
100.智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、平安城市等。
101.下面对本技术实施例的应用场景进行介绍。
102.如图2所示,本技术实施例可以应用于图2所示的人工智能系统。该人工智能系统包括终端设备和服务器,终端设备和服务器通过通信链路连接。
103.其中,终端设备可以是任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、虚拟现实(virtual reality,vr)设备、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
104.基于神经网络的优势,可以在图2所示的终端设备上部署神经网络,部署有神经网络的终端设备可以应用于多种场景。作为一种示例,终端设备可以用于通过人脸识别技术进行身份验证;作为另一示例,终端设备可以用于游戏中的增强现实;作为另一示例,终端设备还可以用于对用户拍摄的图片进行图像合成。
105.然而,不同的应用场景对神经网络的需求也不同。例如,当终端设备用于通过人脸识别技术进行身份验证时,需要精度较高的神经网络;当终端设备用于游戏中的增强现实时,需要响应较快的神经网络。
106.此外,不同类型的终端设备对神经网络的需求不同,例如终端设备不同,由于底层硬件差异,相同的神经网络的计算时延不同。其中,该类型不同既可以指终端设备的种类不同,例如终端设备为智能手机和平板电脑;该类型不同也可以指同一种类终端设备的机型不同,例如终端设备为华为手机p30和华为手机p40。
107.因此,可以基于终端设备的类型、应用场景以及其他可能的限制条件为特定终端设备选择合适的神经网络。
108.在本技术实施例中,服务器通过自动机器学习(automatic machine learning,automl)技术为终端设备选择合适的神经网络。其中,自动机器学习是指通过迁移学习、自动超参调优以及神经网络结构搜索(neural architecture search,nas)等技术,帮助用户获得满足需求的神经网络,减少重复试验,提高建模效率。下面对服务器通过自动机器学习技术选择神经网络的过程进行具体介绍。
109.具体地,如图3所示,用户根据应用场景在终端设备上选择需要执行的任务类型,该任务类型可以为图像分类、检测、自然语言处理(neatural language processing,nlp)。例如,在一种场景下,用户需要识别一组动物图片的类别,则任务类型可以为图像分类;在另一种场景下,用户需要翻译一段文字,则任务类型可以为自然语言理解。用户在终端设备上选择终端设备的类型以及对神经网络的性能约束,该性能约束可以是神经网络的计算时延、神经网络的大小以及神经网络的精度。
110.此后,部署有automl系统的服务器根据任务类型选择基础网络,本技术实施例对基础网络的类型不做具体限定,例如基础网络可以是第二版的移动端网络(efficient convolutional neural networks for mobile vision version 2,mobilenet v2)或第三版的移动端网络(efficient convolutional neural networks for mobile vision version 3,mobilenet v3)。服务器还会根据终端设备的类型确定不同的神经网络的时延计算方法。
111.接着,部署有automl系统的服务器基于选择的基础网络、确定的时延计算方法以及用户选择的神经网络的性能约束为终端设备自适应生成合适的神经网络。
112.之后,部署有automl系统的服务器采用迁移学习的方法在数据集上训练选择出的神经网络,并采用量化算法将训练收敛的神经网络量化至适合在终端设备部署的大小。其中,量化算法是一种压缩神经网络的方法,即将浮点数(高精度)表示的神经网络的参数(包括权重和偏置)用低精度整数来近似表示。在量化到低精度之后,就可以应用移动平台上的优化技术对神经网络的计算过程进行加速,并且原始的神经网络在经过量化后,模型容量也会减小,从而可以更好地适应存储空间有限的终端设备。
113.可以理解的是,服务器可以采用多种方法为终端设备自适应生成合适的神经网络。目前,automl系统主要采用神经网络结构搜索(neural architecture search,nas)算法,该nas算法能够高效地搜索出大量精度高、时延低、参数量少的神经网络。下面结合图4对nas算法进行说明。
114.如图4所示,采用nas算法搜索神经网络的过程主要包括:
115.构建搜索空间。具体地,基于一个基础网络,设计该基础网络的一些网络结构变化规则。根据这些网络结构变化规则,可以确定基础网络的网络结构的变化范围。搜索空间则指示了基础网络的网络结构的变化范围,因此,搜索空间可以覆盖多种神经网络。为了便于说明,下文将搜索空间覆盖的网络称为子网络。
116.搜索子网络。具体地,基于特定的搜索策略从搜索空间中搜索一定数量的子网络。可以理解的是,由于搜索空间覆盖的子网络数量较多,所以不同的搜索策略可以搜索得到不同的子网络。
117.性能评估。具体地,基于特定的评估方法对搜索得到的子网络进行性能评估,最终选择性能评估结果最佳的子网络作为终端设备的神经网络。其中,该评估方法可以从神经网络的计算时延、神经网络的大小以及神经网络的精度等多个维度对搜索到的子网络进行性能评估。
118.基于上述对采用nas算法搜索神经网络的过程的相关说明可知,搜索空间越大,覆盖的神经网络的数量就越多,因此就可能搜索出更加适合终端设备的神经网络;然而,搜索空间越大,搜索难度也越大,并且,还会导致搜索时间边长,消耗资源变多,难以快速响应用户的需求。
119.为此,可以采用一次训练多处部署(once for all,ofa)算法为终端设备搜索合适的神经网络。其中,ofa算法是nas算法的其中一种。下面结合图5对采用ofa算法搜索神经网络的过程进行说明。
120.具体地,如图5所示,采用ofa算法搜索神经网络的过程主要包括:
121.首先,构建搜索空间,然后根据搜索空间构建超网络,该超网络包含搜索空间中的
所有子网络。然后对超网络进行训练,使得超网络中的所有子网络收敛,再从超网络中采样一部分子网络进行性能评估,并基于性能评估结果构建结构性能查找表。该结构性能查找表中记载有采样的所有子网络,以及采样的各个子网络对应的性能。
122.其中,超网络可以理解为:包括至少一层空间,每层空间中包含多个子结构,每个子结构包括至少一层神经元;多个子结构中的两个子结构可以包含相同层神经元,即多个子结构中的两个子结构可以包含相同的结构。
123.在本技术实施例中,超网络又可以称为神经网络。
124.子网络可以理解为:从超网络的每层空间中选择至少一个子结构,然后按照空间层的顺序将选择的子结构依次连接构成的神经网络。
125.由于多个子结构中的两个子结构可以包含相同的结构,所以从超网络中选出的两个子网络可以包含相同的结构。
126.这样,在基于特定的搜索策略从搜索空间中搜索一定数量的子网络之后,服务器便可以查询结构性能查找表以获取搜索出的自网络的性能数据,从而为终端设备搜索合适的神经网络。
127.基于对采用ofa算法搜索神经网络的过程的相关说明可知,ofa算法将神经网络训练过程和神经网络搜索过程解耦,这样可以在基于搜索策略搜索神经网络之前便训练超网络,以构建结构性能查找表,从而提高了为终端设备搜索神经网络的效率和可扩展性。
128.需要说明的是,超网络中的所有子网络共享参数。其中,子网络共享参数是指,若两个子网络的网络结构存在相同的部分,则相同部分的网络结构的参数种类和参数取值均相同,该参数包括权重和偏置。
129.由于超网络中的所有子网络共享参数,所以在对超网络中子网络的训练过程中,一个子网络的参数改变会导致与其共享参数的其他子网络的参数均发生变化,即超网络中子网络间参数的干扰较大,对超网络中子网络的性能影响较大。为此,本技术实施例提供了一种训练神经网络的方法,该方法能够降低超网络中子网络间参数的干扰,以提高超网络中子网络的性能。
130.采用本技术实施例提供的训练神经网络的方法为终端设备选择神经网络的过程如图6所示。具体地,在后端,服务器基于任务类型确定目标网络,然后根据目标网络构建搜索空间,然后基于搜索空间构建超网络并进行超网络训练,之后对从超网络中采样得到的子网络进行评估;由于不同类型的终端设备对应的神经网络的性能计算方法不同,所以服务器基于自网络的性能评估结果和终端设备的类型构建结构性能表。
131.在前端,服务器基于用户选择的性能约束和特定的搜索策略搜索得到子网络,然后通过结构性能表查询子网络的性能,并根据查询结果选择一个子网络作为部署在终端设备的神经网络,然后利用数据集对该神经网络进行迁移学习,并将迁移学习后的神经网络量化至适合终端设备的大小,最终将量化后的神经网络部署在终端设备。
132.在本技术实施例中,后端可以理解为线下,而前端可以理解为线上。
133.由于本技术实施例涉及大量神经网络的应用,为了便于理解,下面先对本技术实施例可能涉及的神经网络的相关术语和概念进行介绍。
134.(1)神经网络
135.神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运
算单元,该运算单元的输出可以为:
[0136][0137]
其中,s=1、2、
……
、n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
[0138]
(2)深度神经网络
[0139]
深度神经网络(deep neural network,dnn),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i 1层的任意一个神经元相连。
[0140]
虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
[0141]
综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为
[0142]
需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。
[0143]
(3)卷积神经网络
[0144]
卷积神经网络(convolutional neuron network,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的
训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
[0145]
(4)损失函数
[0146]
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
[0147]
(5)反向传播算法
[0148]
神经网络可以采用误差反向传播(back propagation,bp)算法在训练过程中修正初始的神经网络中参数的大小,使得神经网络的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络的参数,例如权重矩阵。
[0149]
其中,本技术实施例中的神经网络主要是指深度神经网络。
[0150]
下面结合图7对本技术实施例提供的训练神经网络的方法进行说明。具体地,请参阅图7,本技术实施例提供了一种训练神经网络的方法的一个实施例,包括:
[0151]
步骤101,构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,x为大于1的整数。
[0152]
x的取值可以根据实际需要进行设定,本技术实施例对此不做具体限定。
[0153]
基于前述说明可知,x个子网络共享参数是指,对于x个子网络中的任意两个子网络,相同网络结构的部分的参数相同;在本技术实施例中,参数包括神经网络的权重和偏置,下文不再赘述。
[0154]
需要说明的是,构建第一超网络的方法有多种,本技术实施例对此不做具体限定。作为一种示例,可以直接构建包含x个子网络的第一超网络。
[0155]
作为另一种示例,构建第一超网络包括:先基于目标网络建立搜索空间,搜索空间指示目标网络的网络结构的变化范围,然后基于搜索空间构建第一超网络。
[0156]
其中,目标网络可以是前文中的基础网络,本技术实施例对目标网络的类型不做具体限定。
[0157]
示例性地,目标网络包括输入层、至少一个阶段stage和头部,每个阶段包括至少一个块block,每个块包括一个升维点卷积,一个深度卷积和一个降维卷积。
[0158]
其中,升维点卷积可以表示为1*1*(e
·
cin),1*1表示升维点卷积的卷积核的大小,这里的cin表示升维点卷积的输入通道的数量,这里的e表示升维点卷积的输出通道的数量与输入通道的数量的比例;深度卷积可以表示为k*k*(e
·
cin),k*k表示深度卷积的卷
积核的大小,这里的cin表示深度卷积的输入通道的数量,这里的e表示深度卷积的输出通道的数量与输入通道的数量的比例;降维卷积可以表示为1*1*cout,1*1表示降维点卷积的卷积核的大小,这里的cout表示降维卷积的输出通道的数量;输入层可以为升维点卷积。
[0159]
除此之外,在至少一个阶段stage和头部之间,还可以包括一层升维点卷积。
[0160]
需要说明的是,在同一阶段中,不同块的输出通道的数量相同,块的输出通道数量是指该块中降维卷积的输出通道的数量。
[0161]
具体地,目标网络可以为第二版的移动端网络或第三版的移动端网络。当目标网络为第三版的移动端网络时,目标网络包括输入层、5个阶段和第三版的移动端网络的头部,5个阶段分别包括2、3、4、2和3个块。在这14个块中,e的取值分别为4、3、3、3、3、6、2.5、2.3、2.3、6、6、6、6和6,k的取值分别为3、3、5、5、5、3、3、3、3、3、3、5、5和5。
[0162]
基于前述目标网络,变化范围与以下至少一种参数有关:目标网络的通道数量的缩放比例和头部的种类;除此之外,变化范围还可以与至少一个块中每个块的弹性核大小、至少一个阶段中每个阶段的弹性深度、至少一个块中每个块的弹性宽度相关。
[0163]
需要说明的是,至少一种是指变化范围可以基于至少一个块中每个块的弹性核大小确定,可以基于至少一个阶段中每个阶段的弹性深度确定,可以基于至少一个块中每个块的弹性宽度确定,也可以基于目标网络的通道数量的缩放比例确定,还可以基于头部的种类确定;此外,变化范围也可以基于以上两种或两种以上组合确定的。
[0164]
其中,弹性核大小为块中的深度卷积的卷积核大小,即弹性核大小可以用k表示;弹性深度为阶段中块的数量,本技术实施例用d表示阶段中块的数量;弹性宽度为块中升维点卷积的输出通道的数量与输入通道的数量的比例,即弹性宽度可以用e表示。
[0165]
目标网络的通道数量的缩放比例指示以下比例中的至少一种:输入层的输出通道的实际数量与输出通道的设定数量的比例、头部的输出通道的实际数量与输出通道的设定数量的比例,以及每个块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例,即目标网络的通道数量的缩放比例等于输入层的输出通道的实际数量与输出通道的设定数量的比例、头部的输出通道的实际数量与输出通道的设定数量的比例,其中,每个块中降维卷积的输出通道的设定数量即为目标网络中该块的降维卷积的输出通道的数量cout。为了便于说明,下文用scale表示目标网络的通道数量的缩放比例。
[0166]
为了便于理解,下面以至少一个块中的任意一个块(这里简称为目标块)为例,对目标网络的通道数量的缩放比例scale进行进一步说明。
[0167]
具体地,在目标网络中,目标块中降维卷积的输出通道的数量cout为4,即目标块中降维卷积的输出通道的设定数量为4。基于此,可以通过目标网络的通道数量的缩放比例scale确定目标网络的网络结构的变化范围。例如,当目标网络的通道数量的缩放比例scale为1时,则目标块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例为1,目标块中降维卷积的输出通道的实际数量为4;当目标网络的通道数量的缩放比例scale为0.75时,则目标块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例为0.75,目标块中降维卷积的输出通道的实际数量为3;当目标网络的通道数量的缩放比例scale为0.5时,则目标块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例为0.5,目标块中降维卷积的输出通道的实际数量为2;当目标网络的通道数量的缩放比例scale为0.25时,则目标块中降维卷积的输出通道的实际
数量与降维卷积的输出通道的设定数量的比例为0.25,目标块中降维卷积的输出通道的实际数量为1。
[0168]
输入层的输出通道的实际数量、头部的输出通道的实际数量随目标网络的通道数量的缩放比例scale的变化情况,与目标块中降维卷积的输出通道的实际数量随目标网络的通道数量的缩放比例scale的变化情况相同,具体可参照上述前述进行理解。
[0169]
可以理解的是,当k、d、e、scale分别取不同值时,在搜索空间中,目标网络的网络结构的变化范围不同。
[0170]
基于前述说明可知,目标网络可以为第二版的移动端网络或第三版的移动端网络。示例性地,当目标网络为第二版的移动端网络时,头部的种类可以包括第二版的移动端网络的头部或第三版的移动端网络的头部。当目标网络为第三版的移动端网络时,头部的种类也可以包括第二版的移动端网络的头部或第三版的移动端网络的头部。
[0171]
第二版的移动端网络包括五个阶段,且第二版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、三个块和三个块;第三版的移动端网络包括五个阶段,且第三版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、两个块和三个块。
[0172]
其中,第二版的移动端网络与第三版的移动端网络相比,输入层、头部均不同,且五个阶段包含的所有块中存在相同的块,也存在不同的块;由于第二版的移动端网络与第三版的移动端网络为现有的神经网络,故本技术实施例在此不做赘述。
[0173]
在本技术实施例中,可以根据实际需要改变k、d、e、scale的取值以及头部的种类,从而可以改变搜索空间的覆盖范围。例如,目标网络为第三版的移动端网络,则每个阶段中块的数量d的取值均可以为1至4;每个阶段的每个块中,k的取值可以为3、5、7中的任意一个,e的取值可以为3、4、6中的任意一个;scale可以取0.25、0.5、0.75、1中的任意一个;头部的种类可以是第二版的移动端网络的头部,也可以是第三版的移动端网络的头部。
[0174]
在本技术实施例中,搜索空间是在目标网络的基础上,定义了网络结构的变化范围,从而可以覆盖多种网络结构的神经网络;并且,本技术实施例除了从弹性核大小、弹性深度和弹性宽度三个维度定义了网络结构的变化范围外,还从目标网络的通道数量的缩放比例和头部的种类两个维度定义了网络结构的变化范围,从而进一步扩大了搜索空间的覆盖范围,使得搜索空间可以覆盖包括超轻量神经网络在内的更多种网络结构的神经网络。
[0175]
在构建搜索空间后,可以基于目标网络的网络结构的变化范围构建第一超网络。下面结合图8对第一超网络进行说明。
[0176]
如图8所示,该第一超网络对应的搜索空间是以第三版的移动端网络为目标网络构建的。从图8中可以看出,该第一超网络包括输入层、阶段0、阶段1、阶段2、阶段3、阶段4、升维点卷积、第二版的移动端网络的头部以及第三版的移动端网络的头部。阶段0、阶段1、阶段2、阶段3和阶段4中的任意一个阶段的结构变化范围相同。以阶段1为例,阶段1包括块1、块2至块d,阶段1中的每个块的结构变化范围相同,以块2为例,块2包括升维点卷积1*1*(e
·
cin)、深度卷积k*k*(e
·
cin)和降维卷积1*1*cout。输入层、阶段0、阶段1、阶段2、阶段3、阶段4、升维点卷积依次连接,该升维点卷积可以连接第二版的移动端网络的头部,也可以连接第三版的移动端网络的头部。
[0177]
对于图8所示的第一超网络,当k、d、e、scale取值不同,第一超网络的结构不同,由
此可以看出,第一超网络包括多个子网络。
[0178]
在本技术实施例中,搜索空间中目标网络的网络结构的变化范围是基于每个块的弹性核大小、每个阶段中的弹性深度、每个块的弹性宽度、目标网络的通道数量的缩放比例和头部的种类中的至少一种确定的,所以搜索空间可以包含上述5个维度,从而可以覆盖更多的神经网络,以实现对超轻量神经网络的覆盖。
[0179]
可以理解的是,在构建第一超网络后,可以为第一超网络设定相应的初始参数,以利用该初始参数对第一超网络进行训练。
[0180]
步骤102,基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数。
[0181]
在进行步骤102之前,可以先从x个子网络中选择y个子网络进行训练;需要说明的是,可以采用多种方法从x个子网络中选择y个子网络进行训练,本技术实施例对此不做具体限定;选择y个子网络进行训练的方法不同,对应的y个子网络的种类可以不同,更新第一超网络的参数也可以不同。
[0182]
下面对选择y个子网络进行训练的方法进行说明。
[0183]
第一种方法:
[0184]
在构建第一超网络之后,在基于x个子网络中的y个子网络的训练结果更新第一超网络的参数之前,从x个子网络中选择p个满足条件的子网络作为p个锚点网络,x个子网络中除p个锚点网络外的其他子网络为q个非锚点网络;在训练前时,通过以下方法从x个子网络中选择y个子网络进行训练的过程包括:选取p个锚点网络中的所有锚点网络,从q个非锚点网络中随机选取至少一个非锚点网络,再从x个子网络中选取神经元数量最多的子网络和神经元数量最少的子网络,从而得到y个子网络;其中,p和q均为小于x的正整数。
[0185]
需要说明的是,本技术实施例对条件不做具体限定,具体可以根据实际需要进行设定。例如,条件可以与k、d、e、scale的取值相关。作为一种示例,条件包括:scale的取值为0.25、0.5、0.75和1中的任意一个,d的取值为2和4中的任意一个,e的取值为3和6中的任意一个,k的取值为3和7中的任意一个。根据该条件便可以从x个子网络中选择p个子网络作为锚点网络。
[0186]
可以理解的是,从x个子网络中选择y个子网络进行训练的目的是使得x个子网络尽可能地都收敛,因此,可以合理设定条件,使得选取的p个锚点网络在第一超网络中均匀分布,从而可以避免锚点网络的网络结构过于相似,使得p个锚点网络可以包含更多结构的子网络。这样,在将包含p个锚点网络在内的y个子网络训练收敛后,则意味着x个子网络都基本收敛。
[0187]
以图8所述的第一超网络为例,若d、e、scale以及头部的种类均不变,仅通过改变k的取值选取锚点网络,则选取的锚点网络的网络结构则较相似。因此,为了保证锚点网络在第一超网络中的均匀分布,可以从多个维度选择锚点网络,即尽可能地改变k、d、e、scale等多个参数的取值,以选取p个锚点网络。
[0188]
基于上述说明可知,采用该第一种方法选择y个子网络,相应地,基于预设的条件从x个子网络中选择p个子网络作为锚点网络,y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满
足条件的,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
[0189]
需要说明的是,本技术实施例对y个子网络中锚点网络的占比和非锚点网络的占比均不做具体限定。例如,y的取值为8,y个子网络中可以包括4个锚点网络,4个非锚点网络。
[0190]
在本技术实施例中,由于y个子网络中包含基于条件选择的锚点网络,所以根据y个子网络的训练结果更新第一超网络的参数,使得第一超网络的参数能够保证锚点网络及网络结构与锚点网络相似的其他锚点网络具有较好的性能。
[0191]
基于图8的相关说明可知,通过改变目标网络的通道数量的缩放比例scale可以得到不同的子网。因此,可以改变目标网络的通道数量的缩放比例scale选取p个锚点网络。
[0192]
示例性地,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
[0193]
在本技术实施例中,p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,使得p个锚点网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。
[0194]
其中,由于前述已对y个子网络进行了说明,因此可参阅前述示例中对y个子网络的相关说明对本技术实施例中的y个子网络进行理解。
[0195]
需要说明的是,该多个预设比例可以根据实际需要进行调整,例如,多个预设比例可以包括0.25、0.5、0.75和1。以图8所示的超网络中的阶段1的块2为例,降维卷积的输出通道的设定数量cout为4,当目标网络的通道数量的缩放比例scale分别为0.25、0.5、0.75和1时,可以得到块2中降维卷积的输出通道的实际数量分别为1、2、3、4的锚点网络,相应地,也可以称这些锚点网络中块2的通道数量的缩放比例scale分别为0.25、0.5、0.75和1。
[0196]
在本技术实施例中,通过改变目标网络的通道数量的缩放比例scale选取p个锚点网络,能够得到包含不同的目标网络的通道数量的缩放比例scale的p个锚点网络,从而保证p个锚点网络的多样性。
[0197]
为了使得p个锚点网络均匀分布,作为另一示例,p个锚点网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的锚点网络的数量相同。
[0198]
以图8所示的超网为例,p个锚点网络中目标网络的通道数量的缩放比例scale分别为0.25、0.5、0.75和1的锚点网络的数量相同。
[0199]
在本技术实施例中,p个锚点网络中,目标网络的通道数量的缩放比例为各个预设比例的锚点网络的数量相同,使得选取的p个锚点网络更加均匀地分布在第一超网络中,从而可以保证对各个缩放比例的子网络的训练的充分性。
[0200]
在该方法中,对y个子网络的训练通常包含多轮训练,步骤102则包括:在每轮训练后,都基于y个子网络的训练结果并采用累积梯度的方法更新第一超网络的参数。具体地,先根据第一超网络的初始参数确定y个子网络各自的参数,然后基于y个子网络各自的参数
对y个子网络进行第一轮训练;在第一轮训练后,基于y个子网络的训练结果并采用累积梯度的方法更新第一超网络的参数,然后再利用更新后的第一超网络的参数对y个子网络进行第二轮训练,并根据y个子网络的第二轮训练的训练结果更新第一超网络的参数;重复多轮训练,直到y个子网络收敛。
[0201]
第二种方法:
[0202]
通过改变弹性核大小k的取值,从x个子网络中选择y个子网络。例如,以图8所示的第一超网络为例,对于任意一个阶段,弹性深度d的取值均为4;对于任意一个块,弹性宽度e的取值均为6,改变弹性核大小k的取值,使得弹性核大小k的取值分别为7、5、3,从而得到y个子网络。
[0203]
此时,y个子网络中的p个子网络包含第一块,第一块为至少一个阶段中一个阶段的一个块,p为小于或等于y的正整数;则p个子网络的第一块中深度卷积的弹性核大小k包含多个预设弹性核大小,其中,多个预设弹性核大小可以根据实际需要进行设定,本技术对此不做具体限定。例如,多个预设弹性核大小可以分别为7、5、3。
[0204]
在本技术实施例中,通过改变弹性核大小k的取值,从x个子网络中选择y个子网络,使得y个子网络中包含多种弹性核大小的子网络,从而保证y个子网络在第一超网络中分布的均匀性,以实现对多种弹性核大小的子网络的训练,提高训练效果。
[0205]
可以理解的是,为了保证y个子网络分布的均匀性,作为一种可实现的方式,在p个子网络中,第一块的弹性核大小k为各个预设弹性核大小的子网络的数量相同。
[0206]
在采用该方法选择y个子网络后,可以按照k的取值从大到小的顺序依次对y个子网络进行训练,则步骤102可以包括:每训练完一个子网络便对第一超网络的参数进行一次更新。例如,训练y个子网络的过程包括:先将弹性核大小为7*7的子网络训练收敛,然后对第一超网络的参数进行第一次更新;再将弹性核大小为5*5的子网络训练收敛,然后对第一超网络的参数进行第二次更新;最后将弹性核大小为3*3的子网络训练收敛,然后对第一超网络的参数进行第三次更新。
[0207]
可以理解的是,在采用该方法选择y个子网络后,不限于按照k的取值从大到小的顺序依次对y个子网络进行训练,也可以采用其他方法对y个子网络进行训练。例如,可以随机选择弹性核大小为7*7的子网络、弹性核大小为5*5的子网络或弹性核大小为3*3的子网络进行训练。
[0208]
基于前述说明可知,y个子网络共享参数,下面结合图9对以弹性核大小为例对y个子网络共享参数的情况进行说明。
[0209]
图9示出了7*7的卷积核、5*5的卷积核以及3*3的卷积核,弹性核大小为7*7的子网络包括图9中7*7的卷积核,弹性核大小为5*5的子网络包括图9中5*5的卷积核,弹性核大小为3*3的子网络包括图9中3*3的卷积核;在训练完弹性核大小为7*7的子网络后,则可以得到7*7的卷积核,在训练弹性核大小为5*5的子网络时,则将7*7的卷积核内部的5*5部分作为弹性核大小为5*5的子网络中5*5的卷积核进行训练;同理,在训练弹性核大小为3*3的子网络时,则将5*5的卷积核内部的3*3部分作为弹性核大小为3*3的子网络中3*3的卷积核进行训练。由此可以看出,弹性核大小为7*7的子网络、弹性核大小为5*5的子网络以及弹性核大小为3*3的子网络共享卷积核。
[0210]
由于y个子网络共享参数可能会降低y个子网络中部分子网络的性能,在训练弹性
核较小的子网络前,可以先对弹性核较大的子网络的卷积核的参数进行稍微的调整,并根据调整后的卷积核的参数对弹性核较小的子网络进行训练。
[0211]
例如,在训练弹性核大小为5*5的子网络前,可以先将7*7的卷积核内部的5*5部分乘以预设的核转换矩阵,以得到弹性核大小为5*5的子网络的5*5的卷积核,并利用乘以核转换矩阵后得到的5*5的卷积核对弹性核大小为5*5的子网络进行训练,从而可以降低共享卷积核对y个子网络的性能的影响。
[0212]
第三种方法:
[0213]
通过改变弹性深度d的取值,从x个子网络中选择y个子网络。例如,以图8所示的第一超网络为例,对于任意一个块,弹性核大小k的取值均为7,弹性宽度e的取值均为6;对于任意一个阶段,改变弹性深度d的取值,使得弹性深度d的取值分别为4、3、2,从而得到y个子网络。
[0214]
此时,y个子网络中的p个子网络包含第一阶段,第一阶段为至少一个阶段中的一个阶段,p为小于或等于y的正整数;则p个子网络的第一阶段中弹性深度d包含多个预设弹性深度,其中,多个预设弹性深度可以根据实际需要进行设定,本技术实施例对此不做具体限定。例如,多个预设弹性深度的取值可以分别为4、3、2。
[0215]
可以理解的是,为了保证y个子网络分布的均匀性,作为一种可实现的方式,在p个子网络中,第一阶段的弹性深度d为各个预设弹性深度的子网络的数量相同。
[0216]
与弹性核大小k类似,可以按照弹性深度d的取值从大到小的顺序对y个子网络进行训练,相应地,步骤102则包括:每训练完一个子网络便对第一超网络的参数进行依次更新。
[0217]
例如,训练y个子网络的过程包括:先训练弹性深度d的取值为4的子网络,然后对第一超网络的参数进行第一次更新;再训练弹性深度d的取值为3的子网络,然后对第一超网络的参数进行第二次更新;最后训练弹性深度d的取值为2的子网络,然后对第一超网络的参数进行第三次更新。
[0218]
在本技术实施例中,通过改变弹性深度d的取值,从x个子网络中选择y个子网络,使得y个子网络中包含多种弹性深度的子网络,从而保证y个子网络在第一超网络中分布的均匀性,以实现对多种弹性深度的子网络的训练,提高训练效果。
[0219]
第四种方法:
[0220]
通过改变弹性宽度e的取值,从x个子网络中选择y个子网络。例如,以图8所示的第一超网络为例,对于任意一个阶段,弹性深度d的取值均为4;对于任意一个块,弹性核大小k的取值均为7,改变弹性宽度e的取值,使得弹性宽度e的取值分别为6、4、3,从而得到y个子网络。
[0221]
此时,y个子网络中的p个子网络包含第一块,第一块为至少一个阶段中一个阶段的一个块,p为小于或等于y的正整数;则p个子网络的第一块中升维点卷积的弹性宽度e包含多个预设弹性宽度,其中,多个预设弹性宽度可以根据实际需要进行设定,本技术对此不做具体限定。例如,多个预设弹性宽度的取值可以分别为6、4、3。
[0222]
可以理解的是,为了保证y个子网络分布的均匀性,作为一种可实现的方式,在p个子网络中,第一块的弹性宽度e为各个预设弹性宽度的子网络的数量相同。
[0223]
与弹性核大小k类似,可以按照弹性宽度e的取值从大到小的顺序对y个子网络进
行训练,相应地,步骤102则包括:每训练完一个子网络便对第一超网络的参数进行依次更新。
[0224]
例如,训练y个子网络的过程包括:先训练弹性宽度e的取值为6的子网络,然后对第一超网络的参数进行第一次更新;再训练弹性宽度e的取值为4的子网络,然后对第一超网络的参数进行第二次更新;最后训练弹性宽度e的取值为3的子网络,然后对第一超网络的参数进行第三次更新。
[0225]
在按照弹性宽度e的取值从大到小的顺序对y个子网络进行训练的过程中,在训练完弹性宽度e的取值较大的子网络后,可以先计算该子网络中各个通道的重要性,然后选择重要性较高的通道构成弹性宽度e的取值较小的子网络并进行训练。
[0226]
例如,在训练完弹性宽度e的取值为6的子网络,计算该子网络中的6条通道的重要性,然后选择重要性较高的4条通道构成弹性宽度e的取值为4的子网络进行训练;同理,可以采用同样的方法对弹性宽度e的取值为3的子网络进行训练。
[0227]
在本技术实施例中,通过改变弹性宽度e的取值,从x个子网络中选择y个子网络,使得y个子网络中包含多种弹性宽度的子网络,从而保证y个子网络在第一超网络中分布的均匀性,以实现对多种弹性宽度的子网络的训练,提高训练效果。
[0228]
第五种方法:
[0229]
通过改变目标网络的通道数量的缩放比例scale的取值,从x个子网络中选择y个子网络。例如,以图8所示的第一超网络为例,对于任意一个阶段,弹性深度d的取值均为4;对于任意一个块,弹性核大小k的取值均为7,弹性宽度e的取值均为6;改变目标网络的通道数量的缩放比例scale的取值,使得通道数量的缩放比例scale的取值分别为0.25、0.5、0.75和1,从而得到y个子网络。
[0230]
基于上述说明可知,在本技术实施例中,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个。
[0231]
需要说明的是,多个缩放比例可以根据实际需要进行设定,本技术对此不做具体限定。例如,多个缩放比例的取值可以分别为0.25、0.5、0.75和1。
[0232]
在本技术实施例中,y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个,相比于y个子网络的通道数量的缩放比例仅包括一个缩放比例,该实现方式能够使得y个子网络包括更多网络结构的子网络,从而提高对第一超网络的训练效果。
[0233]
在一种实现方式下,y个子网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同。
[0234]
由于通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同,所以可以保证对各个缩放比例的子网络的训练的充分性。
[0235]
第六种方法:
[0236]
通过改变头部的种类,从x个子网络中选择y个子网络。例如,以图8所示的第一超网络为例,从x个子网络中选择头部为第二版的移动端网络的头部的子网络,并从x个子网络中选择头部为第三版的移动端网络的头部的子网络,从而得到y个子网络。
[0237]
此时,y个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络。
[0238]
在本技术实施例中,y个子网络包括头部为第二版的移动端网络的头部的子网络,
以及头部为第三版的移动端网络的头部的子网络,所以既能实现对包含第二版的移动端网络的头部的子网络的训练,也能实现对包含第三版的移动端网络的头部的子网络的训练。
[0239]
在一种实现方式下,y个子网络中,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同。
[0240]
由于包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同,所以保证对包含第二版的移动端网络的头部的子网络的训练的充分性,又可以保证对包含第三版的移动端网络的头部的子网络的训练的充分性。
[0241]
在本技术实施例中,也可以采用上述六种方法中的至少两种方法从x个子网络中选择y个子网络。例如,在上述第一方法中,用于确定锚点网络的条件可以与弹性深度d、弹性核大小k、弹性宽度e、通道数量的缩放比例scale以及头部的类型相关,此时,则可以理解为将第一方法与其他5种方法结合,从x个子网络中选取y个子网络。
[0242]
再例如,可以将第二种方法和第三种方法结合,即同时改变弹性深度d和弹性核大小k的取值以获得y个子网络。具体地,弹性深度d的取值为4、3或2,弹性核大小k的取值为7、5或3,弹性宽度e为6,通过上述条件从x个子网络中选择y个子网络。
[0243]
还可以将第二种方法、第三种方法和第四种方法结合,以获得y个子网络,具体可参照前述第二种方法和第三种方法结合的相关说明进行理解。
[0244]
此外,可以选用多种类型的训练数据对y个子网络进行训练,从而保证收敛后的y个子网络在处理各种类型的训练数据时都具有较好的性能。例如,若训练数据为图片数据,则可以选择不同分辨率的图片的数据作为训练数据。
[0245]
另外,需要说明的是,可以多次从x个子网络中选择y个子网络进行训练,其中,每次选择的y个子网络可以完全相同,可以部分相同,也可以完全不同;相应地,也需要多次执行步骤102,即在每次从x个子网络中选择y个子网络进行训练后,都执行一次步骤102。
[0246]
步骤103,基于第一超网络的参数构建第二超网络,第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数。
[0247]
基于前述说明可知,由于x个子网络共享参数,当参数值变大时,一部分子网络的性能会变好,另一部分子网络的性能会变差;当参数值变小时,同样地,一部分子网络的性能会变好,另一部分子网络的性能会变差。因此,对第一超网络中的参数进行更新时,无法兼顾所有x个子网络的性能,可能造成x个子网络中的部分子网络的性能较差。为此,在执行完步骤102之后,可以将x个子网络划分为m组,并构建包括m个分支网络的第二超网络,每个分支网络中包含一组子网络,即每个分支网络包含x个子网络中的至少一个;x个子网络中任意一个子网络仅包含于一个分支网络,即不同的分支网络不包含同一子网络。
[0248]
这样,同一分支网络中的子网络的网络结构才可能重合,所以同一分支网络中的所有子网络共享参数,而不同分支网络中的子网络则不共享参数,从而降低了共享参数对x个子网络的性能的影响。
[0249]
需要说明的是,可以通过多种方法将x个子网络划分为m组,本技术实施例对此不做具体限定。例如,可以通过将搜索空间划分为m个部分,以将x个子网络划分为m组。具体地,可以通过对搜索空间中弹性深度d、弹性核大小k、弹性宽度e、目标网络的通道数量的缩放比例scale以及头部的类型的取值范围进行划分,以将搜索空间划分为m个部分。
[0250]
下面结合图10至图16对第一超网络、x个子网络以及第二超网络的关系进行说明。
[0251]
具体地,如图10所示,图10中的神经网络为第一超网络。基于图10所示的第一超网络,可以获取到图11、图12以及图13所示的三个子网络。将这三个子网络分为三组,对应地,构建包含3个分支网络的第二超网络。图14、图15和图16分别示出了第二超网络,并且,图14示出了图11中的子网络在第二超网络中的位置,图15示出了图12中的子网络在第二超网络中的位置,图16示出了图13中的子网络在第二超网络中的位置。
[0252]
步骤104,基于x个子网络中的z个子网络的训练结果,更新z个子网络所属的分支网络的参数,z为小于或等于x的正整数。
[0253]
在执行步骤104之前,可以从x个子网络中选择z个子网络进行训练。需要说明的是,从x个子网络中选择z个子网络进行训练的方法,与从x个子网络中选择y个子网络进行训练的方法相同,具体可参照步骤102的相关说明进行理解。
[0254]
以步骤102中的第一种方法为例,在构建第一超网络之后,在基于x个子网络中的y个子网络的训练结果更新第一超网络的参数之前,从x个子网络中选择p个满足条件的子网络作为p个锚点网络,x个子网络中除p个锚点网络外的其他子网络为q个非锚点网络;在训练前,可以通过以下方法从x个子网络中选择z个子网络进行训练:选取p个锚点网络中的所有锚点网络,从非锚点网络中随机选取至少一个非锚点网络,再从x个子网络中选取神经元数量最多的子网络和神经元数量最少的子网络,从而得到z个子网络。
[0255]
相应地,z个子网络包括第一子网络、第二子网络、p个锚点网络中以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的子网络,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
[0256]
由于z个子网络中包含基于预设的条件选择的锚点网络,所以根据z个子网络的训练结果更新第二超网络的参数,使得第二超网络的参数能够保证锚点网络及网络结构与锚点网络相似的其他锚点网络具有较好的性能。
[0257]
若通过改变目标网络的通道数量的缩放比例scale选取p个锚点网络,则相应地,变化范围与目标网络的通道数量的多个缩放比例相关;z个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
[0258]
由于p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,使得p个锚点网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。在一种实现方式下,p个锚点网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的锚点网络的数量相同。
[0259]
在p个锚点网络中,目标网络的通道数量的缩放比例为至少两个预设比例的锚点网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
[0260]
有关采用第一种方法从x个子网络中选择z个子网络进行训练的其他说明,本技术实施例在此不做赘述。
[0261]
以步骤102中的第五种方法为例,z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个。
[0262]
由于z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个,相比于z个子网络的通道数量的缩放比例仅包括一个缩放比例,该实现方式能够使得z个子网络包括更多网络结构的子网络,从而实现对更多网络结构的子网络的训练,进而提高对第一超网络的训练效果。
[0263]
在一种实现方式下,z个子网络中,通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同。
[0264]
通道数量的缩放比例为至少两个缩放比例中各个缩放比例的子网络的数量相同,从而可以保证对各个缩放比例的子网络的训练的充分性。
[0265]
以步骤102中的第六种方法为例,选择的z个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络。
[0266]
由于z个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络,所以既能实现对包含第二版的移动端网络的头部的子网络的训练,也能实现对包含第三版的移动端网络的头部的子网络的训练。
[0267]
在一种实现方式下,y个子网络中,包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同。
[0268]
由于包含第二版的移动端网络的头部的子网络的数量与包含第三版的移动端网络的头部的子网络的数量相同,既可以保证对包含第二版的移动端网络的头部的子网络的训练的充分性,又可以保证对包含第三版的移动端网络的头部的子网络的训练的充分性。
[0269]
需要说明的是,由于同一分支网络中的子网络共享参数,而不同分支网络中的子网络不共享参数;所以与步骤102不同的是,在执行步骤104的过程中,需要根据z个子网络各自所属的分支网络对第二超网络的参数进行更新。
[0270]
例如,第二超网络包含第一分支网络、第二分支网络和第三分支网络,从这3个分支网络中选择10个子网络进行训练,其中,第一分支网络、第二分支网络和第三分支网络分别包括5个、3个和2个子网络;则步骤104包括:根据5个子网络更新第一分支网络的参数,根据3个子网络更新第二分支网络的参数,根据2个子网络更新第三分支网络的参数。
[0271]
同样地,由于z个子网络中包含基于条件选择的锚点网络,所以根据z个子网络的训练结果更新第二超网络的参数,使得第二超网络的参数能够保证锚点网络及网络结构与锚点网络相似的其他锚点网络具有较好的性能。
[0272]
基于步骤101至步骤104的相关说明可知,本技术实施例对神经网络训练的过程可以概括为:先对共享参数的第一超网络进行训练,然后对包含分支网络的第二超网络进行多分支训练,其中,对第一超网络进行训练的过程与对第二超网络进行训练的过程相同。具体地,请参阅图17,先构建共享参数的第一超网络,然后获取训练数据,从x个子网中选择部分子网,对选择的部分子网进行训练,此后基于部分子网的训练结果更新超网权重;重复执行上述步骤。接着,构建包含多分支网络的第二超网络,重新执行上述训练步骤,最终得到收敛的第二超网络。
[0273]
在本技术实施例中,先构建包含x个子网络的第一超网,x个子网络共享参数,然后对x个子网络中的y个子网络进行训练,并基于y个子网络的训练结果更新所述第一超网络
的参数,从而保证x个子网络具备较好的性能;此后,构建包括m个分支网络的第二超网络,每个分支网络包含所述x个子网络中的至少一个,再对x个子网络中的z个子网络进行训练,并基于z个子网络的训练结果,更新所述z个子网络所属的分支网络的参数;由于同一分支网络中的所有子网络共享参数,且基于z个子网络中一个子网络的训练结果,仅会更新该子网络所属的分支网络的参数,而不会导致其他分支网络中子网络的参数变化,从而降低了x个子网络间参数的相互干扰,使得x个子网络的性能得到进一步提高,从而使得最终部署在终端设备上的神经网络的性能较好。
[0274]
为了便于理解,下面以一具体示例对本技术实施例提供的训练神经网络的方法进行介绍。
[0275]
该示例包括:
[0276]
第一步,构建第一超网络,具体可参照步骤101的相关说明进行理解,其中,第一超网络是基于搜索空间构建的,而搜索空间是基于目标网络构建的,且第一超网络包含该目标网络。
[0277]
第二步,将不同分辨率的图片作为训练第一超网络的样本。
[0278]
第三步,将目标网络训练至收敛。
[0279]
第四步,从弹性核大小k的维度对第一超网络的参数进行调整,即从第一超网络中选取不同弹性核大小的子网络训练至收敛,具体可参照步骤102的相关说明中的第二种方法进行理解。
[0280]
第五步,从弹性深度d的维度对第一超网络的参数进行调整,即从第一超网络中选取不同弹性深度的子网络训练至收敛,具体可参照步骤102的相关说明中的第三种方法进行理解。
[0281]
第六步,从弹性宽度e的维度对第一超网络的参数进行调整,即从第一超网络中选取不同弹性宽度的子网络训练至收敛,具体可参照步骤102的相关说明中的第四种方法进行理解。
[0282]
第七步,利用改进的三明治策略对第一超网络的参数进行调整,即从第一超网络中选取包含至少一个锚点网络、至少一个非锚点网络在内的子网络训练至收敛,具体可参照步骤101的相关说明中的第三种方法进行理解。
[0283]
第八步,通过多分支的方式对第一超网络的参数进行调整,具体地,基于第一超网络构建包含多个分支网络的第二超网络,然后从第二超网络选取子网络训练至收敛,具体可参照步骤103的相关说明进行理解。
[0284]
第九步,从头部的维度对第二超网络的参数进行调整,具体可参照步骤102的相关说明中的第六种方法进行理解。
[0285]
为了更突出本技术实施例提供的训练神经网络的方法的效果,分别采用本技术提供的训练神经网络的方法和现有的一次训练多处部署(once for all,ofa)算法分别进行训练,搜索空间扩大了约8倍,覆盖了10
20
个子网络,训练结果如下表所示,:
[0286][0287]
由上表可以看出,采用本技术提供的训练神经网络的方法进行训练,与采用现有的一次训练多处部署(once for all,ofa)算法进行训练相比,子网络的参数量范围的下限降低了57%,子网络的flops范围下限减少了83%,子网络的精度范围下限也下降了20%,因此,采用本技术实施例提供的方法训练得到的子网络中覆盖了超轻量神经网络。
[0288]
请参阅图18,图18为本技术实施例中构建索引的装置的实施例示意图。如图18所示,本技术实施例提供了一种训练神经网络的装置,包括:
[0289]
构建单元201,用于构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,x为大于1的整数;
[0290]
训练单元202,用于基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数;
[0291]
构建单元201,用于基于第一超网络的参数构建第二超网络,第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数;
[0292]
训练单元202,用于基于x个子网络中的z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数,z为小于或等于x的正整数。
[0293]
其中,构建单元201的功能可参照前文中步骤101的相关说明进行理解,训练单元202的功能可参照前文中步骤102的相关说明进行理解。
[0294]
在一种实现方式下,
[0295]
y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
[0296]
在一种实现方式下,
[0297]
z个子网络包括第一子网络、第二子网络、p个锚点网络中以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络是x个子网络中满足条件的子网络,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p和q均为小于x的正整数。
[0298]
在一种实现方式下,训练单元202,还用于从x个子网络中选择p个满足条件的子网络作为p个锚点网络。
[0299]
在一种实现方式下,构建单元201,用于基于目标网络建立搜索空间,搜索空间指示目标网络的网络结构的变化范围;基于搜索空间构建第一超网络。
[0300]
在一种实现方式下,
[0301]
目标网络包括输入层、头部以及位于输入层和头部之前的至少一个阶段,每个阶
段包括至少一个块,每个块包括一个升维点卷积,一个深度卷积和一个降维卷积;变化范围与以下至少一种参数有关:目标网络的通道数量的缩放比例和头部的种类;目标网络的通道数量的缩放比例指示以下比例中的至少一种:输入层的输出通道的实际数量与输出通道的设定数量的比例、头部的输出通道的实际数量与输出通道的设定数量的比例,以及每个块中降维卷积的输出通道的实际数量与降维卷积的输出通道的设定数量的比例。
[0302]
在一种实现方式下,目标网络为第二版的移动端网络,头部的种类为第二版的移动端网络的头部或第三版的移动端网络的头部;第二版的移动端网络包括五个阶段,且第二版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、三个块和三个块;第三版的移动端网络包括五个阶段,且第三版的移动端网络中的每个阶段由靠近输入层向远离输入层的方向,依次包含两个块、三个块、四个块、两个块和三个块。
[0303]
在一种实现方式下,
[0304]
在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个和/或z个子网络的通道数量的缩放比例包括多个缩放比例中的至少两个。
[0305]
在一种实现方式下,
[0306]
y个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络;和/或z个子网络包括头部为第二版的移动端网络的头部的子网络,以及头部为第三版的移动端网络的头部的子网络。
[0307]
在一种实现方式下,
[0308]
变化范围与目标网络的通道数量的多个缩放比例相关;y个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
[0309]
在一种实现方式下,变化范围与目标网络的通道数量的多个缩放比例相关;z个子网络包括第一子网络、第二子网络、p个锚点网络以及q个非锚点网络中的至少一个,第一子网络为x个子网络中神经元数量最多的子网络,第二网络为x个子网络中神经元数量最少的子网络,p个锚点网络属于x个子网络,且p个锚点网络的通道数量的缩放比例包含多个缩放比例中的至少两个,q个非锚点网络为x个子网络中除p个锚点网络外的其他子网络,p为小于x且大于1的正整数,q为小于x的正整数。
[0310]
请参阅图19,图19为本技术实施例中服务器的结构示意图。
[0311]
如图19所示,本技术实施例还提供了一种服务器的一个实施例,服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)2022(例如,一个或一个以上处理器)和存储器2032,一个或一个以上存储应用程序2042或数据2044的存储介质2030(例如一个或一个以上海量存储设备)。其中,存储器2032和存储介质2030可以是短暂存储或持久存储。存储在存储介质2030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指
令操作。更进一步地,中央处理器2022可以设置为与存储介质2030通信,在服务器2000上执行存储介质2030中的一系列指令操作。
[0312]
服务器2000还可以包括一个或一个以上电源2026,一个或一个以上有线或无线网络接口2050,一个或一个以上输入输出接口2058,和/或,一个或一个以上操作系统2041,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等等。
[0313]
本技术实施例中,中央处理器2022,用于执行前述图7所示实施例中方法的步骤,具体此处不再赘述。
[0314]
示例性地,中央处理器2022可以执行以下步骤:
[0315]
构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,x为大于1的整数;
[0316]
基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数;
[0317]
基于第一超网络的参数构建第二超网络,第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数;
[0318]
基于x个子网络中的z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数,z为小于或等于x的正整数。
[0319]
在本技术实施例中,中央处理器2022中的具体功能模块划分可以与前述图18中所描述的构建单元和训练单元等功能模块的划分方式类似,此处不再赘述。
[0320]
本技术实施例还提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图7所示实施例中方法的步骤,具体此处不再赘述。
[0321]
其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
[0322]
本技术实施例还提供了芯片或者芯片系统的第一种实施方式,本技术中上述描述的芯片或者芯片系统还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
[0323]
本技术实施例还提供了一种计算机存储介质,该计算机存储介质用于储存为上述控制设备所用的计算机软件指令,其包括用于执行为服务器所设计的程序。
[0324]
该服务器可以如前述图18所描述的训练神经网络的装置。
[0325]
本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现前述图7所示的方法中的流程。
[0326]
请参阅图20,图20为本技术实施例中模型部署系统的结构示意图。
[0327]
本技术实施例还提供了一种模型部署系统,包括:终端设备400和服务器500;
[0328]
服务器500用于执行如7所示的实施例中训练神经网络的方法,并用于从第二超网络中选择一个子网部署在终端设备400中。
[0329]
具体地,服务器500用于:
[0330]
构建第一超网络,第一超网络中包含x个子网络,x个子网络共享参数,x为大于1的整数;
[0331]
基于x个子网络中的y个子网络的训练结果更新第一超网络的参数,y为小于或等于x的正整数;
[0332]
基于第一超网络的参数构建第二超网络,第二超网络包括m个分支网络,m个分支网络包含x个子网络,且x个子网络中任意一个子网络仅包含于一个分支网络中,同一分支网络中的所有子网络共享参数,m为大于1的整数;
[0333]
基于x个子网络中的z个子网络的训练结果,更新z个子网络各自所属的分支网络的参数,z为小于或等于x的正整数。
[0334]
然后,服务器500还用于从第二超网络中选择一个子网部署在终端设备400中。
[0335]
具体地,服务器500从第二超网络中随机采样n个子网络,并获取这n个子网络的性能指标,其中,性能指标可以包含子网络的精度、推理时延和参数数量等,n为正整数。
[0336]
基于前述说明可知,参数数量仅与子网络本身相关,推理时延还与运行环境相关,具体可以与部署的终端设备相关。因此,可以获取每层神经元在目标设备上的推理时延,然后构建推理时延查找表,由于多层神经元之间为串联依赖关系,所以可以通过将推理时延逐层相加,从而得到神经网络在目标设备上的推理时延。
[0337]
子网络的精度由子网络的网络结构、子网络的参数以及验证数据集共同决定。因此可以从第二超网络中获取相应地子网络的参数,然后在验证数据集上推理计算,从而得到子网络的精度。
[0338]
最终,服务器500可以根据n个子网络的性能指标构建性能查找表,性能查找表的主键值可以为子网络的唯一编码,属性值为对应子网络的精度、推理时延和参数数量。
[0339]
作为一种可实现的方式,可以利用子网络的结构参数构造该唯一编码。具体地,将3557357335773355-4634466633464334-42424-0.25-v2作为一子网络的唯一编码,其中该唯一编码代表子网络中五个阶段的弹性深度d分别为4、2、4、2、4,五个阶段包含的16个块的弹性核大小k分别为3、5、5、7、3、5、7、3、3、5、7、7、3、3、5、5,五个阶段包含的16个块的弹性宽度e分别为4、6、3、4、4、6、6、6、3、3、4、6、4、3、3、4,子网络的通道数量的缩放比例scale为0.25,头部的种类为第二版的移动端网络的头部。
[0340]
可以参阅图21,图21为本技术实施例提供的一种终端设备400的结构示意图。
[0341]
如图21所示,终端设备400可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
[0342]
可以理解的是,本技术实施例示意的结构并不构成对终端设备400的具体限定。在本技术另一些实施例中,终端设备400可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0343]
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器
(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0344]
其中,控制器可以是终端设备400的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0345]
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0346]
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i1c)接口,集成电路内置音频(inter-integrated circuit sound,i1s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
[0347]
可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备400的结构限定。在本技术另一些实施例中,终端设备400也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0348]
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。
[0349]
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
[0350]
终端设备400的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0351]
在一些可行的实施方式中,终端设备400可以使用无线通信功能和其他设备通信。例如,终端设备400可以和第二电子设备通信,终端设备400与第二电子设备建立投屏连接,终端设备400输出投屏数据至第二电子设备等。其中,终端设备400输出的投屏数据可以为音视频数据。
[0352]
天线1和天线2用于发射和接收电磁波信号。终端设备400中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0353]
移动通信模块150可以提供应用在终端设备400上的包括1g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电
磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线2转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0354]
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0355]
无线通信模块160可以提供应用在终端设备400上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线1接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0356]
在一些实施例中,终端设备400的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端设备400可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
[0357]
终端设备400通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0358]
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,终端设备400可以包括1个或n个显示屏194,n
为大于1的正整数。
[0359]
在一些可行的实施方式中,显示屏194可用于显示终端设备400的系统输出的各个界面。终端设备400输出的各个界面可参考后续实施例的相关描述。
[0360]
终端设备400可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
[0361]
isp用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给isp处理,转化为肉眼可见的图像。isp还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp可以设置在摄像头193中。
[0362]
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,终端设备400可以包括1个或n个摄像头193,n为大于1的正整数。
[0363]
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。
[0364]
视频编解码器用于对数字视频压缩或解压缩。终端设备400可以支持一种或多种视频编解码器。这样,终端设备400可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg1,mpeg3,mpeg4等。
[0365]
npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现终端设备400的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0366]
外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展终端设备400的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0367]
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端设备400的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备400使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
[0368]
终端设备400可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。在一些可行的实施方式中,音频模块170可用于播放视频对应的声音。例如,显示屏194显示视频播放画面时,音频模块170输出视频播放的声音。
[0369]
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频
输入转换为数字音频信号。
[0370]
扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。
[0371]
受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。
[0372]
麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
[0373]
耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,omtp)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the usa,ctia)标准接口。
[0374]
压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。陀螺仪传感器180b可以用于确定终端设备400的运动姿态。气压传感器180c用于测量气压。
[0375]
加速度传感器180e可检测终端设备400在各个方向上(包括三轴或六轴)加速度的大小。当终端设备400静止时可检测出重力的大小及方向。还可以用于识别终端姿态,应用于横竖屏切换,计步器等应用。
[0376]
距离传感器180f,用于测量距离。
[0377]
环境光传感器180l用于感知环境光亮度。
[0378]
指纹传感器180h用于采集指纹。
[0379]
温度传感器180j用于检测温度。
[0380]
触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于终端设备400的表面,与显示屏194所处的位置不同。
[0381]
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备400可以接收按键输入,产生与终端设备400的用户设置以及功能控制有关的键信号输入。
[0382]
马达191可以产生振动提示。
[0383]
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0384]
sim卡接口195用于连接sim卡。
[0385]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0386]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0387]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0388]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0389]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献