基于KCF算法的多目标行人跟踪系统及跟踪方法与流程

文档序号:17377608发布日期:2019-04-12 23:28阅读:973来源:国知局
基于KCF算法的多目标行人跟踪系统及跟踪方法与流程

本发明属于图像处理的技术领域,涉及一种基于kcf算法的多目标行人跟踪系统及跟踪方法。



背景技术:

目标跟踪算法可以自动提取和分析轨迹特征,包括单目标跟踪和多目标跟踪。单目标跟踪的研究较为广泛,当前解决的相对更好,可以通过对目标的表观和运动建模,典型的如meanshift算法,利用卡尔曼滤波、粒子滤波进行状态预测,kcf相关性滤波算法等。而多目标跟踪问题就要复杂得多,除了单目标跟踪中存在的物体形变、背景干扰等问题因素,还需要解决目标间的关联匹配。多目标跟踪通常需要解决以下问题:1.如何判断新目标的出现、老目标的消失;2对各个跟踪轨迹与检测结果进行相似性匹配,即区分各个目标;3跟踪目标间的交互和处理;4当跟踪目标再次出现,如何进行再识别问题。现有的学术上的多目标跟踪方法大多属于“tracking-by-detection”的方法,即先得到各目标的检测结果,再与各轨迹进行链接匹配。从算法形式上来看,可分成确定性推导的跟踪和概率统计最大化的跟踪,如多假设的多目标跟踪算法(mht),基于检测可信度的粒子滤波算法,nomt,deep-sort等。

现有技术中的多目标跟踪算法大多设计得过于复杂、笨重,速度慢。而且这些算法的评测是在学术公开的数据集上进行,容易对这些固定数据集过于拟合,而在实际应用中效果不太理想。而在工程落地上,比起跟踪准确性的轻微提升,实际业务会更关注算法的速度与简单轻便性。



技术实现要素:

本发明的主要目的在于克服现有技术的缺点与不足,提供基于kcf算法的多目标行人跟踪系统及跟踪方法,本发明主要基于单目标跟踪算法kcf设计出一个多目标跟踪的系统,实时地提供各个目标的运动轨迹以及id信息。

为了达到上述目的,本发明采用以下技术方案:

本发明基于kcf算法的多目标行人跟踪系统,包括初始化模块、单目标跟踪kcf模块、跟踪与检测匹配模块、目标移除模块、打印模块和目标新增模块;

所述初始化模块,用于初始化所有变量;

所述单目标跟踪kcf模块,用于对单个目标进行跟踪;

所述跟踪与检测匹配模块,对每个目标的跟踪结果与画面中的检测目标进行匹配,即区分各个目标,将各目标与跟踪轨迹链接;

所述目标移除模块,用于判定目标是否已经离开画面;

所述打印模块,根据之前的匹配结果,从打印队列中逐个取出检测框与其对应的目标id,并在图中打印出来,即将图中的行人用检测框框出来且添加上其对应id;

所述目标新增模块,用于判定检测目标是否为新出现的目标。

作为优选的技术方案,所属初始化模块中,初始化的变量包括将视频转换成图片形式,用行人检测器获取每帧图片的行人边框坐标,初始化模型容器、状态管理器。

作为优选的技术方案,所述单目标跟踪kcf模块,基于kcf算法使用目标周围的区域的循环矩阵采集正负样本,利用脊回归训练目标检测器,并利用循环矩阵在傅立叶空间可对角化的性质将矩阵的运算转化为向量的hadamad积,降低了运算量;所述单目标跟踪kcf模块包含初始化功能与跟踪功能,当输入参数为两个,即“当前帧图片”、“目标的检测结果”时,执行初始化功能,模块输出为“目标的初始模型”;而当输入参数为三个,即“当前桢图片”、“上一桢跟踪到的目标的边框坐标”、“该目标的模型”时,执行跟踪功能,模块的输出为“当前桢跟踪到的目标的边框坐标”、“该目标更新后的模型”。

作为优选的技术方案,所述跟踪匹配模块中跟踪匹配的过程为:

首先初始化模型与目标检测结果的状态管理器,然后遍历容器里的模型,对每个模型都使用单目标跟踪kcf模块里的跟踪功能进行跟踪预测,即输入当前桢图片、上一桢跟踪到的目标的边框坐标、该目标的模型到单目标跟踪kcf模块,得到当前桢跟踪到的目标的边框坐标与该目标更新后的模型,并将更新后的模型替换掉容器中的原模型;

