本发明涉及视觉监控技术领域,尤其涉及一种基于深度学习特征模板匹配的在线实时行人跟踪新方法。
背景技术:
在各类视觉监控的场景中,对人的动作行为进行分析都具有极大的价值。在机器视觉领域,行人跟踪是目标跟踪的子问题。一般而言,跟踪算法主要由状态估计算法和分配算法组成。其中状态估计的经典算法使用卡尔曼滤波,通过当前时刻的目标位置(即此时的状态),在考虑目标的速度、方向等因素的情况下对下一时刻的状态进行预测得到“预测状态”,并依据下一时刻的“观测状态”与“预测状态”的差别进行概率估计(通常使用卡方分布)。在得到各个状态的概率估计后则建立以前后两帧的目标为节点,以概率大于某一阈值的状态作为边的图,以“邻接矩阵”或“邻接表”表示,并在该图上通过分配算法将下一时刻的多个目标“尽量全部分配”到这一时刻的目标(通常使用匈牙利算法)。当分配(配对)完成后,则更新目标对应的状态并进行下一次预测,周而复始地进行目标跟踪。在这个过程中可能出现目标暂时消失(遮挡或短暂离开了摄像头能拍摄到的区域),目标离开和新目标产生等情况,其中又以“目标暂时消失”这一情况会对状态估计算法带来最大的负面影响,同时这影响也可能造成后续的分配算法失效。
现有的主流行人跟踪算法需要进行状态估计,那么当某一段时刻有目标短暂的消失后再次出现时,两次的状态变化较大,状态估计的误差也就很大,导致算法认为这是一个新的目标重新开始跟踪,从而出现跟踪中断的问题。
另外,现有的主流行人跟踪算法需要维护一个较大的模板库,每个个体通常最大保留100个模板,存储空间消耗大,每一次配对都需要单独计算当前帧中所有目标与模板库中所有历史模板的距离,匹配时间长。
技术实现要素:
本发明提供了一种基于深度学习特征模板匹配的在线实时行人跟踪新方法,目的在于:
1.通过模板匹配的方式摒弃状态估计,从而避免状态估计带来的错误;
2.加入模板更新机制,避免维护巨大的模板库,可以显著降低空间消耗;
3.使用更高效的模板匹配方式,直接从提取的特征和模板得到邻接矩阵,可以显著减少匹配时间。
为实现本发明的目的,本发明提供了一种基于深度学习特征模板匹配的在线实时行人跟踪新方法,包括如下步骤:
1)读取数据,得到第i帧图像ii;
目标消失帧数+1:无论实际有没有丢失目标,将记录在特征库里所有的特征对应的目标的丢失帧数l加1,l=[l1,...,lk],k为特征库中记录特征的数量;
2)判断目标丢失帧数是否达到阈值,达到则认为该目标已不在视频中出现,则清除对应目标的特征;反之认为目标因某种原因在过去几帧中暂时没有被检测到,暂时保留对应特征;
3)通过行人检测模型md进行行人检测,即通过pi=md(ii)得到行人的前景图像pi∈rn,其中n为检测到的行人数量,若n=0,未检测到行人,则不再后续处理,重新读取下一帧;若n>0,检测到行人,进入下一步处理;
4)特征提取:通过在预训练好的行人重识别模型mf提取每个检测到该帧的行人的特征矩阵fi=mf(pi),fi∈rn×m,其中n代表该帧上检测到的人数,m代表每个人特征的长度,长度为1024,每个行人的特征进行归一化;
5)特征对比:假设特征库中已存有k个特征(即有k个目标在录),使用该帧的特征矩阵fi与库中在上一帧注册的特征矩阵di-1的转置
6)通过分配算法进行目标的身份分配,若目标不能成功分配一个身份,那么认为该目标是新出现的,则将其作为一个新的样本将其特征加入特征库;
a)若能够分配到一个身份,得到该身份检测结果中的位置u与在特征库中的位置v,其特征按以下方式进行更新:
特征更新采取滑动平均的策略,此处平均的是特征的夹角而不是幅值,而对夹角的平均按以下算法进行:
1.将
2.计算
3.将θnew转换回直角坐标,得到fnew,记为f=h(θ);
其中θnew,θold,θnow分别为新特征、库特征、当前帧的特征的角度,n为该
目标记录的总帧数;
g(f)为:
i=[0,...,m-2]
θ=[θ0,...,θm-2]
其中,m为特征维数,
h(θ)为:
a1).设f0=1
a2).计算
a3).汇总f'new=[f0,…,fm-1]
a4).计算
得到更新后的特征;
也可使用如下算法:
其中n为总帧数,
最后需将更新后的特征放入特征库,di=update(di-1,fi,u,v),其更新方式为:
di=di-1
其中di-1为上一帧特征库中的特征,fi为本次检测到的行人的特征,u,v为分配算法得到的同一身份在检测结果与特征库中的位置,di为更新后的特征库;
b)若不能分配到身份,即检测结果中的位置u在特征库找不到对应位置v与之匹配,则加入新特征di=update(di-1,fi,u):
di=di-1
其中,di-1为上一帧特征库中的特征,fi为本次检测到的行人的特征,u为分配算法无法分配身份的检测结果所处的位置,k为特征库中di-1已有的特征数量,di为更新后的特征库;
7)特征更新/加入新特征后,对其对应的丢失帧数归零/初始化,即lu=0或lk+1=0,并读取新的一帧,进入下一次循环。
与现有技术相比,本发明的有益效果为,
1、不使用状态估计,避免了因状态估计算法失效而带来的错误
2、使用模板匹配时利用模板更新机制,从而避免了存储大量的历史模板
3、邻接矩阵使用矩阵相乘直接得到,避免了多次与模板匹配带来的时间与内存空间的消耗。
附图说明
图1所示为本发明的方法流程图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用属于“包含”和/或“包括”时,其指明存在特征、步骤、操作、部件或者模块、组件和/或它们的组合。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
目前,对监控视频中的行人个体进行实时跟踪仍然面临着诸多问题,其中难以避免和解决的问题之一就是遮挡。当遮挡发生时,基于状态估计的各类跟踪算法在丢失目标的同时,该目标的状态也处于停止更新的状态,导致当目标人物再次出现在场景中时,基于状态估计的跟踪算法将其当作第一次出现在场景中的新个体,从而产生了跟踪中断的问题。本发明提出的新方法通过使用模板匹配以及分配算法可以有效解决视觉监控中行人跟踪时因遮挡导致的中断问题。
如图1所示,本发明提供了一种基于深度学习特征模板匹配的在线实时行人跟踪新方法,包括如下步骤:
1)读取数据,得到第i帧图像ii;
目标消失帧数+1:无论实际有没有丢失目标,将记录在特征库里所有的特征对应的目标的丢失帧数l加1,l=[l1,...,lk],k为特征库中记录特征的数量;
2)判断目标丢失帧数是否达到阈值,达到则认为该目标已不在视频中出现,则清除对应目标的特征;反之认为目标因某种原因在过去几帧中暂时没有被检测到,暂时保留对应特征;
3)通过行人检测模型md进行行人检测,即通过pi=md(ii)得到行人的前景图像pi∈rn,其中n为检测到的行人数量,若n=0,未检测到行人,则不再后续处理,重新读取下一帧;若n>0,检测到行人,进入下一步处理;
4)特征提取:通过在预训练好的行人重识别模型mf提取每个检测到该帧的行人的特征矩阵fi=mf(pi),fi∈rn×m,其中n代表该帧上检测到的人数,m代表每个人特征的长度,长度为1024,每个行人的特征进行归一化;
5)特征对比:假设特征库中已存有k个特征(即有k个目标在录),使用该帧的特征矩阵fi与库中在上一帧注册的特征矩阵di-1的转置
6)通过分配算法进行目标的身份分配,若目标不能成功分配一个身份,那么认为该目标是新出现的,则将其作为一个新的样本将其特征加入特征库;
a)若能够分配到一个身份,得到该身份检测结果中的位置u与在特征库中的位置v,其特征按以下方式进行更新:
特征更新采取滑动平均的策略,此处平均的是特征的夹角而不是幅值,而对夹角的平均按以下算法进行:
1.将
2.计算
3.将θnew转换回直角坐标,得到fnew,记为f=h(θ);
其中θnew,θold,θnow分别为新特征、库特征、当前帧的特征的角度,n为该目标记录的总帧数;
g(f)为:
i=[0,...,m-2]
θ=[θ0,...,θm-2]
其中,m为特征维数,
h(θ)为:
a1).设f0=1
a2).计算
a3).汇总
a4).计算
得到更新后的特征;
也可使用如下算法:
其中n为总帧数,
最后需将更新后的特征放入特征库,di=update(di-1,fi,u,v),其更新方式为:
di=di-1
其中di-1为上一帧特征库中的特征,fi为本次检测到的行人的特征,u,v为分配算法得到的同一身份在检测结果与特征库中的位置,di为更新后的特征库;
b)若不能分配到身份,即检测结果中的位置u在特征库找不到对应位置v与之匹配,则加入新特征di=update(di-1,fi,u):
di=di-1
其中,di-1为上一帧特征库中的特征,fi为本次检测到的行人的特征,u为分配算法无法分配身份的检测结果所处的位置,k为特征库中di-1已有的特征数量,di为更新后的特征库;
7)特征更新/加入新特征后,对其对应的丢失帧数归零/初始化,即lu=0或lk+1=0,并读取新的一帧,进入下一次循环。
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。