一种KCF跟踪算法在TMS320C6657上的实现方法与流程

文档序号:15640744发布日期:2018-10-12 22:02阅读:2099来源:国知局

本发明属于目标跟踪技术领域,尤其涉及一种kcf跟踪算法在tms320c6657上的实现方法。



背景技术:

目前,业内常用的现有技术是这样的:计算机视觉是一个处于知识前沿的、非常活跃的研究领域,它不同于生物学中对人类或动物视觉的研究,而是借助于图像处理、模式识别、数学和物理等知识来建立模型和处理数据。从而让计算机对外界的物体有智能的认识,可以辅助其对现实世界中的物体进行识别,就像是计算机拥有了“视觉”一样,开眼看世界。计算机视觉利用机器来代替人眼进行观察与检测,不仅可以提高精度和检测效率,而且可以应用于一些人眼难以到达或者人眼难以满足要求的场合。目标的识别与跟踪一直是计算机视觉领域的一个研究热点。识别主要指计算机根据一定的特征和经验积累,对于接受到的某些信息(通常是图像),分析其中的内容,对其属性进行判别;而跟踪通常是在有时序上下文的基础上,对于计算机“视野”内的目标进行连续的追踪定位。在传统的目标跟踪领域中,通常需要预先保存目标的图像作为模板。进行跟踪时,在视野内利用一些搜索策略选取可能是目标的待定区域,之后根据数学或物理方法比较模板与待搜索区域的相似度,最后跟踪相似度的大小来确定目标的位置,完成跟踪。典型的搜索策略有全局搜索、粗匹配加细匹配等,常用的相似度计算方法包括欧氏距离、直方图余弦距离、分数距离、切距离、豪斯多夫距离、方向梯度直方图、模糊特征对比等,对于彩色的图像还包括色彩直方图等等。但是传统的跟踪方法采用的特征都较为简单,跟踪结果差强人意,而且需要预先获得目标的模板图像,在某些情况下难以实现。在此基础上,众多学者研究出了在线学习式的跟踪方法,这一类的方法可以针对任意的目标进行实时跟踪。操作者只需要在跟踪序列的初始端人为指定目标(在pc上通常是指定一个包含目标的区域),跟踪算法将根据所选择的目标进行学习,根据学习得到的模型在新的视频帧中进行跟踪,算法将跟踪得到的结果作为样本,进一步进行学习,对模型进行更新,如此循环往复,对视频序列进行连续的跟踪。因为这一类算法可以自适应地学习目标模型,因此对于序列中出现的各种干扰具有较强的适应能力,kcf算法就是其中非常经典的一个跟踪算法。kcf跟踪算法通过学习正则化最小二乘分类器来判别目标,并引入循环矩阵对训练样本进行循环移位,可近似看做是,通过学习正则化最小二乘分类器来判别目标,并引入循环矩阵对训练样本进行循环移位,可近似看做是对目标的密集采样,从而高效的获得大量的训练样本,然后利用循环矩阵将相关滤波器和核函数联系起来,从而提出了核相关滤波器(kcf)。近年,随着高速数字信号处理器(digitalsignalprocesser,dsp)的发展,有很多高性能的dsp可以快速进行大量复杂的数学运算,同时还能提高较大的存储空间,满足数据处理方面的实时性需求,以ti公司的tms320系列为例,其c6000系列中的c6416、c665x、c667x等芯片都在实时的目标跟踪中获得广泛的应用。但是,在此类平台中的跟踪算法大多数都是如mad、ncc等比较简单的传统算法,跟踪效果差强人意。由于kcf等新算法在目标跟踪过程中数据量大,数据关联性高,阻碍了其在实际工程中的应用。因此如何利用dsp平台的特性和优势对kcf算法进行优化,成为了实现算法跟踪系统的关键。tms320c6657是ti公司发布的基于keystone架构的具有定点与浮点计算能力的双核dsp。芯片内部集成两个c66x系列内核,每个核最高可运行在1.25ghz时钟频率,单核性能是tms320c64x+系列dsp处理能力的四倍,整块芯片拥有80gmacs或40gflops运算能力。c66x内核集成有针对浮点和面向矢量数学运算处理的90条全新指令,非常适合数字信号处理与图形采集等功能。另外c66x内核与ti之前的c6000定点和浮点dsp内核向后代码兼容,确保了软件可移植性、缩短软件开发周期。tms320c6657多核dsp集成了丰富的片上存储资源,单个内核拥有32kb大小的一级程序缓存区和32kb大小的一级数据缓存区,以及可以配置成ram或缓存的1024kb大小的专用内存区域。同时,两个内核共享1024kb大小的内存空间。此外,为了可以快速访问片外存储器,还包括可以工作在1333mhz频率的32位ddr3外部存储器接口。针对不同的应用场景,芯片集成了大量外设接口资源:四路srio通道,单通道最高传输速度可达5gbps;一个千兆以太网口;二代pcie接口;hyperlink高速接口;通用并行串口(upp)等。kcf算法介绍:在近年来的视觉跟踪领域的研究之中,最大的突破之一就是广泛的引入了基于判别模型进行学习的方法。视觉跟踪的问题可以很自然的转化为一个在线学习的问题。给定一个包含跟踪目标的初始图像块,跟踪的目的则是为了训练出一个判别分类器对跟踪目标以及背景进行区分。对判别分类器的训练过程中,很容易将关注点放在感兴趣的跟踪目标之上——供分类器训练的正样本。但是判别方法的核心原则则是将同样或者更多的关注点放在跟踪目标周围的背景之上——供分类器训练的负样本。最常用的采集负样本的方法是在跟踪目标周围的不同位置选取一定数量的图像块,再对其进行不同程度上的缩放以及变换。在采集负样本的过程中,一个非常具有挑战性的因素则是——可以从一个图像中获得的负样本几乎是无穷无尽的。但是,由于视觉跟踪对实时性的要求,现在的视觉跟踪算法只能在尽可能多的负样本数量与相对较低的运算量之间寻找一个平衡点。通常的做法是在每一帧中随机的选择一定数量的负样本供分类器训练,而不是采取穷尽的原则。kcf跟踪算法主要分为检测、训练与更新三个阶段。在样本训练过程中,通过对选定的目标进行循环移位来获得大量的训练样本,然后通过获得的样本来训练分类器。在目标检测的过程中,利用核函数计算待检测区域和实际跟踪目标之间的相关系数,选取相关系数最大的待选区域作为新的目标。同时,利用二维快速傅里叶变换(fft2d)将时域映射到频域,降低训练和检测过程中的运算。最后在快速目标检测时,再次利用二维快速傅里叶逆变换(ifft2d)将频域映射回时域,得到当前帧中目标出现的位置。该算法在目标旋转、部分遮挡等方面具有很好的跟踪效果。目前,对于kcf的大部分研究都集中于抗严重遮挡、抗目标丢失、抗尺度变化等方面,意图将其发展为稳定的长时跟踪方法,但是,对于kcf方法在实际工程中的应用却很少涉及。kcf算法虽然运行速度较快,但是其在跟踪过程中需要进行大量的fft2d运算,对于实现平台的计算能力有很高的要求,如果平台计算能力较差,则会延长跟踪消耗的时间,失去kcf跟踪算法的优势;同时跟踪过程中,需要大量的辅助矩阵用于计算,对于内存的需求也较大。综上所述,现有技术存在的问题是:尽管kcf在pc平台的效果很好,但是还没有在实际工程中得到应用。kcf算法中涉及了大量的浮点数运算,对于平台的计算速度要求很高;同时算法中涉及的运算大部分基于复数域,因此对于内存的消耗要远大于传统算法。算法中跟踪、检测、学习等不同的模块都各自需要一些辅助性矩阵,这些矩阵中保存的都是复数型浮点数,占用内存是同尺寸灰度图像的8倍,对内存的占用相当大,嵌入式平台的内存一般比较小,难以直接移植实现。而且kcf算法中包含有大量的指数运算、矩阵运算、fft运算,其计算相当复杂,对于平台的要求较高,实现难度比较大。

