本发明涉及模型搜索技术领域,具体而言,涉及一种基于隐马尔可夫模型的目标检测模型的搜索方法。
背景技术:
随着人工智能技术的发展,目标检测作为人工智能的一个重要应用,广泛应用于越来越多的领域。比如人脸识别,行人检测,客流统计,安全防范等。与此同时,各种各样的目标检测算法也应用而生,包括ssd,yolov3,fasterr-cnn等。面对不同的检测任务,通常需要构造特定网络结构的目标检测模型,而现有的目标检测模型通常存在含带参数量庞大的问题,这样,训练好的目标检测模型在使用中对终端设备的内存和gpu的负荷较大,易导致终端设备执行困难,故而存在实用性差的问题。
技术实现要素:
本发明的主要目的在于提供一种基于隐马尔可夫模型的目标检测模型的搜索方法,以解决现有技术中的目标检测模型因含带参数量庞大,而导致训练好的目标检测模型在使用中对终端设备的内存和gpu的负荷较大,造成终端设备执行困难的问题,故而存在实用性差的问题。
为了实现上述目的,本发明提供了一种基于隐马尔可夫模型的目标检测模型的搜索方法,包括:步骤s1,根据观察序列o、状态转移矩阵a、概率矩阵b以及初始状态分布概率π建立用于目标检测模型搜索的隐马尔可夫模型,其中,观察序列o包含n个观察量,每个观察量对应指代一个目标检测模型;步骤s2,利用baum-welch算法并基于观察序列o,对隐马尔可夫模型的状态转移矩阵a、概率矩阵b以及初始状态分布概率π进行参数重估,直至隐马尔可夫模型收敛,保存上述各参数值,形成重构隐马尔可夫模型;步骤s3,利用viterbi算法和重构隐马尔科夫模型预测得到观察序列o1,其中,观察序列o1包含n 1个观察量;步骤s4,判断观察序列o1中的前n个观察量与观察序列o中的n个观察量是否一一对应相同,当两者不相同时,对隐马尔可夫模型的状态转移矩阵a的参数和/或概率矩阵b的参数进行变异后重复步骤s2;当两者相同时,使用观察序列o1中的第n 1个观察量生成与其对应的目标检测模型ω(n 1);步骤s5,训练目标检测模型ω(n 1)至收敛后,对目标检测模型ω(n 1)进行精度值测定、召回率测定和参数量计算,分别获得目标检测模型ω(n 1)的精度值、召回率和参数量;步骤s6,对搜索到的目标检测模型ω(n 1)进行结果判定,当目标检测模型ω(n 1)的精度值、召回率和参数量同时满足预设条件时,判定目标检测模型ω(n 1)为搜索输出的目标检测模型;当目标检测模型ω(n 1)的精度值或召回率或参数量不满足预设条件时,对观察序列o1中的所有观察量对应的目标检测模型分别进行精度值测定、召回率测定和参数量计算,利用各目标检测模型的精度值、召回率和参数量计算目标检测模型的排序得分c,根据排序得分c对所有目标检测模型重新排序后得到对应的观察序列o2,使用观察序列o2替换观察序列o后重复步骤s1至步骤s5。
进一步地,目标检测模型的排序得分c根据公式(1)计算获得:
c=k1·r1 k2·p2 k3·p3(1)
公式(1)中,r1表示目标检测模型的召回率recall;k1表示目标检测模型的召回率recall对应的权重系数;p2表示目标检测模型的精度值precision;k2表示目标检测模型的精度值precision对应的权重系数;p3表示目标检测模型的参数量parameter;k3表示目标检测模型的参数量parameter对应的权重系数。
进一步地,根据排序得分c由小到大对所有目标检测模型重新排序后得到对应的观察序列o2。
进一步地,预设条件为:目标检测模型ω(n 1)的精度值大于第一预设值,第一预设值的取值范围为[0.5,0.9];目标检测模型ω(n 1)的召回率大于第二预设值,第二预设值的取值范围为[0.5,0.9];目标检测模型ω(n 1)的参数量小于第三预设值,第三预设值的取值范围为[200000,300000]。
进一步地,在步骤s4中,当观察序列o1中的前n个观察量与观察序列o中的n个观察量不一一对应相同时,随机选取隐马尔可夫模型的状态转移矩阵a的一行作为第一遗传变异行,在第一遗传变异行随机选取参数a1和参数a2,将参数a1修改为a1 ∆ø,且将参数a2修改为a2-∆ø,∆ø的取值范围为[-0.1,-0.01]∪[0.01,0.1];和/或随机选取隐马尔可夫模型的概率矩阵b的一行作为第二遗传变异行,在第二遗传变异行随机选取参数b1和参数b2,将参数b1修改为b1 ∆ψ,且将参数b2修改为b2-∆ψ,∆ψ的取值范围为[-0.1,-0.01]∪[0.01,0.1]。
进一步地,目标检测模型由前处理网络结构和沙漏网络结构组成,步骤s1包括:
步骤s11,构造隐含状态集合s,其隐含状态数目n为13,隐含状态集合s为{s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13},其中,隐含状态s1指代(卷积 res)网络结构,隐含状态s2指代卷积网络结构,隐含状态s3指代res网络结构,隐含状态s4至隐含状态s13均指代神经网络的不同的channel数;步骤s12,构造观察状态集合v,其观察状态数目m为12,观察状态集合v为{v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12},其中,观察状态v1和观察状态v2用于定义前处理网络结构,观察状态v3至观察状态v12用于定义沙漏网络结构,观察状态v1和观察状态v2分别在隐含状态s1、隐含状态s2和隐含状态s3中择一选定,观察状态v3至观察状态v12分别在隐含状态s4至隐含状态s13中择一选定;步骤s13,对隐含状态集合s的所有隐含状态按顺序编码,各观察状态集合v对应于隐含状态集合s的编码号记为观察序列o的一个观察量,多个观察量构造形成观察序列o为{o1,o2,o3···on},其中,n为观察状态集合v的个数,其为大于等于1的正整数。
进一步地,状态转移矩阵a为{{aij(k)}},aij(k)=p[qt(k) 1=sj丨qt(k)=si],其中,1≤i≤n,1≤j≤n,1≤k≤m,qt(k)表示在t时刻观察量on中第k个观察状态,sj表示隐含状态集合s中第j个隐含状态,si表示隐含状态集合s中第i个隐含状态,状态转移矩阵a表示观察序列o中的观察量on-1的所有观察状态转移后形成观察量on的概率;概率矩阵b为{{bjk(k)}},bjk(k)=p[qt(k)=sj],其中,1≤j≤n,1≤k≤m,qt(k)表示在t时刻观察量on中第k个观察状态,sj表示隐含状态集合s中第j个隐含状态,概率矩阵b表示观察序列o中的观察量on的所有观察状态体现为隐含状态集s的概率;初始状态分布概率π为{πi(k)},πi(k)=p{si=q1(k)},其中,1≤i≤n,1≤k≤m,且∑πi(k)=1;初始状态分布概率π表示观察序列o中的观察量o1的所有观察状态体现为隐含状态集s的概率。
进一步地,状态转移矩阵a为由m个n*n的方阵构成的三维矩阵。
进一步地,隐马尔可夫模型为二维隐马尔可夫模型。
进一步地,在步骤s5中,使用目标图像训练集训练目标检测模型ω(n 1);使用目标图像验证集对目标检测模型ω(n 1)进行精度值测定和召回率测定。
应用本发明的技术方案,通过重构隐马尔可夫模型搜索获得特定网络结构的目标检测模型,能够有效地减小目标检测模型的尺寸,大幅度缩减目标检测模型的参数量,从而确保目标检测模型能够使用于大部分终端设备,提高了目标检测模型的实用性,利用本发明提供的方法获得的目标检测模型不会给终端设备带来过大的运行负荷,确保了终端设备能够长时间稳定运行,确保目标检测的可靠性。利用上述的搜索方法的步骤搜索得到满足预设条件的目标检测模型,能够实现对目标检测模型的有效压缩,在保证了在利用深度学习使得计算机视觉任务的性能提高的前提下,最大限度地减小了目标检测模型对于计算空间和时间的消耗,克服了高额的存储空间、计算资源消耗在各种终端设备上难于有效应用的问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明的一种可选实施例的基于隐马尔可夫模型的目标检测模型的搜索方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”、“和”、“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了解决现有技术中的目标检测模型因含带参数量庞大,而导致训练好的目标检测模型在使用中对终端设备的内存和gpu的负荷较大,造成终端设备执行困难的问题,故而存在实用性差的问题的问题,本发明提供了一种基于隐马尔可夫模型的目标检测模型的搜索方法。当然,本发明还提供了一种存储介质,存储介质为计算机可读存储介质,存储介质上存储有计算机程序指令,其中,程序指令被处理器执行时用于实现上述的基于隐马尔可夫模型的目标检测模型的搜索方法的步骤。本发明还提供了一种电子设备,包括:处理器、存储器、通信元件和通信总线,处理器、存储器和通信元件通过所述通信总线完成相互间的通信;存储器用于存放至少一可执行指令,可执行指令使处理器执行如上述的基于隐马尔可夫模型的目标检测模型的搜索方法的步骤。
图1是根据本发明实施例的基于隐马尔可夫模型的目标检测模型的搜索方法的流程图。如图1所示,该目标检测模型的搜索方法包括步骤如下:
步骤s1,根据观察序列o、状态转移矩阵a、概率矩阵b以及初始状态分布概率π建立用于目标检测模型搜索的隐马尔可夫模型,其中,观察序列o包含n个观察量,每个观察量对应指代一个目标检测模型;步骤s2,利用baum-welch算法并基于观察序列o,对隐马尔可夫模型的状态转移矩阵a、概率矩阵b以及初始状态分布概率π进行参数重估,直至隐马尔可夫模型收敛,保存上述各参数值,形成重构隐马尔可夫模型;步骤s3,利用viterbi算法和重构隐马尔科夫模型预测得到观察序列o1,其中,观察序列o1包含n 1个观察量;步骤s4,判断观察序列o1中的前n个观察量与观察序列o中的n个观察量是否一一对应相同,当两者不相同时,对隐马尔可夫模型的状态转移矩阵a的参数和/或概率矩阵b的参数进行变异后重复步骤s2;当两者相同时,使用观察序列o1中的第n 1个观察量生成与其对应的目标检测模型ω(n 1);步骤s5,训练目标检测模型ω(n 1)至收敛后,对目标检测模型ω(n 1)进行精度值测定、召回率测定和参数量计算,分别获得目标检测模型ω(n 1)的精度值、召回率和参数量;步骤s6,对搜索到的目标检测模型ω(n 1)进行结果判定,当目标检测模型ω(n 1)的精度值、召回率和参数量同时满足预设条件时,判定目标检测模型ω(n 1)为搜索输出的目标检测模型;当目标检测模型ω(n 1)的精度值或召回率或参数量不满足预设条件时,对观察序列o1中的所有观察量对应的目标检测模型分别进行精度值测定、召回率测定和参数量计算,利用各目标检测模型的精度值、召回率和参数量计算目标检测模型的排序得分c,根据排序得分c对所有目标检测模型重新排序后得到对应的观察序列o2,使用观察序列o2替换观察序列o后重复步骤s1至步骤s5。
通过重构隐马尔可夫模型搜索获得特定网络结构的目标检测模型,能够有效地减小目标检测模型的尺寸,大幅度缩减目标检测模型的参数量,从而确保目标检测模型能够使用于大部分终端设备,提高了目标检测模型的实用性,利用本发明提供的方法获得的目标检测模型不会给终端设备带来过大的运行负荷,确保了终端设备能够长时间稳定运行,确保目标检测的可靠性。利用上述的搜索方法的步骤搜索得到满足预设条件的目标检测模型,能够实现对目标检测模型的有效压缩,在保证了在利用深度学习使得计算机视觉任务的性能提高的前提下,最大限度地减小了目标检测模型对于计算空间和时间的消耗,克服了高额的存储空间、计算资源消耗在各种终端设备上难于有效应用的问题。
需要说明的是,本发明的目标检测模型通过目标检测网络对待测图像进行中心点检测以识别目标对象。目标检测网络由前处理网络结构和沙漏网络结构组成。可选地,前处理网络结构作为目标检测网络的一部分用于浅层特征提取和压缩模型计算量,沙漏网络结构用于深层特征提取。神经网络结构搜索(nas)即在现有的目标检测网络上搜索出一个含有参数量更少的沙漏网络结构的检测网络,从而经过训练得到的目标检测模型在使用过程中计算量更小。
由于基于沙漏网络结构的目标检测网络所使用的特征提取网络是在开源的coco数据集90类上训练得到,而目标检测模型在实际使用中不需要对重多类别的目标对象进行检测,而是只有几类目标对象需要检测,因此,沙漏网络结构不需要设定庞大的参数量(亿级别),参数量能够控制在低量水平(30万-200万),从而训练好的目标检测模型不会因存在大参数量而导致终端设备执行困难,大大地降低了对终端设备的内存和gpu的负荷。
具体地,步骤s1包括:步骤s11,构造隐含状态集合s,其隐含状态数目n为13,隐含状态集合s为{s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13},其中,隐含状态s1指代(卷积 res)网络结构,隐含状态s2指代卷积网络结构,隐含状态s3指代res网络结构,隐含状态s4至隐含状态s13均指代神经网络的不同的channel数;步骤s12,构造观察状态集合v,其观察状态数目m为12,观察状态集合v为{v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12},其中,观察状态v1和观察状态v2用于定义前处理网络结构,观察状态v3至观察状态v12用于定义沙漏网络结构,观察状态v1和观察状态v2分别在隐含状态s1、隐含状态s2和隐含状态s3中择一选定,观察状态v3至观察状态v12分别在隐含状态s4至隐含状态s13中择一选定;步骤s13,对隐含状态集合s的所有隐含状态按顺序编码,各观察状态集合v对应于隐含状态集合s的编码号记为观察序列o的一个观察量,多个观察量构造形成观察序列o为{o1,o2,o3···on},其中,n为观察状态集合v的个数,其为大于等于1的正整数。
本实施例中,隐含状态s4至隐含状态s13指代神经网络的10个不同的channel数为{0,8,16,24,32,48,64,80,96,128}。
则构造的隐含状态集合s为:
{(卷积 res)网络结构,卷积网络结构,res网络结构,0,8,16,24,32,48,64,80,96,128}。对隐含状态集合s中的每一个隐含状态进行编号,则13个隐含状态分别对应的编号为:0、1、2、3、4、5、6、7、8、9、10、11、12。
观察状态集合v为{v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12},其中,{v1,v2}定义为前处理网络结构,{v3,v4,v5,v6,v7,v8,v9,v10,v11,v12}定义为沙漏网络结构。
在一个可选实施例中,构造的观察状态集合v为:
{卷积网络结构,(卷积 res)网络结构,16,32,48,64,64,64,80,80,128,128},则根据隐含状态集合s中的每一个隐含状态进行编号形成观察序列o的一个观察量,记为:
o1={1,0,5,7,8,9,9,9,10,10,12,12}。通过观察量o1不断地迭代出更多的观察量,进而获取包含多个观察量的观察序列o。
需要说明的是,将m个n*n的方阵构成状态转移矩阵a,状态转移矩阵a为{{aij(k)}},aij(k)=p[qt(k) 1=sj丨qt(k)=si],其中,1≤i≤n,1≤j≤n,1≤k≤m,qt(k)表示在t时刻观察量on中第k个观察状态,sj表示隐含状态集合s中第j个隐含状态,si表示隐含状态集合s中第i个隐含状态,状态转移矩阵a表示观察序列o中的观察量on-1的所有观察状态转移后形成观察量on的概率;概率矩阵b为{{bjk(k)}},bjk(k)=p[qt(k)=sj],其中,1≤j≤n,1≤k≤m,qt(k)表示在t时刻观察量on中第k个观察状态,sj表示隐含状态集合s中第j个隐含状态,概率矩阵b表示观察序列o中的观察量on的所有观察状态体现为隐含状态集s的概率;初始状态分布概率π为{πi(k)},πi(k)=p{si=q1(k)},其中,1≤i≤n,1≤k≤m,且∑πi(k)=1;初始状态分布概率π表示观察序列o中的观察量o1的所有观察状态体现为隐含状态集s的概率。在本实施例中,n=13,m=12。
需要说明的是,在步骤s2之前,利用对应于初始网络结构的观察量o1以及目标检测模型的网络结构的参数量减小的搜索方向初始化状态转移矩阵a、概率矩阵b和初始状态分布概率。连续型的隐马尔可夫模型的概率矩阵b通过一个连续的函数得到观察序列o与状态转移矩阵a的关系,常用方式是使用混合高斯概率密度函数:
其中,1≤j≤n,bj(ot)表示观察序列在时刻t的值ot由隐含状态j所表现的概率,cjm是状态j的第m个混合高斯权重,n(ot,μjm,ujm)是一个均值为μjm、方差为ujm的高斯概率密度函数,m表示混合高斯概率密度函数混合的数目,其中混合系数满足:
在步骤s6中,目标检测模型的排序得分c根据公式(1)计算获得:
c=k1·r1 k2·p2 k3·p3(1)
公式(1)中,r1表示目标检测模型的召回率recall;k1表示目标检测模型的召回率recall对应的权重系数;p2表示目标检测模型的精度值precision;k2表示目标检测模型的精度值precision对应的权重系数;p3表示目标检测模型的参数量parameter;k3表示目标检测模型的参数量parameter对应的权重系数。
可选地,k1∈(0,1),k3∈(-1/5000000,-1/10000000),k1∈(0,1)。
可选地,根据排序得分c由小到大对所有目标检测模型重新排序后得到对应的观察序列o2。
进一步地,预设条件为:目标检测模型ω(n 1)的精度值大于第一预设值,第一预设值的取值范围为[0.5,0.9];目标检测模型ω(n 1)的召回率大于第二预设值,第二预设值的取值范围为[0.5,0.9];目标检测模型ω(n 1)的参数量小于第三预设值,第三预设值的取值范围为[200000,300000]。
进一步地,在步骤s4中,当观察序列o1中的前n个观察量与观察序列o中的n个观察量不一一对应相同时,随机选取隐马尔可夫模型的状态转移矩阵a的一行作为第一遗传变异行,在第一遗传变异行随机选取参数a1和参数a2,将参数a1修改为a1 ∆ø,且将参数a2修改为a2-∆ø,∆ø的取值范围为[-0.1,-0.01]∪[0.01,0.1];和/或随机选取隐马尔可夫模型的概率矩阵b的一行作为第二遗传变异行,在第二遗传变异行随机选取参数b1和参数b2,将参数b1修改为b1 ∆ψ,且将参数b2修改为b2-∆ψ,∆ψ的取值范围为[-0.1,-0.01]∪[0.01,0.1]。
优选地,∆ø为0.05。
本发明中,可选地,隐马尔可夫模型为二维隐马尔可夫模型。
还需要说明的是,在步骤s5中,使用目标图像训练集训练目标检测模型ω(n 1);使用目标图像验证集对目标检测模型ω(n 1)进行精度值测定和召回率测定。目标图像训练集和目标图像验证集都包含有大量的图像样本。
本发明将基于沙漏网络结构的目标检测模型的网络结构进行编号,排列为变量序列,根据初始模型结构训练初始隐马尔可夫模型,利用初始马尔可夫模型预测后续的模型结构后,利用目标图像训练集训练该模型结构后,在目标图像验证集上获得模型的精度后,根据已有的模型结构的计算量和在验证集上的精度对模型结构排序,利用排序好的模型结构重新训练隐马尔可夫模型后,然后循环上述过程直到得到满足需求的目标检测模型。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。