然后再将当前桢跟踪到的目标的边框坐标与当前图中所有目标检测结果进行匹配对比,检查该目标的跟踪结果是否存在于画面中,具体为计算两个边框区域的overlap重合覆盖率,若overlap大于设定的阈值,则认为匹配成功,跟踪结果与检测框是同一个目标,将检测框与该目标对应的id添加到打印列表中;而对于匹配失败的情况,则需更新模型与目标检测结果的状态管理器,记录匹配失败的模型与检测框。

作为优选的技术方案,所述目标移除模块中,移除的具体操作为:

先利用模型状态管理器挑出匹配失败的模型,作为已离开目标的候选项;

模型匹配失败,说明该目标的跟踪结果在图中没有检测框与其匹配相关,并进行进一步安全检查,连续与后面n桢的检测框计算overlap,若overlap都小于设定的阈值,才真正认为该目标已经离开画面,并且将该目标所对应的模型从容器中移除。

作为优选的技术方案,所述目标新增模块中,判定检测目标是否为新出现的目标的方法为:

首先利用检测框状态管理器挑出匹配失败的检测框,将其作为新出现的目标的候选项;匹配失败的检测框,说明其与所有模型对应的目标的跟踪结果都没有匹配相关,进一步增加了一步安全检查,计算该检测框与后面n桢的跟踪结果的overlap,若overlap都小于阈值,则说明该检测框为新出现的目标;若为新出现的目标,则利用利用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该检测框,来初始化该新目标的模型,并将该新模型放进容器内。

本发明基于kcf算法的多目标行人跟踪系统的跟踪方法方法,包括下述步骤:

s1、进行初始化操作,包括将视频切成每帧图片的形式,并用行人检测器获取每帧图片的所有行人目标的检测结果;并新建一个模型容器,用来保存当前跟踪目标的跟踪模型;

s2遍历每一帧图片进行操作,若为第一张图片,即开始进入画面,需对图片中的所有目标初始化其跟踪模型;

s3若不是第一张图片,则需要对当前容器中所保存的所有跟踪目标进行跟踪预测,并将跟踪结果与图中的检测结果匹配;

s4在对所有目标的跟踪结果与检测框匹配完成后,需要检查有哪些老目标已经离开了画面;具体操作为:

先利用模型状态管理器挑出匹配失败的模型,作为已离开目标的候选项;对于匹配失败的模型所对应的目标,并不一定是已经离开的画面的目标,为了避免误检的情况,增加了一步安全检查,连续与后面n桢的检测框计算overlap,若overlap都小于阈值,则最终认为该目标已经离开画面,并且将该目标所对应的模型从容器中移除;

s5、根据之前的匹配结果,从打印队列中逐个取出检测框与其对应的目标id,并在图中打印出来,即将图中的行人用检测框框出来且添加上其对应id;

s6、检查画面中出现了哪些新的目标;具体为:

利用检测框状态管理器挑出匹配失败的检测框,将其作为新出现的目标的候选项;匹配失败的检测框,说明其与所有模型对应的目标的跟踪结果都没有匹配相关,进一步增加了一步安全检查,计算该检测框与后面n桢的跟踪结果的overlap,若overlap都小于设定阈值,则说明该检测框为新出现的目标。

根据权利要求7所述的所述基于kcf算法的多目标行人跟踪系统的跟踪方法方法,其特征在于,所述步骤s2具体为:

用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该目标的检测结果,即可得到该目标的初始模型,再将图片中的所有目标的初始化模型添加到容器中。

作为优选的技术方案,步骤s3具体为:

先初始化模型与目标检测结果的状态管理器,然后遍历容器里的模型,对每个模型都使用单目标跟踪kcf模块里的跟踪功能进行跟踪预测,即输入当前桢图片、上一桢跟踪到的目标的边框坐标、该目标的模型到单目标跟踪kcf模块,得到当前桢跟踪到的目标的边框坐标与该目标更新后的模型,并将更新后的模型替换掉容器中的原模型;

然后再将当前桢跟踪到的目标的边框坐标与当前图中所有目标检测结果进行匹配对比,检查该目标的跟踪结果是否存在于画面中,具体为计算两个边框区域的overlap重合覆盖率,若overlap大于一定阈值,则认为匹配成功,跟踪结果与检测框是同一个目标,将检测框与该目标对应的id添加到打印列表中;而对于匹配失败的情况,则需更新模型与目标检测结果的状态管理器,记录匹配失败的模型与检测框。

作为优选的技术方案,所述步骤s6中,若判断为新出现的目标,则利用利用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该检测框,来初始化该新目标的模型,并将该新模型放进容器内。

本发明与现有技术相比,具有如下优点和有益效果:

