发明内容
本申请实施例提供一种训练方法和装置、手势识别方法、电子设备及存储介质。下面对本申请涉及的各个方面进行介绍。
第一方面,提供一种训练方法,包括:对第一手势检测网络进行增强,得到第二手势检测网络;利用手势图片形成的训练数据集训练所述第一手势检测网络和所述第二手势检测网络,得到所述第一手势检测网络对应的第一损失以及所述第二手势检测网络对应的第二损失;根据所述第一损失和所述第二损失,更新所述第一手势检测网络和/或第二手势检测网络的参数。
结合第一方面,在一些实现方式中,所述第二手势检测网络与所述第一手势检测网络共享所述第一手势检测网络的模型参数。
结合第一方面,在一些实现方式中,所述第二手势检测网络为对所述第一手势检测网络进行增强后得到的多个第二手势检测网络之一,所述方法还包括:针对所述第一手势检测网络的每轮训练过程,从所述多个第二手势检测网络中选取一个第二手势检测网络参与所述每轮训练过程。
结合第一方面,在一些实现方式中,所述对第一手势检测网络进行增强,包括:增加所述第一手势检测网络的通道和/或神经网络层的数量。
结合第一方面,在一些实现方式中,所述训练数据集包含以下类型的手势图片中的一种或多种:不同场景的手势图片;不同光照的手势图片;与拍摄镜头距离不同的手势图片;以及带手套和不带手套的手势图片。
第二方面,提供一种手势识别方法,包括:获取待识别的手势;利用第一手势检测网络识别所述手势;其中,所述第一手势检测网络是基于如第一方面或第一方面中的任意一种实现方式所述的方法训练得到的。
第三方面,提供一种训练装置,包括:增强模块,用于对第一手势检测网络进行增强,得到第二手势检测网络;训练模块,用于利用手势图片形成的训练数据集训练所述第一手势检测网络和所述第二手势检测网络,得到所述第一手势检测网络对应的第一损失以及所述第二手势检测网络对应的第二损失;更新模块,用于根据所述第一损失和所述第二损失,更新所述第一手势检测网络的参数。
第四方面,提供一种训练装置,包括:存储器,用于存储代码;处理器,用于执行所述存储器中存储的代码,使得所述训练装置执行如第一方面或第一方面中的任意一种实现方式所述的方法。
第五方面,提供一种电子设备,包括:存储器,用于存储代码;处理器,用于执行第二方面所述的手势识别方法。
第六方面,提供一种计算机可读存储介质,其上存储有代码,所述代码用于执行如第一方面或第二方面中的任意一种可能的实现方式所述的方法。
第七方面,提供一种计算机程序产品,包括代码,所述代码用于执行如第一方面或第二方面中的任意一种可能的实现方式所述的方法。
通过引入第二手势检测网络(增强网络),并基于第二手势检测网络对第一手势检测网络(轻量级网络)的训练过程进行监督,能够提高第一手势检测网络的精度。此外,由于第一手势检测网络和第二手势检测网络同时训练,能够降低训练开销。
具体实施方式
随着神经网络技术的发展,基于手势识别网络的手势识别技术的应用越来越广。例如,某些电子设备(如手机)内部部署有手势识别网络,使得该电子设备具备手势识别功能。例如,基于手势识别网络,用户可以通过手势来控制手机实现接挂电话、短视频点赞、翻页等功能。
很多电子设备受限于自身的资源配置,往往需要部署轻量级的手势识别网络。因此,如何训练处轻量级的手势识别网络,成为了研究的热点问题。
相关技术1提出一种基于知识蒸馏和注意力机制的手势检测方法。该手势检测方法首先获取到手势图片构建出训练数据集并基于注意力机制构建出教师网络和轻量化的学生网络;然后使用构建出的数据集训练大的教师网络;接着,通过人工标注、自动生成随机数据集、教师网络预测未标注数据的方式扩充数据集;然后通过扩充好的数据集和教师网络一起,对学生网络进行蒸馏训练;最后得到训练好的轻量级手势检测网络,进行预测。相关技术1的实现流程可以参见图1。
相关技术2提出一种基于数据增强和轻量化主干网络的手势检测方法。相关技术2的实现流程如图2所示,首先是基于SqueezeNet为主干,构建轻量级手势检测网络;获取手势图片和背景图片,然后进行数据增强,得到训练数据集;然后基于训练数据集训练轻量化手势检测网络,得到手势检测网路进行预测。
相关技术1和2的设计目的都是获得一个轻量级、可部署的手势检测网络。相关技术2直接采用一个轻量级的SqueezeNet作为主干网络,并利用数据增强进行网络训练。数据增强固然被大量网络证明了其可以提高模型精度,但在轻量化网络上往往不能奏效。因为轻量化网络的学习表征能力是弱于大模型的,数据增强给了更多、更复杂的数据,轻量化网络的表征能力不足以学习到数据中的有效信息。相关技术2的缺陷在于精度不足。
相关技术1采用知识蒸馏的方法引入了额外监督,可以稍微缓解相关技术2精度不足的问题,但是相关技术1需要先训练出一个大的教师网络,再使用教师网络蒸馏辅助训练学生网络。这样做的缺陷在于需要两次训练,且大模型训练更加耗时。相关技术1虽然在一定程度上解决了相关技术2的精度问题,但训练耗时且成本高。
针对上述问题,本申请实施例提出一种训练方法,下面结合图3,对该训练方法进行详细介绍。
参见图3,在步骤S310,对第一手势检测网络进行增强,得到第二手势检测网络。
该第一手势检测网络可以是轻量级的手势检测网络。例如,该第一手势检测网络可以是能够部署在手机等手持终端设备上的手势检测网络。该第二手势检测网络也可以称为增强网络。所谓增强,可以理解为第二手势检测网络的模型参数与第一手势检测网络的模型参数相比更多。后文有些实施例中将第一手势检测网络称为基础网络,将第二手势检测网络称为增强网络。
本申请实施例对第一手势检测网络的增强方式不作具体限定,可以从宽度方向对第一手势检测网络进行增强,也可以从深度方向对第一手势检测网络进行增强,也可以是上述两种增强方式的结合。
从深度方向增强第一手势检测网络可以包括:增加第一手势检测网络的神经网络层的数量。例如,第一手势检测网络包括N个神经网络层,可以在该第一手势检测网络中增加M个神经网络层,从而得到包含N+M个神经网络层的第二手势识别网络。
从宽度方向增强第一手势检测网络可以包括:增加第一手势检测网络的通道数量。例如,参见图4,第一手势检测网络可以包括一个或多个卷积层,通过增加卷积通道数量的方式可以扩宽第一势检测网络。相比于从深度方向增强第一手势检测网络,从宽度方向增强第一手势检测网络之后得到的第二手势识别网络在训练时间上的开销较小。
在一些实施例中,第二手势检测网络为对第一手势检测网络进行增强后得到的多个第二手势检测网络之一。也就是说,步骤S310对第一手势检测网络进行增强之后,可以得到一个第二手势检测网络,也可以得到多个第二手势检测网络。
例如,可以首先构建出最大的增强网络。假设原本卷积算子的宽度,即输出通道数,为w。可以设定一个增强因子r对其进行增强,那么增强后的卷积算子宽度就为w*r。为了简化操作,可以不逐层设定增强因子r,整个网络共用增强因子r。
在构建出最大的增强网络后,可以通过从最大增强网络对输出通道采样的方式得到其他增强网络。例如,可以设定另一个超参数s,对其进行线性切分。比如,基础网络(即前文提到的第一手势检测网络)的宽度为w,最大增强网络宽度为w*r,可以设定r=3,s=2,那么可能的增强网络宽度就为[w,2*w,3*w]。不同层同样也能有不同的切分因子s,但是为了简化操作,也不逐层设定增强因子,整个网络共用切分因子s。
在一些实施例中,第二手势检测网络与第一手势检测网络可以共享第一手势检测网络的模型参数。所谓第二手势检测网络共享第一手势检测网络的模型参数,可以理解为第二手势检测网络包含第一手势检测网络。或者说,通过对第二手势检测网络进行采样,可以得到第一手势检测网络。如果步骤S310构建出多个第二手势检测网络,则该多个第二手势检测网络相互之间可以共享模型参数。例如,在构建出最大的增强网络之后,其他手势检测网络可以通过对该最大的增强网络进行采样得到。由于第一手势检测网络和第二手势检测网络之间共享模型参数,因此,模型参数的总存储量由最大的增强网络的模型参量决定,与独立存储各个手势检测网络的模型参数的方式相比,不但可以降低计算资源和内存开销,还可以减少训练时间。如果采用共享模型参数的方式,在训练完成之后,可以通过对增强网络进行采样的方式得到最终的轻量级的手势检测网络。
在执行图1的步骤S320之前,可以先获取手势图片形成的训练数据集。该训练数据集可以包含以下类型的手势图片中的一种或多种:不同场景的手势图片;不同光照的手势图片;与拍摄镜头距离不同的手势图片。图5给出了手势图片的示例,图5包含不同场景、不同远近的多种手势图片。在一些实施例中,为了应对复杂的手势识别场景,训练数据集还可以包括带手套和不带手套的手势图片。采集到手势图片之后,可以对手势图片进行标注,从而得到最终的训练数据集。
接着,在步骤S320~S330,利用手势图片形成的训练数据集训练第一手势检测网络和第二手势检测网络,得到第一手势检测网络对应的第一损失以及第二手势检测网络对应的第二损失;根据第一损失和第二损失,更新第一手势检测网络和/或第二手势检测网络的参数。也就是说,可以利用第二手势检测网络(增强网络)作为额外监督信号来训练第一手势检测网络(基础网络)。该监督可以通过在更新基础网络时,考虑增强网络的损失来实现。
前文提到,增强网络的数量可以包括一个,也可以包括多个。以多个增强网络为例,则在考虑多个增强网络的基础上,基础网络的损失函数可以采用下式表示:
Laug=L(Wt)+a1*L([Wt,W1])+a2*L([Wt,W2])+…+ai*L([Wt,Wi])
其中,[Wt,Wi]表示一个包含了基础网络在内的增强网络,Wt是基础部分,Wi是扩充部分。其中L(Wt)是基础监督,a1*L([Wt,W1])+a2*L([Wt,W2])+…+ai*L([Wt,Wi])是若干个增强网络的辅助监督。ai是一个超参数,来控制不同增强网络监督信号在整个损失函数中的占比。
在包括多个增强网络的情况下,每一个增强网络都需要一次额外的前向计算和反向传播过程。如果在每一步训练中,计算所有的增强网络的损失函数,这也会增大计算资源开销和时间成本。因此,在一些实施例中,在每一步训练中,仅仅随机采样一个增强网络作为辅助监督信号进行前向计算和反向传播。因此,基础网络参数的更新就可以表示为下式:
其中,
表示更新后的基础网络,/>
表示更新前的基础网络,lr表示学习率,该参数可以是一个超参,且该参数的取值可以预设设置为固定值。a可以是一个超参数,来控制不同增强网络监督信号在整个损失函数中的占比。
本申请实施例提出了一种轻量级的手势检测网络(即前文提到的第一手势检测网络)训练方法,该轻量级的手势检测网络具有推理速度快、模型尺寸小,易于在手机端进行部署。此外,本申请实施例提出的网络增强技术可以在保证网络轻量化的同时,引入增强网络作为辅助监督信号,有效提高了轻量化网络的学习表征能力,保证了轻量化网络的精度。该网络增强技术中,基础网络(第一手势检测网络)和增强网络(第二手势检测网络)一起训练,仅需一次训练即可完成,节约了计算资源开销和时间成本。
本发明首先会通过扩展网络的方式对基础网络进行增强,以得到若干个学习表征能力更强的增强网络。接着,本发明会使用增强网络协同进行训练,以作为辅助监督信号对学习能力稍弱的基础网络进行参数更新。通过这种方式,就可以在更短的训练时间内,学习出一个表征能力更强的轻量化基础模型。
图6是本申请实施例提供的手势识别方法的流程示意图。图6所示的手势识别方法可以基于前文描述的训练方法训练出的第一手势检测网络进行。图6的方法包括步骤S610和和步骤S620。
在步骤S610,获取待识别的手势。例如,可以通过手机上的相机采集待识别的手势。
在步骤S620,利用第一手势检测网络识别手势。
上文结合图1-图6,详细描述了本申请的方法实施例,下面结合图7和图9,详细描述本申请的装置实施例。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图7是本申请一个实施例提供的训练装置的结构示意图。图7所示的训练装置700可以包括增强模块710、训练模块720和更新模块730。
增强模块710可用于对第一手势检测网络进行增强,得到第二手势检测网络。
训练模块720可用于利用手势图片形成的训练数据集训练第一手势检测网络和第二手势检测网络,得到第一手势检测网络对应的第一损失以及第二手势检测网络对应的第二损失。
更新模块730可用于根据第一损失和第二损失,更新第一手势检测网络的参数。
图8是本申请另一实施例提供的训练装置的结构示意图。图8的训练装置800可以包括存储器810和处理器820。
存储器810可用于存储代码。
处理器820可用于执行存储器中存储的代码,使得训练装置800执行前文任一实施例描述的训练方法。
图9是本申请一个实施例提供的电子设备的结构示意图。图9所示的电子设备900例如可以是手机。该电子设备可以包括存储器910和处理器920。
存储器910可用于存储代码。
处理器920可用于执行图6所示的手势识别方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本公开实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(Digital Video Disc,DVD))、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以意识到,结合本公开实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。