综上所述,现有技术存在的问题是:kcf算法还没有在实际工程中得到应用,而且其计算相当复杂,对于平台的要求较高,实现难度比较大。

解决上述技术问题的难度和意义:kcf算法在跟踪过程中,首先需要选定目标,然后需要根据所选定目标的大小选取待处理的图像块(通常图像块尺寸是所选目标的2.5倍),在算法中计算所需要的辅助矩阵的大小都与图像块的尺寸相关。kcf算法中大量的运算是基于浮点数的,但是在一些嵌入式的平台中不支持浮点数的运算,或者浮点数的运算效率要远低于定点数的运算效率。还有最重要的一点,在算法中所进行的大量运算都是基于复数域,因此矩阵中存储的数据需要包含实部与虚部,通常嵌入式平台中利用8-bit型数据保存图像,如char型,但是要保存复数型浮点数的话,所消耗的内存是原图像大小的8倍,大大限制了所能处理图像的尺寸。同时,运算过程中包含有大量的指数运算、矩阵运算、fft运算,如跟踪、检测时需要计算图像特征与跟踪模型之间的高斯核相关值,更新模型时需要有矩阵的点乘、点除操作,非常复杂而且耗时,对于嵌入式平台来说,大量的此类运算会对cpu造成很大的负荷。如果不对算法进行优化,内存的消耗过大会导致跟踪过程中内存溢出,轻则导致跟踪失败,重则会引起程序崩溃甚至芯片烧毁。