本发明的优点是简单轻便、快速有效,且框架稳定统一,可像抽插接口般在系统中灵活选用不同的单目标跟踪算法。在不改变该系统框架的情况下,可随时换上当前新提出的、效果更好的单目标跟踪算法,简单轻便。且得益于单目标跟踪算法的快速性,整个多目标跟踪系统运行速度也很快,能很好的应用在工程落地上。

附图说明

图1(a)、图1(b)分别是单目标跟踪kcf模块初始化功能和跟踪功能的模块图;

图2是本发明基于kcf算法的多目标行人跟踪系统的模块图;

图3是本发明基于kcf算法的多目标行人跟踪方法的流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

如图2所示,本发明基于kcf算法的多目标行人跟踪系统,包括初始化模块、单目标跟踪kcf模块、跟踪与检测匹配模块、目标移除模块、打印模块和目标新增模块;

所述初始化模块,用于初始化所有变量;所属初始化模块中,初始化的变量包括将视频转换成图片形式,用行人检测器获取每帧图片的行人边框坐标,初始化模型容器、状态管理器。

所述单目标跟踪kcf模块,用于对单个目标进行跟踪;如图2所示,所述单目标跟踪kcf模块,基于单目标跟踪算法作为多目标跟踪系统的基础,是该系统的基础部分。kcf算法使用目标周围的区域的循环矩阵采集正负样本,利用脊回归训练目标检测器,并利用循环矩阵在傅立叶空间可对角化的性质将矩阵的运算转化为向量的hadamad积,大大降低了运算量,提高了算法的运算速度。所述单目标跟踪kcf模块包含初始化功能与跟踪功能,当输入参数为两个,即“当前帧图片”、“目标的检测结果(边框坐标)”时,执行初始化功能,模块输出为“目标的初始模型”;而当输入参数为三个,即“当前桢图片”、“上一桢跟踪到的目标的边框坐标”、“该目标的模型”时,执行跟踪功能,模块的输出为“当前桢跟踪到的目标的边框坐标”、“该目标更新后的模型”。如图1(a)图1(b)所示。

所述跟踪与检测匹配模块,对每个目标的跟踪结果与画面中的检测目标进行匹配,即区分各个目标,将各目标与跟踪轨迹链接;所述跟踪匹配模块中跟踪匹配的过程为:

首先初始化模型与目标检测结果的状态管理器(记录模型或目标检测结果的匹配状态),然后遍历容器里的模型,对每个模型都使用单目标跟踪kcf模块里的跟踪功能进行跟踪预测,即输入当前桢图片、上一桢跟踪到的目标的边框坐标、该目标的模型到单目标跟踪kcf模块,得到当前桢跟踪到的目标的边框坐标与该目标更新后的模型,并将更新后的模型替换掉容器中的原模型。然后再将当前桢跟踪到的目标的边框坐标与当前图中所有目标检测结果进行匹配对比,检查该目标的跟踪结果是否存在于画面中,具体为计算两个边框区域的overlap(重合覆盖率),若overlap大于一定阈值(这里设为0.4),则认为匹配成功,跟踪结果与检测框是同一个目标,将检测框与该目标对应的id添加到打印列表中。而对于匹配失败的情况,则需更新模型与目标检测结果的状态管理器,记录匹配失败的模型与检测框。

所述目标移除模块,用于判定目标是否已经离开画面;具体过程为:

先利用模型状态管理器挑出匹配失败的模型,作为已离开目标的候选项。模型匹配失败,说明该目标的跟踪结果在图中没有检测框与其匹配相关,而导致该情况的发生存在两种可能,一种是目标已经离开了画面,另一种则是误检,目标在画面中,可是因为跟踪结果或检测结果质量不好,导致双方overlap过低或根本不存在overlap。因此,匹配失败的模型所对应的目标,并不一定是已经离开的画面的目标,为了避免误检的情况,我们增加了一步安全检查,连续与后面n桢的检测框计算overlap(系统中n设置为7),若overlap都小于阈值,才真正认为该目标已经离开画面,并且将该目标所对应的模型从容器中移除。

所述打印模块,根据之前的匹配结果,从打印队列中逐个取出检测框与其对应的目标id,并在图中打印出来,即将图中的行人用检测框框出来且添加上其对应id。

所述目标新增模块,用于判定检测目标是否为新出现的目标;判断方法具体为:

首先利用检测框状态管理器挑出匹配失败的检测框,将其作为新出现的目标的候选项。匹配失败的检测框,说明其与所有模型对应的目标的跟踪结果都没有匹配相关,导致该情况的发生存在两种可能,一种是该检测框为新出现的目标,另一种是误检,即实际上该目标为老目标,因为跟踪结果的质量不好,导致双方overlap过低或根本不存在overlap。因此,我们在这里增加了一步安全检查,计算该检测框与后面n桢的跟踪结果的overlap,若overlap都小于阈值,则说明该检测框为新出现的目标。若为新出现的目标,则利用利用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该检测框,来初始化该新目标的模型,并将该新模型放进容器内。

