基于动态结构数组的多目标跟踪初始化方法

2019-04-16 06:02费树岷胡云层
关键词:标号数组动态

杨 晨,路 红,*,费树岷,胡云层,汤 皓

(1.南京工程学院自动化学院,南京 211167;2.东南大学自动化学院,南京 210096)

目标跟踪是利用一定的方法估计视频或者图像序列中目标的运动轨迹,该过程须使用检测器或手动给出初始目标的位置和形状等观测信息.然而,一些高性能跟踪器主要致力于算法鲁棒性的提高,初始化阶段多手动给出目标信息.Wang等[1]提出的局部稀疏表示在线判别单目标跟踪算法中采用手动初始化方法.王秩等[2]提出的基于DST-PCR5的多目标跟踪(multi-target tracking,MTT)算法同样是手动给出目标初始信息.目前,已有的一些MTT算法[3-6]通过引入检测环节实现自动跟踪初始化,但是由于采用的检测和跟踪算法具有强关联性,故初始化部分不具普适性.结构数组能将不同类型不同维数的数组组合到一起,为管理和维护大数据提供了方便.本文拟基于struct函数构建动态结构数组实现2个完全独立的目标检测与跟踪模块的连接且减小工作量,以解决跟踪系统自动初始化问题,进而实现更多数据集的多个目标分类、定位和跟踪.

1 基于动态结构数组的多目标检测和跟踪模块接口参数选择

现以文献[7]多目标检测算法和文献[8]多目标跟踪算法为例,对本文方法进行原理性说明,如图1所示.图1中,x,y分别为目标矩形区域中心点坐标;w,h分别为目标矩形区域的宽度和高度;Ndetect,Ntrack分别为检测器和跟踪器对应的图像序列帧数,Ntotal为序列图像的总帧数.将文献[7-8]分别作为本文方法中的检测算法和跟踪算法模块,两者的目标特征不完全相同,检测算法以HOG边缘、尺度和位置等作为特征,而跟踪算法则采用了色彩、尺度和速度特征.2种算法互相独立.

利用检测算法获得与跟踪算法相匹配的目标初始状态信息,生成结构体数组,并自动保存为标准形式的文件.若是视频首帧,该过程可实现被跟踪多目标轨迹的全局初始化,并触发目标跟踪算法实现视频序列全自动MTT;若是非首帧中新出现的目标,则该过程可实现对新目标的动态初始化.由于本文方法主要是针对MTT初始化的研究,因此这里对具体的检测与跟踪算法未详细展开阐述.

图1 整体结构流程示意图Fig.1 Overall structure flow chart

计算目标l的矩形区域中心点坐标(xl,yl):

(1)

计算目标l的宽度wl和高度hl:

(2)

2 构建动态结构数组实现跟踪系统初始化

3) 建立结构体数组.利用Matlab中的struct函数定义动态结构体数组.x,y,w,h代表struct函数的4个字段.循环整个序列的检测过程,将最终生成的元胞数组赋值至检测信息存储单元D,

(3)

并保存为.mat文件到跟踪算法程序包指定的文件路径下.

3 实验结果与分析

为了评估本文方法的有效性,笔者在CAVIAR走廊国际标准视频序列(Dataset1)、自己拍摄的校园视频(Dataset2)和国际标准数据集TUD_Crossing(Dataset3)等3个数据集上分别进行实验,结果如图2~4所示.所有实验均在Matlab R2014b,3.5 GHz CPU PC,Windows 7操作系统下进行.

3.1 实验方案设计

为了验证本文方法针对不同跟踪器全局初始化的自适应性能,现利用CoP检测方法[7]构建动态结构数组并分别初始化3个跟踪算法,设计如下3组初始化实验:

实验1: 基于数据关联和跟踪管理(data association and track management,DA-TM)跟踪算法[8]的多目标初始化.

实验2: 基于轨迹片段置信度和核相关滤波器在线跟踪算法的多目标初始化.该跟踪方法在实验1的DA-TM跟踪框架基础上,将文献[9]中Henriques等人提出的核相关滤波器(kernelized correlation filters,KCF)与文献[10]中峰旁瓣比相结合计算被跟踪目标的外观得分,以提升计算速度.

实验3: 基于局部稀疏表示在线判别目标跟踪算法[1]的多目标初始化.区别于实验1~2,本实验未添加新目标稳定出现的判定条件,而是依据结构数组中的检测数据在目标出现的图像首帧初始化跟踪算法,通过与前两组实验对比,证明本文所提判稳条件的有效性.该跟踪算法是针对单目标跟踪,但本实验中主要利用检测数据初始化场景中每个有效目标的过完备字典实现多目标跟踪.

3.2 实验结果对比