kcf作为近几年在国际上风头最盛的算法之一,其在跟踪方面的性能表现非常好。但是囿于pc平台的限制,在很多的场合中无法使用,如无人机的自动跟踪、导弹的末端制导等等。实际上,这些应用场景对于优秀跟踪算法的需求是非常大的,但是这一类的应用场景中,跟踪算法通常都基于嵌入式平台。如果可以解决kcf算法在嵌入式平台移植的问题,就可以将kcf算法应用到大量的简单设备中,如智能摄像头、无人机、甚至是军事方面。在这些应用场景中,可以在目标跟踪的基础上,完善设备的功能,提高其适用性,方便在目标跟踪的基础上进一步扩充功能。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种kcf跟踪算法在tms320c6657上的实现方法。

本发明是这样实现的,一种kcf跟踪算法在tms320c6657上的实现方法,所述kcf跟踪算法在tms320c6657上的实现方法包括:基于tms320c6657处理器的硬件平台,实现kcf算法。为了保证算法的运行速度,不使用片外存储,运算过程中所有的数据分配都在片内存储中完成,具体来说,需要处理的图像帧存储在核间共享内存中,这样的选择既可以节约cpu核的自享内存,同时也便于后续开发多核协作运算,图像数据可以直接在共享内存中读取,避免地址转化操作。根据kcf算法流程,训练、检测阶段都需要计算图像特征间的高斯核相关性,所以先根据核函数及循环矩阵的性质,在dsp平台上实现对高斯核相关性的快速计算。在此基础上,完成kcf算法中的训练和检测等模块,同时还有大量使用的基础运算——fft2d运算。算法运行在tms320c6657的其中一个cpu核上,在处理新一帧图像时,在msm中读取所需的图像数据,所以算法可以使用的内存大小为1mb。由于算法中需要消耗很大的内存作为计算时的辅助空间,因此容易出现内存溢出问题,在此基础上,需要进一步进行优化,保证可行性和实时性,包括对二维快速傅里叶变换fft2d算法优化;对kcf算法进行语言级代码优化,包括循环展开,使用内联函数;优化程序结构,优化存储空间的分配等。

进一步,所述kcf跟踪算法在tms320c6657上的实现方法对fft2d进行优化,对于输入的待计算图像,对每一行进行fft变换,再对每一列进行fft变换,经过两次变换之后得到的就是fft2d的结果。

进一步,存储空间较小,需要辅助向量t,将一行数据复制到向量t中,计算fft结果,写入原位置,循环此过程直到所有行都计算结束,完成行变换;依次将每一列的数据复制到向量t中,计算fft结果,结果写入原矩阵中,循环直到完成所有列的运算,得到是fft2d的结果。

