具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
首先对本发明实施例涉及的相关术语进行解释。
度量学习,度量学习也叫作相似度学习,度量学习在广泛应用于模式识别领域,尤其是在图像识别领域,例如人重识别、车辆重识别、多目标跟踪等任务中。如果需要计算两张图片之间的相似度,如何度量图片之间的相似度使得不同类别的图片相似度小而相同类别的图片相似度大就是度量学习的目标。例如如果我们的目标是识别人脸,那么就需要构建一个距离函数去强化合适的特征(如发色,脸型等);而如果我们的目标是识别姿势,那么就需要构建一个捕获姿势相似度的距离函数。为了处理各种各样的特征相似度,我们可以在特定的任务通过选择合适的特征并手动构建距离函数。
代理,代理的本质实际上是期望:xi更靠近Wi,也即xi和Wi之间的夹角越小越好。其中,W也就是本发明实施例中涉及的权重矩阵,Wi能够近似作为第i类图像的图像特征的中心,也就是本发明实施例中涉及的中心向量,因此,W的每一列Wi均表征第i类图像的图像特征xi优化的目标和代表,也就是第i类图像的图像对应的中心向量。
需要说明的是,在本发明实施例介绍的内容中,黑色标粗字体表征向量或者矩阵。
目前,最先进的深度度量识别方法大多会基于softmax交叉熵损失函数的多分类框架进行模型训练,训练得到的模型可以在各个领域获得极高的识别效果,但是仍然存在一些问题,导致了实际训练与推理过程当中的性能受到了大幅限制,使得图像识别的效率非常低,难以满足用户对于图像识别的准确性需求。
为了方便理解上述基于softmax交叉熵损失函数的训练方式的缺陷,本发明实施例首先假设:训练分类目标有K类,现在存在一张人脸图像,将该人脸图像经过CNN进行特征提取,获得该人脸图像的特征向量x∈Rn×1,其中,R表征实数域,n表征x的维度;然后经过分类过程,在softmax前的一层inner-product 的权重矩阵记为W∈Rn×K,表征W是一个实数域的n×K的矩阵。
那么,对于第i∈{1,2,…,K}类图像,假设第i类图像的特征向量为xi,其对应的标签记yi,Wj∈R1×n,且为W的第j列。显然,在经过inner-product 之后获得的向量f∈RK×1,且f=[f1,f2,…,fj,…,fK]T,其中,T表征对向量f进行转置,由于:
其中,
表征一个K维度的常数向量,显然,对于∀j∈{1,2,…,K},有
,
,其中,
表征对
的第j列进行转置;
表征
的第y
i列;
表征向量
的第j行,这里可以将
中的权重向量与特征向量之间的夹角记为
。
现有技术用来训练的Softmax交叉熵损失函数如下公式(1)所示:
其中,L
s即为Softmax交叉熵损失函数;N为训练过程中设置的一个批次处理图像的个数(batch-size);
表征该批次图像的第i张图像的特征向量;f
yi表征向量f的第
位;f
j表征向量f的第
位;
表征矩阵
的第
列;
表征矩阵
的第
列;
表征常数向量
的第
位;
表征常数向量
的第
位;
表征向量
与向量
的夹角;
表征向量
与向量
的夹角;
可以知晓的是,在各种基于Softmax交叉熵损失函数的变种中,存在基于大角度余裕的优化方式,即期望不同类别之间的角度间距大幅大于同类别,如公式(2)所示:
其中,m为系数。
相关技术对上述优化方式进行了改进,提升了训练的稳定性,其中最重要的是进行了特征和代理的归一化,即如下公式(3)所示:
上述改进保证了左右特征与代理均在一个高维超球面上优化,然而,上述优化方式仍然存在以下问题:
第一个问题:对大规模训练数据不友好。
本发明实施例中所涉及的“不友好”实际就是优化效率不理想,即数据量越大,每一次迭代训练的有效性就越差,就需要更多的迭代次数才能达成优化目标。
众所周知,现有的度量学习方式均是基于统计学习理论,当训练样本的数量与类别越多,在验证集或者实际部署时模型的效果越好,当前在度量学习领域,训练样本的类别动辄上万,尤其是人脸识别的训练任务有可能达到上亿类别的训练样本,记为如下公式(4):
其中,pj没有实际意义,仅仅是为后续方便的简记符号;对上述公式(1)进行求导可以得到的求导结果如下公式(5):
从上述求导结果可以直接得到如下推论:
1. Softmax交叉熵损失函数对各个类别的梯度之和为0:
2. Softmax交叉熵损失函数对非目标分数的梯度之和等于对目标分数梯度的相反数如公式(6)所示:
从上述两个推论直接可以看出,基于Softmax交叉熵损失函数的训练方式,遇到样本类别足够大的情况,每一次推理实际上只有一个类别获得了正向的梯度,而其他所有类别均分和正向梯度向反方向的负向梯度。这导致了优化的效率实际上并不高。
例如,在上述公式(3)中,对代理与特征进行了归一化,导致了fj=cos(θj)∈[−1,1]的取值被限定了,如公式(7)所示:
考虑到Softmax交叉熵损失函数的原始定义,假设理想情况下满足公式(8):
则当N=1时(仅考虑一组训练样本),那么公式(1)中的Softmax交叉熵损失函数可以如公式(9)所示:
很明显可以看出,实际训练中的损失值只会比这个更大,这样的损失大小对于神经网络而言时极难收敛。
第二个问题:优化困难导致了超参数多且难以调试。
由上述第一个问题,相关技术为了在可以接受时间内完成网络的训练,引入了相当多的超参数。在训练阶段,超参数的引入为神经网络的调参带来了很多工作量。
例如,假设引入一个超参数s,并另
,取s=30∼60则可以另L
s收敛,但是这个参数很难调试,并且当s较大时,部分图像类别获得的梯度实际上已经可以小到忽略不计,因此,对于超参数而言,最佳选择是取决于训练数据集。
与此同时,为了解决Softmax交叉熵损失函数收敛困难的问题,相关技术还提供了一种训练技巧,即引入一个超参数λ,使得前述内容中涉及的f可以如公式(10)所示:
其中,f是改进后的Softmax交叉熵损失函数,超参数λ可以如公式(11)所示:
其中,base,γ,power,λmin 都是超参数,iter是当前迭代次数。
这种优化方式相当于普通全连接层和softmax交叉熵损失函数的优化方式中以及改进后的全连接层和softmax交叉熵损失函数中的λ加权平均,其目的是在训练不理想的情况下回归到普通的Softmax交叉熵损失函数,来让其继续收敛,而到训练后期逐渐凸显出改进后的Softmax交叉熵损失函数的效果。因此
的选择和总的迭代次数有关,假设一个训练任务在50000次迭代时收敛,那么一般情况下的选择是base=1000,γ=0.000003,power=30,其中,
的衰退示意图如图1所示,图1为现有技术中一种超参数调节示意图,值得注意的是,如果到后期
过小也会出现"瞬间发散"导致训练失败,所以可以限定λ
min到5∼10
5。这里反向传播就不再指明,因为结论是显然的。可以看出,为了使网络收敛已经附加了两个超参数了,还没有考虑改进Softmax交叉熵损失函数带来的其他超参数。这就使得神经网络的变得困难重重。
综合上述内容可以很明显的看出,现有的训练方式随着训练样本的类别的增加,所需的训练时间成本非常高,模型的优化效率较低,同时,通过引入相当多的超参数的方式来进行训练,使用了大量的超参数和技巧使得训练收敛,对训练模型进行调参同样会带来了更大的工作量。
针对于Softmax交叉熵损失函数在样本量较大时优化效率低下的问题,本发明实施例提供了一种图像识别模型的训练方式,该训练方法的主要构思在于:不再使用每个代理W
j作为图像类别i的回归目标,而使用
也即正样本在球面上的对称代理作为优化目标。
需要说明的是,本发明实施例中涉及的Wj和x均已经进行了归一化处理,所以所有的特征向量均因在同一个超球面上活动。
首先请参阅图2,图2为本发明实施例提供的电子设备的一种示意性结构框图。电子设备100可以是训练图像识别模型的设备,和/或,是运行本发明实施例提供的图像识别方法的设备,比如手机、个人电脑(personal computer,PC)、平板电脑、服务器等等。
电子设备200包括存储器201、处理器202和通信接口203,该存储器201、处理器202和通信接口203相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
存储器201可用于存储软件程序及模块,如本发明实施例提供的图像识别模型训练装置500或图像识别装置600对应的程序指令/模块,可以软件或固件(firmware)的形式存储于存储器201中或固化在电子设备200的操作系统(operating system,OS)中,处理器202通过执行存储在存储器201内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口203可用于与其他节点设备进行信令或数据的通信。
其中,存储器201可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器202可以是一种集成电路芯片,具有信号处理能力。该处理器202可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图2所示的结构仅为示意,电子设备200还可以包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
下面以图2所示的电子设备200作为执行主体为例,对本发明实施例中可信度分析模型的训练方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参见图3,图3为本发明实施例提供的图像识别模型训练方法的示意性流程图:
S301,获得至少一组训练图像;至少一组训练图像中包括多张图像样本。
在本发明实施例中,在训练过程中可以设置一组或多组训练图像,每组训练图像中可以包括N张图像,N大于1,称为一个batch-size。图像样本可以但不限于是人脸图像、车辆图像等。训练图像可以来自预先生成的图像库,该图像库中可以有不同目标对象对应的多张图像,目标对象可以是人、车辆、动物等。通过图像库中图像样本进行训练,可以识别一张图像中目标对象的类别或者身份。
例如,假设利用张某的多张图像作为图像样本,对本实施例中图像识别模型进行训练,得到的图像识别模型即可识别出一张图像中的目标对象是否是人,以及这个人是否是张三。
可以理解的是,针对每张图像样本,可以具有类标签值,表征该张图像样本属于哪一类图像。
在可能的实施方式中,类标签值可以但不限于用一个one-hot标签向量的形式表示,其中,可以用数字“1”在one-hot标签向量中的位置来标识一张图像样本的所属类别,在例如存在K类图像,针对每张图像样本,它对应的类标签向量可以形如(1,…,0,0,0,…0),其中该类标签向量是K维度的,1表征该张图像样本属于第1类。
S302,根据多张图像样本和预设的权重矩阵,对初始的度量学习模型的损失函数进行迭代训练,直到损失函数处于收敛状态,得到训练后的图像识别模型。
其中,权重矩阵用于维护每一类图像对应的中心向量。
其中,损失函数是基于每次迭代训练中每张图像样本的特征向量和权重矩阵构建的;迭代训练用于使第一图像样本的特征向量与权重矩阵中的第一中心向量之间的夹角变小,且使除第一图像样本以外的剩余图像样本的特征向量,与第一中心向量的对称向量之间的夹角变小;其中,第一图像样本为多张图像样本中的任一个,第一中心向量与第一图像样本的类标签值对应。
根据本发明提供的图像识别模型训练方法,首先获得至少一组训练图像;至少一组训练图像中包括多张图像样本; 根据多张图像样本和预设的权重矩阵,对初始的度量学习模型的损失函数进行迭代训练,直到损失函数处于收敛状态,得到训练后的图像识别模型;其中,权重矩阵用于维护每一类图像对应的中心向量;其中,损失函数是基于每次迭代训练中每张图像样本的特征向量和权重矩阵构建的;迭代训练用于使第一图像样本的特征向量与权重矩阵中的第一中心向量之间的夹角变小,且使除第一图像样本以外的剩余图像样本的特征向量,与第一中心向量的对称向量之间的夹角变小。
本发明在训练过程中采用的对称代理的原理,相比于现有技术,即需要训练过程中先依次分别搜索到每类图像各自对应的中心向量,然后通过迭代训练使得每类图像的特征向量与其他类图像的中心向量之间的夹角变大,即让不同类样本的特征向量尽量远离其他类样本,在数据量特别大的情况下搜索耗时较长,降低了优化效率,本发明实施例针对每类图像样本,直接使其他类图像样本更靠近每类图像样本在超球面上的对称向量,本发明实施例不再执行上述搜索方式,该训练方式能够在大规模数据集的情况下,可以加快模型训练的优化效率,获得精准度较高的图像识别模型,从而可以提高图像识别的准确率和效率。
可选地,在一种可能的实施方式中,上述步骤S302的实施方式可以如图4所示,图4为本发明实施例提供的步骤S302的示意性流程图:
S302-1,将多张图像样本输入到初始的度量学习模型中,获得每张图像样本的特征向量。
S302-2,根据每张图像样本的特征向量、权重矩阵,计算损失函数的损失值,并基于损失值更新权重矩阵以及特征向量。
S302-3,在每次迭代训练中,基于更新后的权重矩阵以及更新后的每张图像样本的特征向量,更新损失函数的损失值。
S302-4,当确定损失函数的损失值小于或等于预设阈值,则确定损失函数处于收敛状态,得到训练后的度量学习模型,并将训练后的度量学习模型作为图像识别模型。
通过上述训练方式,可以快速得到收敛后的度量学习模型,提高了模型训练的性能。
可选地,在可能的实施方式中,为了适应大规模训练数据,避免由于调参问题而造成的模型训练困难问题,本发明实施例提供了一种构建损失函数的实施方式,请参见图5,图5为本发明实施例提供的构建损失函数的示意性流程图:
S41,在每次迭代训练过程中,获得更新后的每张图像样本的特征向量、以及更新后的权重矩阵。
S42,根据更新后的每张图像样本的特征向量、以及更新后的权重矩阵构建损失函数。
在第一种可能的实施方式中,针对softmax交叉熵损失函数在样本量较大时优化效率低下的问题,步骤S31可以如图6所示,图6为本发明实施例提供的步骤S42的第一种实施方式的示意性流程图:
S42-1,针对第一图像样本,从更新后的权重矩阵中确定第一图像样本的类标签值对应的第一中心向量。
其中,第一图像样本为多张图像样本中的任一个。
S42-5,计算第一图像样本的特征向量与第一中心向量的对称向量之间的第一夹角、第一图像样本的特征向量与更新后的权重矩阵中的剩余中心向量之间的第二夹角。
S42-9,遍历多张图像样本,获得每张图像样本对应的第一夹角、以及全部的第二夹角。
S42-14,根据预设的图像类别总数和预设参数、图像样本数、每张图像样本对应的第一夹角以及全部第二夹角,构建损失函数。
通过上述步骤构建的损失函数如公式(12)所示:
为了能够说明上述损失函数能够解决现有技术中样本量较大时优化效率低下的问题,请参见图7,图7为本发明实施例提供的一种构建损失函数的原理示意图。该图主要说明了本发明实施例在构建损失函数过程中,采用了基于双元组的代理方案,即对于每一个样本,该样本的特征向量x
i,需要其尽可能的趋近于该样本对应的图像类别的中心向量(代理)
,其余类别的图像对应的特征向量(x
j,x
k等)需要其尽可能的趋近于该类别的中心向量的对称向量(即对称代理)
。
在第二种可能的实施方式中,本发明实施例在上述图6的基础上,给出了另一种构建损失函数的实施方式,即步骤S32还可以如图8所示,图8为步骤S42的第二种实施方式的示意性流程图:
即在步骤S42-14之前,还可以包括如下步骤:
S42-10,从除第一图像样本的剩余图像样本中确定第二图像样本,并从更新后的权重矩阵中确定与第二图像样本的类标签值对应的第二中心向量;
S42-11,计算第二图像样本的特征向量与第一中心向量的对称向量之间的第三夹角、第二图像样本的特征向量与更新后的权重矩阵中除第二中心向量外的剩余中心向量之间的全部第四夹角;
S42-12,遍历除第一图像样本的剩余图像样本,获得剩余图像样本各自对应的第三夹角、以及全部的第四夹角;
在上述步骤的基础上,步骤S42-9可以这样实现:
步骤S42-9,根据预设的图像类别总数和预设参数、图像样本数、每张图像样本对应的第一夹角、全部第二夹角、第三夹角以及全部第四夹角,构建损失函数。
也就是说,本发明实施例为减少优化的困难程度,将原交叉熵损失中的 one-hot标签的表现形式进行了改进新的也即:
其中,(0,…,0,1,0,…0)表征原softmax交叉熵损失函数中的one-hot标签,(1/Te,…, 1/Te, e/T, 1/Te,…1/Te),其中,T=e+(K-1)/e,K为图像类别总数,e为数学常数,此时通过上述步骤构建的损失函数形如公式(13):
其中,xk表征第k类图像对应的特征向量。
在第三种可能的实施方式中,在上述图8的基础上,本发明实施例还给出一种可能的实施方式,请参见图9,图9为本发明实施例提供的步骤S42的第三种实现方式的示意性流程图,在步骤S42-14之前,还可以包括:
S42-13,根据特征向量的维度确定的预设夹角。
可以理解的是,特征向量是属于n维度向量,那么预设夹角可以表示为
。那么步骤S42-14可以这样实现:
根据预设的图像类别总数和预设参数、图像样本数、每张图像样本对应的所述第一夹角、全部第二夹角、所述第三夹角以及全部所述第四夹角、所述预设夹角,构建所述损失函数。
本发明实施例注意到高维空间中均匀分布随机变量各向同性,也即是任意两个高维向量质检的夹角以大概率的在π/2附近7。如果不对代理的位置有限定,那么大概率地除了目标类别的所有代理均会落在与目标代理正交且过球心的超平面上。因此我们限定该超平面附近均是不可入区域。
因此,在上述第二种可能的实施方式中,本发明实施例限制了所有x不可以落在两个橙色超平面之间,以期避免无效优化。其位置为过球心的垂直于
,与球心夹角为
的两个超平面,如图10所示,图10为本发明实施构建第三种损失函数的原理示意图,因此,在第二种可能的实施方式中,本发明实施例构建的损失函数形如公式(14):
基于相同的发明构思,本发明实施例还提供了一种图像识别方法,请参见图11,图11为本发明实施例提供的图像识别方法的示意性流程图:
S501,获得待识别图像;
S502,将待识别图像输入训练后的图像识别模型中进行识别,得到待识别图像中目标对象的分类结果。
其中,图像识别模型是根据本发明实施例提供的图像识别模型训练方法所得到的。
可以理解的是,上述图像识别方法可以但不限于应用于行人重识别、车辆重识别以及多目标跟踪的识别任务中。
上述分类结果可以是目标对象属于哪一类别,例如,待识别图像中是一辆车,那么将待识别图像输入到预先训练好的图像识别模型中进行识别,模型就会输出图像中的目标对象是一辆车,若待识别图像中是一只猫,那么模型输出的结果就会猫。
上述待识别图像可以是一张,通过图像识别,可以确定该图像中目标对象的身份,例如,输入一张人脸图像,通过图像识别确定该张人脸图像是张某。
上述待识别图像是多张图像,将多张图像输入到图像识别模型中,得到的这多张图像的分类结果,比如,输入三张人脸图像,经过图像识别,得到其中两张属于同一个人,另外一张属于另一个人,或者三张图像分别属于三个人,或者三张图像属于同一个人。
基于与本发明实施例提供的上述图像识别模型训练方法相同的发明构思,请参阅图12,图12为本发明实施例提供的图像识别模型训练装置的功能模块图,该图像识别模型训练装置500包括:
获得模块510,用于获得至少一组训练图像;所述至少一组训练图像中包括多张图像样本;
训练模块520,用于根据多张图像样本和预设的权重矩阵,对初始的度量学习模型的损失函数进行迭代训练,直到损失函数处于收敛状态,得到训练后的图像识别模型;其中,权重矩阵用于维护每一类图像对应的中心向量;
其中,损失函数是基于每次迭代训练中每张图像样本的特征向量和权重矩阵构建的;迭代训练用于使第一图像样本的特征向量与权重矩阵中的第一中心向量之间的夹角变小,且使除第一图像样本以外的剩余图像样本的特征向量,与第一中心向量的对称向量之间的夹角变小;其中,第一图像样本为多张图像样本中的任一个,第一中心向量与第一图像样本的类标签值对应。
在可选地实施方式中,上述训练模块520还可以用来执行图3、图4、图5、图6、图8、图9中的各个步骤。
基于与本发明实施例提供的上述可信度分析方法相同的发明构思,请参阅图13,图13为本发明实施例提供的图像识别装置的功能模块图,该图像识别装置600包括:
获取模块610,用于获取待识别图像;
识别模块620,用于将待识别图像输入训练后的图像识别模型中进行识别,得到待识别图像中目标对象的分类结果,其中,图像识别模型是根据本发明实施例提供的图像识别模型训练方法所得到的。
本发明实施例还提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述实施方式中任一项的图像识别模型训练方法和/或图像识别方法。该计算机存储介质可以是,但不限于,U盘、移动硬盘、ROM、RAM、PROM、EPROM、EEPROM、磁碟或者光盘等各种可以存储程序代码的介质。
应该理解到,在本发明所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。