图2给出了Dataset1检测结果及实验1~3中Dataset1的跟踪结果,由左至右依次为第265帧、第320帧和第360帧图像.由图2可见:1) 第265帧图像中,实验1和实验3中正确初始化了目标身份标记ID=1.依据新出现目标的判稳条件,实验2在初始化目标1的过程中,检测数据没有满足5帧内稳定出现的条件,故该目标未能作为有效目标赋予身份标记;2) 第320帧图像中,实验1~3中2个新出现目标均被确定为有效目标,并赋予身份标记ID=2,3.然而实验3中,由于未设置初始化目标的判稳条件,出现了2处误初始化;3) 第360帧图像中,实验1中标记为ID=4的目标被稳定跟踪;实验2中,标记为ID=2,4的目标由于KCF算法定位的目标图像块大小固定,而检测数据随目标的运动状态和尺度的变化而变化,造成两者匹配相似度偏低,目标不稳定,重新初始化后分别自动标记为ID=5,6;实验3中,由于不受判稳条件的限制,当出现新目标时直接将其标记为ID=5.

表1 第6帧目标跟踪置信度计算结果Tab.1 Tracking confidence result of frame 6

图3给出了Dataset2检测结果及实验1~3中Dataset2的跟踪结果,由左至右依次是第1帧、第38帧和第89帧图像.同时,为了定量分析本文初始化方法的有效性,表1给出了实验1~2在第6帧图像中5个目标各自置信度计算结果和分布规律.实验1的第1帧中,被标记为ID=1,3,4,5的目标在第6帧跟踪置信度均大于0.5,满足判定新目标稳定性条件中规定的目标须连续出现5帧的初始化要求,因此这4个目标被成功初始化.实验2中,表1显示唯有标记ID=2的置信度大于0.5,因此被初始化并赋予身份标记.实验3的初始化过程并未设置判定目标稳定的条件,所有目标均被标记出来.实验2的第38帧中,由于KCF算法对目标尺度变化不具自适应性,致使在跟踪过程中多数目标被误判为新目标而重新初始化为新的标号.实验1的第89帧中,原ID=7的目标出现跟踪框漂移,导致跟踪算法预估的目标区域框信息无法与检测数据关联,故发生2次重新初始化并标记为ID=15,16;实验2中受KCF算法的影响,大部分目标多次被视为新目标,重新初始化为新的标号;实验3中未出现跟踪异常的情况.

图3 Dataset2实验结果Fig.3 Experimental results of Dataset2

图4 Dataset3实验结果Fig.4 Experimental results of Dataset3

图4给出了Dataset3检测结果及实验1~3中Dataset3的跟踪结果,由左至右依次是第6帧、第24帧和第149帧.实验1~2的第6帧中标号为ID=2,3的目标在连续5帧中的识别结果不满足初始化过程中新出现的目标稳定出现的判断条件,因此没有被成功初始化.实验1的第24帧中标号为ID=5的目标因历史帧中跟踪误差累积,导致当前帧跟踪区域信息与检测区域信息不匹配,以至于被重新初始化为ID=7.实验2中出现类似情况,原ID=2的目标被多次误判为新出现目标初始化,先后被赋予标号ID=8,10.第149帧,实验1中标号为ID=17的目标与实验2中标号为ID=56的目标实际为同一目标,但是由于两者重新初始化的次数不同,所以被赋予不同的标号.实验3中,标号为ID=12的目标在第145帧首次出现并初始化跟踪.

对比上述实验结果,由于实验1~2增加了对动态数组中各新出现目标是否稳定存在的判断条件,从而增加了目标的标号数目.然而,从MTT的可靠性角度考虑,这种条件的限制可以减少误初始化,提高跟踪精度.实验3中由于没有判稳条件的限制,瞬间出现的干扰目标会被视为有效目标,跟踪效率下降.

4 结论

本文提出了一种全自动初始化多目标跟踪方法.根据检测算法获得的目标观测信息构建动态结构数组,为跟踪算法提供全局初始化数据以及跟踪过程中新出现目标的动态初始化数据,实现了全自动多目标跟踪;通过设计新出现目标判断方法和有效目标判稳条件,提高了真实目标的判断准确性及系统初始化可靠性.本文方法因不需要检测算法和跟踪算法具备完全相同的目标特征,且任何一个能够输出目标区域信息的多目标检测算法都能替代本文选择的检测器,故具有一定的灵活性和推广意义.

猜你喜欢
标号数组动态
国内动态
国内动态
JAVA稀疏矩阵算法
国内动态
JAVA玩转数学之二维数组排序
动态
更高效用好 Excel的数组公式
钢材分类标号(一)
寻找勾股数组的历程
基于路P8m+4t+2的交错标号的图S(4m+1,4(t+1),4m-1)的优美标号*