如图3所示,本发明基于kcf算法的多目标行人跟踪系统的方法的主要思想为:先创建一个容器,用来保存视频中出现的目标的模型和前后帧的边框坐标;每对一帧图片进行跟踪时,依次从容器中取出模型与上一帧目标的边框坐标,并联合当前图片输入到kcf单目标跟踪kcf模块,将得到的跟踪结果与行人检测结果作overlap比较,若overlap(两区域覆盖率)大于一定阈值,则判定为同一个,匹配成功;若容器中的所有模型都无法与行人检测结果匹配,则判定为该目标已离开画面(改进:为了防止误检,再取后面n帧来匹配,若还是无法匹配,才判定目标离开画面。);若当前帧的行人检测目标与容器中的所有模型都不匹配,则判定该目标位新出现的目标,新建模型并放进容器内。

如图3所示,本发明基于kcf算法的多目标行人跟踪系统的方法,具体步骤如下:

(1)先进行初始化操作,包括将视频切成每帧图片的形式,并用行人检测器获取每帧图片的所有行人目标的检测结果(边框坐标)。新建一个模型容器,用来保存当前跟踪目标的跟踪模型。

(2)遍历每一帧图片进行操作,若为第一张图片,即开始进入画面,需对图片中的所有目标初始化其跟踪模型,具体方式为利用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该目标的检测结果(边框坐标),即可得到该目标的初始模型,再将图片中的所有目标的初始化模型添加到容器中。

(3)若不是第一张图片,则需要对当前容器中所保存的所有跟踪目标进行跟踪预测,并将跟踪结果与图中的检测结果匹配,具体为先初始化模型与目标检测结果的状态管理器(记录模型或目标检测结果的匹配状态),然后遍历容器里的模型,对每个模型都使用单目标跟踪kcf模块里的跟踪功能进行跟踪预测,即输入当前桢图片、上一桢跟踪到的目标的边框坐标、该目标的模型到单目标跟踪kcf模块,得到当前桢跟踪到的目标的边框坐标与该目标更新后的模型,并将更新后的模型替换掉容器中的原模型。然后再将当前桢跟踪到的目标的边框坐标与当前图中所有目标检测结果进行匹配对比,检查该目标的跟踪结果是否存在于画面中,具体为计算两个边框区域的overlap(重合覆盖率),若overlap大于一定阈值(这里设为0.4),则认为匹配成功,跟踪结果与检测框是同一个目标,将检测框与该目标对应的id添加到打印列表中。而对于匹配失败的情况,则需更新模型与目标检测结果的状态管理器,记录匹配失败的模型与检测框。

(4)在对所有目标的跟踪结果与检测框匹配完成后,需要检查有哪些老目标已经离开了画面。具体操作为先利用模型状态管理器挑出匹配失败的模型,作为已离开目标的候选项。模型匹配失败,说明该目标的跟踪结果在图中没有检测框与其匹配相关,而导致该情况的发生存在两种可能,一种是目标已经离开了画面,另一种则是误检,目标在画面中,可是因为跟踪结果或检测结果质量不好,导致双方overlap过低或根本不存在overlap。因此,匹配失败的模型所对应的目标,并不一定是已经离开的画面的目标,为了避免误检的情况,我们增加了一步安全检查,连续与后面n桢的检测框计算overlap(系统中n设置为7),若overlap都小于阈值,才真正认为该目标已经离开画面,并且将该目标所对应的模型从容器中移除。

(5)根据之前的匹配结果,从打印队列中逐个取出检测框与其对应的目标id,并在图中打印出来,即将图中的行人用检测框框出来且添加上其对应id。

(6)接下来则是检查画面中出现了哪些新的目标。具体为先利用检测框状态管理器挑出匹配失败的检测框,将其作为新出现的目标的候选项。匹配失败的检测框,说明其与所有模型对应的目标的跟踪结果都没有匹配相关,导致该情况的发生也存在两种可能,一种是该检测框为新出现的目标,另一种是误检,即实际上该目标为老目标,因为跟踪结果的质量不好,导致双方overlap过低或根本不存在overlap。因此,我们在这里也增加了一步安全检查,计算该检测框与后面n桢的跟踪结果的overlap,若overlap都小于阈值,则说明该检测框为新出现的目标。若为新出现的目标,则利用利用单目标跟踪kcf模块的初始化功能,输入当前帧图片与该检测框,来初始化该新目标的模型,并将该新模型放进容器内。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1