进一步,所述kcf跟踪算法在tms320c6657上的实现方法使用cossp函数计算浮点数的余弦值,用于计算汉明窗;使用sqrtsp、divsp和expsp计算高斯矩阵;使用dspf_sp_maxidx、dspf_sp_maxval来快速获取矩阵中的最大值及下标。

进一步,所述kcf跟踪算法在tms320c6657上的实现方法将待跟踪的图像存储在dsp的msm中,跟踪算法所需的辅助数据在cpu核的自享内存中分配。

进一步,所述kcf跟踪算法在tms320c6657上的实现方法的编译器优化通过ti提供的编程工具ccs完成。

进一步,所述kcf跟踪算法在tms320c6657上的实现方法使用移位操作来代替整数的乘除运算;对循环进行优化,使用较大的内循环。

综上所述,本发明的优点及积极效果为:本发明借助dsp嵌入式平台,提出一种实时目标跟踪系统实现方案,基于tms320c6657处理器的硬件平台,对二维快速傅里叶变换(fft2d)进行算法优化,其次对kcf算法进行语言级代码优化,包括循环展开,使用内联函数,优化程序结构等,kcf算法的精妙之处在于,在每一帧中对判别分类器采用了数千个负样本进行训练,以保证跟踪时的精度。与此同时,该算法又利用循环矩阵通过离散傅里叶变换(dft)后在频域下的特性,避免了直接遍历每一个负样本,从而保证了算法具有极高的实时性。实测结果表明对320×240像素的图像,跟踪目标为64×32像素时,波门大小为128×64。每一帧的跟踪时间大约为15310000个cpu周期,如果dsp工作在1ghz的频率下,则每一帧的耗时不超过15.5毫秒,大约为每秒钟处理64帧图像,符合实时性要求。

附图说明

图1是本发明实施例提供的kcf跟踪算法在tms320c6657上的实现方法流程图。

图2是本发明实施例提供的根据算法输出的目标位置示意图。

图3是本发明实施例提供的kcf跟踪算法在tms320c6657上的实现方法的效果应用示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明的目标跟踪融合了人工智能、图像处理、模式识别、目标检测、机器学习等多个领域中的先进技术。其通过对图像序列中目标物体的检测、提取、识别及学习来获得目标的形状、位置、速度、轨迹等相关信息,再通过对相关信息的分析和处理,实现对目标运动行为的理解,最终完成跟踪、预测等任务。

如图1所示,本发明实施例提供的kcf跟踪算法在tms320c6657上的实现方法包括以下步骤:

s101:基于tms320c6657处理器的硬件平台,对二维快速傅里叶变换(fft2d)进行算法优化;

s102:对kcf算法进行语言级代码优化,包括循环展开,使用内联函数,优化程序结构。

下面结合附图对本发明的应用原理作进一步的描述。

1、dsp平台的实现及优化:

(1)利用fft2d来代替dft2d,fft2d是二维的快速傅里叶变换,比dft2d有更高的效率。但是如果纯手编实现fft2d运算,不仅复杂,而且耗时巨大。fft2d运算及ifft2d运算在本发明中多次调用,是实时性的瓶颈所在,如果采用手编程序,不可能达到实时性要求。首先对fft2d进行优化。dsp平台对于fft等数学变换有着非常良好的内嵌支持,但是只有一维的fft函数api供使用,根据fft2d的性质,可以利用一维fft来计算二维的fft结果。对于输入的待计算图像,先对每一行进行fft变换,称之为行变化,之后再对每一列进行fft变换,称之为列变换,经过两次变换之后得到的就是fft2d的结果。对于每一行或列的fft运算,可以调用dsplib中的dspf_sp_fftspxsp函数来计算,这是ti官方提供的库函数,对于fft运算进行了硬件层面的优化,充分利用dsp的运算能力,可以大大加快计算效率。同理,ifft2d也可以采用同样的方式进行计算。在这个计算过程中,行变换与列变换的先后顺序不影响最终的结果。如果存储空间较小,则只需要一个辅助向量t。首先依次将一行数据复制到向量t中,计算fft结果,写入原位置,循环此过程直到所有行都计算结束,此时完成行变换。然后依次将每一列的数据复制到向量t中,计算fft结果,将结果写入原矩阵中,循环直到完成所有列的运算,此时得到的就是fft2d的结果;

(2)使用内联函数,内联函数可以直接映射为c6000的汇编,其代码执行效率与汇编相当,远高于普通的纯手编代码。ti公司提供了丰富的辅助库函数,mathlib、dsplib、imglib等,其中提供了大量常用内联函数api,用于实现定点及浮点数的运算。程序中出现大量的矩阵点乘、点除操作以及计算向量模值等耗时较长的运算,在c6657中可以使用内联函数进行优化。如使用cossp函数计算浮点数的余弦值,用于计算汉明窗;使用sqrtsp、divsp和expsp等来计算高斯矩阵;使用dspf_sp_maxidx、dspf_sp_maxval来快速获取矩阵中的最大值及下标等等。如高斯函数的计算,如果采用简单的标准c函数执行一次运算的时间大约7000us,合理使用内联函数可以缩减为2000us,效率大大提升。

(3)数据存储优化,在pc平台运行跟踪算法时,内存的分配与回收全部由操作系统代理,但是dsp中的内存是需要开发者分配的,否则很容易出现内存溢出等问题。在kcf跟踪算法中,fft2d的计算、检测过程、训练过程等都需要使用辅助矩阵,如果不加优化的话,dsp的内存远远不够用,使用片外存储则会降低计算效率。经过对辅助矩阵的压缩,c6657的片上资源已满足程序的内存占用。本文的实现方案中,将待跟踪的图像存储在dsp的msm(multicoresharedmemory,核间共享内存)中,跟踪算法所需的辅助数据在cpu核的自享内存中分配。也就是说,c6657的双核可以各运行一个跟踪程序,可以同时跟踪一幅图像中的两个目标,可以进一步开发多目标跟踪。

(4)编译器优化,通过ti提供的编程工具ccs来完成的,ccs中提供强大的编译优化指令来完成优化的功能,通过合理地选择编译选项,可以提升代码的运行效率。编译器的优化选项如表1所示:

表1编译器优化选项

(5)程序层面的一些其它优化,如使用移位操作来代替整数的乘除运算;对循环进行优化,尽量使用较大的内循环来提高代码的执行效率;合理使用关键字和全局变量,减少冗余的代码,提高执行效率。

下面结合实验对本发明的应用效果作详细的描述。

1、实验结果演示:

在ccs环境下,使用c语言编写kcf跟踪算法,并进行优化,将其移植到tms320c6657开发板,对分辨率为320×240的图像序列进行跟踪,目标大小为64×32,波门尺寸为2倍目标大小。

跟踪算法只运行在单核,dsp将视频序列依次读入msm中,读取结束后,cpu运行跟踪算法,输出结果是目标的位置。在第一帧时,算法将根据目标的初始位置提取特征,进行训练,后续将对目标进行连续跟踪。观察目标的跟踪情况以及处理时间,确认系统的可行性及时间性能。根据算法输出的目标位置,在原图中标记出来,可以观察到跟踪的结果是否正确。如图2所示。四幅图是视频序列中不同帧的跟踪情况,可以看出在每一帧中,算法所得出的位置与观察得到的结果是吻合的,即使在164帧中,广告牌对车辆轻微的遮挡,但是依然是准确跟踪的。由此可以看出,算法对于目标的跟踪是成功的,如图3所示。

在第165到173帧中,黑色车辆被广告牌严重遮挡,可以看出在这个过程中,算法是实现准确跟踪的,并且在黑色重新出现后,依然稳定跟踪。这是传统的ncc算法所无法实现的。

综上可以看出,本发明实现的算法跟踪效果是稳定的,且与传统的ncc算法相比,对于遮挡等情况更加鲁棒。在进行存储优化前,dsp6657在运行时出现内存溢出,导致程序中断,无法继续跟踪。进行存储优化后,未进行fft2d优化和编译优化时,每一帧的运行时间大约是243毫秒,运行速度非常慢。在本发明中所提出的方法进行优化后,每一帧的运行时间约为15.5毫秒,效率提高了约16倍,达到了实时的要求。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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