基于空间规划的在线学习跟踪以及工程化实现方法与流程

文档序号:20690899发布日期:2020-05-08 19:29阅读:178来源:国知局
基于空间规划的在线学习跟踪以及工程化实现方法与流程
本发明属于跟踪算法
技术领域
,具体涉及一种基于空间规划的在线学习跟踪以及工程化实现方法。
背景技术
:跟踪的目的是在图像序列中通过目标的初始帧位置信息预测目标的运动轨迹。跟踪器需要在数量很少的训练样本中得到目标的表观特征,并且要求所提取的特征能够对目标遮挡、快速运动和形变等复杂场景具有较好的鲁棒性。因此,目标表观模型的选择是决定跟踪器性能好坏的关键因素。在复杂战场环境中,存在大量人为或者非人为因素所导致的目标遮挡、重复模式、目标旋转、尺度变化等跟踪难点,需要建立具有鲁棒性的跟踪器。近几年,基于在线学习的跟踪方法已经成功地应用到跟踪领域。bolme等提出了最小输出平方误差和(minimumoutputsumofsquarederror,mosse)跟踪算法,该算法只需要一个目标区域的样本图像来训练目标的外观模型,从而显著地提升了跟踪算法的运行速度,但是该算法选取的训练样本较少。k.zhang等将压缩感知理论应用到目标跟踪中,使得目标特征维度大大降低;z.kalal等提出将检测与跟踪相结合的方法(tracking-learningdetection,tld),用检测的结果辅助判断跟踪结果的准确性,同时在跟踪丢失时重新检测目标,取得了很好的跟踪效果。但是之前算法存在边界问题,产生背景区域的重复性干扰,对算法的跟踪性能造成影响。技术实现要素:(一)要解决的技术问题本发明要解决的技术问题是:如何设计一种基于空间规划的在线学习跟踪以及工程化实现方法。(二)技术方案为了解决上述技术问题,本发明提供了一种基于空间规划的在线学习跟踪方法,包括以下步骤:构造正负样本——训练分类器——分类器检测——更新分类器。本发明还提供了一种基于空间规划的在线学习跟踪方法的工程化实现方法。(三)有益效果本发明采用在线学习的思想,在跟踪过程中对样本进行实时更新,通过样本训练得到分类器,对候选目标进行检测;为抵消跟踪过程中的边界效应,算法设置惩罚因子调整搜索区域的权重,用于惩罚背景区域的相关值,以消除背景区域的重复性干扰,并且采用高斯迭代方法提高算法实时性。然后对sot算法进行工程化实现,并将其移植到c66x系列浮点型dsp处理器,采用dsp双核工作模式,保证算法具有良好的跟踪精度,并且满足每秒50帧的跟踪速度要求。附图说明图1为训练样本的循环移位结果图;图2为空间权重因子ω数值曲线图;图3为本发明sot算法工作原理流程图;图4为sot双核工作流程图;图5为sot每6帧跟踪流程示意图。具体实施方式为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。本发明的时空规划在线学习跟踪方法是一种基于空间规划的在线学习跟踪方法(thespatialonline-learningtracking,简称sot),是相关滤波类跟踪算法,它将目标跟踪视为分类问题,通过在上一帧图像的目标周围进行足够数量的样本选取并将这些样本划分成正、负样本集来训练得到分类器,然后使用分类器对候选样本进行概率评估,概率最高的候选样本即为目标。该相关滤波器类跟踪方法的实现过程分为以下步骤:构造正负样本——训练分类器——分类器检测——更新分类器——空间加权设计。步骤1、构造正负样本训练分类器首先需要构造正负样本,正负样本的构建采用循环移位的方法,如图1所示。以一维信号为例:第一行是在目标中心采样的样本(正样本,维度为n),第二行由第一行向右平移一位得到,依此平移至第n行得到n×n矩阵,这样就构造了一个正样本和若干个“负样本”(正负样本的分类结果是由1到0递减的高斯函数)。步骤2、训练分类器得到正负样本集后,采用岭回归思想训练分类器;假设从图像区域提取的特征共有d维,则回归函数为:其中,*为卷积运算符,x为训练样本,f为待训练的滤波器,d是总的特征维数,第l维特征对应的滤波器为fl,通过滤波器投影得到分类结果sf(x)。因此,下一步是求出滤波器f,f的计算公式为:通过对公式(2)近似处理并且考虑在频域使用,可以推导出:f=(xhx+λi)-1xhy(3)其中,x矩阵是图1中n*n矩阵,它的每行代表一个样本xi,i指的是第i个样本,xh是x的复共轭转置矩阵,所有样本xi的实际分类结果yi构成矩阵y,λ是正则化系数,i表示单位矩阵。公式(3)包含求逆运算而且待求解等式较多,采用上文介绍的循环矩阵对其进行简化。循环矩阵有如下性质:其中,x是x中的第一行矩阵(母矩阵),是x的傅里叶变换,表示的对角阵,f是与x无关的离散傅里叶变换矩阵,n表示x中含有的元素个数,fh是f的复共轭转置矩阵。公式3则可以转化为:其中,是y的傅里叶变换,⊙是矩阵的点乘运算,*表示矩阵的复共轭,的计算时间复杂度由o(n3)降为o(nlogn)。为了提高训练分类器的准确性,将线性问题的输出投影到核函数构成的非线性空间。f可分解为:其中f是线性空间系数,α是复空间的系数,αi表示第i个样本对应的复空间系数,φ(x)是样本x的非线性函数,因此,我们的目的由求f变为求α。φ(x)有以下性质,x和x′表示两个不同的样本:φt(x)φ(x′)=k(x,x′)(7)因此,φ(x)可以由核函数k计算(核函数是高斯函数或者多项式函数),所有样本两两点乘存储在一个n×n维的核矩阵k中:kij=k(xi,xj)(8)其中xi和xj表示两个不同的样本;将线性空间的输入样本z投影到核函数构成的非线性空间中,得到:z表示线性空间的输入样本;α的计算公式为:α=(k+λi)-1y(10)其中,k是核函数,当k满足循环矩阵时,可以将公式(10)转化为:其中,kxx是循环矩阵k的第一行,k是满足循环矩阵的核矩阵;可以证明,高斯矩阵、多项式矩阵以及线性矩阵等都具有循环结构。因此,只需要计算核自相关,而它的复杂度是随着样本的数量线性增长。在检测过程和计算核相关过程中,循环矩阵也起到重要的作用。步骤3、分类器检测由于样本x和候选目标z都是循环矩阵,两者的核函数设为kz,kz的元素为kxz=k(pi-1z,pj-1x),p表示平移矩阵,i-1和j-1表示平移像素数,可以证明kz也是循环矩阵,则有:kz=c(kxz)(12)得到:其中,xi表示第i个样本,共m个样本,f(z)表示置信度结果。从而可以推导出:每一个都是核函数的线性加权,加权系数为这样就完成了在频域候选目标的置信度计算。步骤4、分类器更新通过在当前帧进行分类器检测,置信度最大位置对应的就是当前帧跟踪的目标位置,将当前帧跟踪的目标作为新的样本xnew,与之前的训练样本x进行线性加权,如公式(15)所示,得到最新分类器x,并且将xnew代入公式(11),计算得到新的分类器αnew,将αnew与之前分类器α进行线性加权,如公式(16)所示,得到最新分类器α:x=μ*x+(1-μ)*xnew(15)α=μ*α+(1-μ)*αnew(16)其中,μ为线性加权系数,μ设置越大则保留之前样本信息较多,设置较小则保留当前帧样本信息较多;步骤5、空间加权设计为解决循环移位带来的重复性问题,本发明在dcf公式(2)中加入空间权重因子ω:其中,ω为空间权重因子,如图2所示。空间权重因子即惩罚因子,数值越大则对该区域的抑制作用越强,由于可能存在目标遮挡或者旋转变化等情况,目标边缘区域的特征与目标中心区域相比,可信赖程度较低。因此,我们设置空间权重因子使之从目标区域到背景缓慢变大,同时增加了ω在频域的稀疏性。将公式(17)中就可以得到标准dcf公式(2)。本发明的时空规划在线学习跟踪(sot)方法的工程化实现方法为:步骤1、sot算法功能模块设计sot跟踪地址分配模块:setmemoryaddr,用于完成sot算法使用变量内存地址的分配;函数声明原型:voidsetmemoryaddr(float*padd1,float*padd2,float*pddr);函数的输入输出如表1所示:表1sot跟踪地址分配模块输入输出方向标识类型说明输入l2baseaddrfloat*指向片内地址,所需内存为400k输入l3baseaddrfloat*指向片内地址,所需内存为2.9m输入ddrbaseaddrfloat*指向片外地址,所需内存为200m输出无sot跟踪地址分配模块首先设置三块内存区域的首地址,然后将地址变量作为输入传给函数setmemoryaddr,示例如下:(float*)wp2=(float*)0x80000000;//片内地址(float*)wp3=(float*)0x81000000;//片内地址(float*)pddr=(float*)0x90000000;//片外地址setmemoryaddr(wp2,wp3,pddr);sot初始化跟踪器参数模块:sot_begin,用于初始化跟踪器参数并且调整目标尺寸和搜索区域尺寸。函数声明原型:voidsot_begin(uint16img_width,uint16img_height,uint16patch_width,uint16patch_height);函数的输入输出如表2所示:表2sot初始化跟踪器参数模块输入输出sot初始化跟踪器参数模块需要在sot_begin函数中输入图像的尺寸以及跟踪目标区域的尺寸,示例如下:sot_begin(640,512,32,32);sot初始分类器生成模块:cacufirhf_vec,用于计算第一帧图像目标分类器的初始值和更新所需的变量。函数声明原型:cacufirhf_vec(uint8*inputimage,uint16*pos_x,uint16*pos_y,yc_data*yc_test);函数的输入输出如表3所示:表3sot初始分类器生成模块输入输出方向标识类型说明输入inputimageuint8*输入图像地址输入pos_xuint16*目标中心点的横坐标输入pos_yuint16*目标中心点的纵坐标输入/输出yc_testyc_data*待输出监控数据sot初始分类器生成模块需要在cacufirhf_vec函数中输入跟踪初始帧图像、初始帧目标中心点位置和待输出的跟踪监控数据,示例如下:(uint8*)plearn=(uint8*)image_add;//image_add为跟踪初始帧图像存储地址;(uint16*)cx=(uint16*)posx_add;//posx_add为初始帧目标中心点横坐标存储地址;(uint16*)cy=(uint16*)posy_add;//posy_add为初始帧目标中心点纵坐标存储地址;(yc_data*)presultsot=(yc_data*)sot_state_add;//sot_state_add为待输出跟踪监控数据的地址;cacufirhf_vec(plearn,cx,cy,presultsot);上面实例中,yc_data类型为定义的结构体类型,定义输出的跟踪监测数据,通过cacufirhf_vec将presultsot进行初始化,yc_data结构体定义如表4:表4结构体yc_data定义sot目标跟踪位置计算模块:cacuprob,用于计算当前帧图像目标的跟踪点位置和尺度。函数声明原型:voidcacuprob(uint8*inputimage,uint16*pos_x,uint16*pos_y,complexfloat*hf_input,yc_data*yc_test);函数的输入输出如表5所示:表5sot目标跟踪位置计算模块输入输出sot目标跟踪位置计算模块需要在cacuprob函数中输入图像、上一帧目标跟踪中心点位置以及分类器,得到当前帧目标跟踪位置以及监控数据,示例如下:(uint8*)plearn=(uint8*)image_add;//image_add为跟踪当前帧图像存储地址;(uint16*)cx=(uint16*)posx_add;//posx_add为上一帧目标中心点横坐标存储地址;(uint16*)cy=(uint16*)posy_add;//posy_add为上一帧目标中心点纵坐标存储地址;(complexfloat*)hf=(complexfloat*)hf_add;//hf_add存储之前训练的sot分类器;(yc_data*)presultsot=(yc_data*)sot_state_add;//sot_state_add为待输出跟踪监控数据的地址;cacuprob(plearn,cx,cy,hf,presultsot);上面实例中,hf的类型complexfloat为定义的结构体类型,定义浮点型复数,complexfloat结构体定义如表6:表6结构体complexfloat定义sot当前帧目标分类器变量生成模块:cacurefmem,用于计算当前帧图像目标的分类器待更新变量。函数声明原型:voidcacurefmem(uint8*inputimage,uint16*pos_x,uint16*pos_y);函数的输入输出如表7所示:表7sot当前帧目标分类器变量生成模块输入输出方向标识类型说明输入inputimageuint8*输入图像地址输入pos_xuint16*目标中心点横坐标输入pos_yuint16*目标中心点纵坐标sot当前帧目标分类器变量生成模块需要在cacurefmem函数中输入当前帧图像、当前帧跟踪后目标中心点位置,得到由当前帧训练的分类器,示例如下:(uint8*)plearn=(uint8*)image_add;//image_add为当前帧图像存储地址;(uint16*)cx=(uint16*)posx_add;//posx_add为当前帧跟踪后目标中心点横坐标地址;(uint16*)cy=(uint16*)posy_add;//posy_add为当前帧跟踪后目标中心点纵坐标地址;cacurefmem(plearn,cx,cy);sot当前帧分类器参数更新模块:renewhf,用于更新当前帧跟踪分类器的参数。函数声明原型:voidrenewhf();sot当前帧分类器参数更新模块是对当前帧的分类器参数进行更新,示例如下:renewhf();sot当前帧分类器生成模块:cacuhf,用于计算当前帧的跟踪分类器。函数声明原型:voidcacuhf(complexfloat*hf_output);函数的输入输出如表8所示:表8sot当前帧分类器生成模块输入输出方向标识类型说明输入/输出hf_outputcomplexfloat*训练得到分类器sot当前帧分类器生成模块生成当前帧的分类器,需要输入之前训练得到的分类器hf_output,示例如下:complexfloat*hf_data=(complexfloat*)hf_add;//hf_add存储分类器;cacuhf(hf_data);sot工作流程设计:sot算法采用c66x系列多核dsp进行运算,两个核同时工作可以保证跟踪实时性(50fps)。算法分为七个功能模块,每个模块运行核心工作以及耗时如表9所示,其中,跟踪地址分配和参数初始化模块在开机后即可计算,要求跟踪前计算完成,分类器初始化模块在每次跟踪流程中只执行一次。表9sot功能模块及耗时模块核号耗时跟踪地址分配模块setmemoryaddrcore_t/core_p<5ms跟踪参数初始化模块sot_begincore_t/core_p<10s分类器初始化模块cacufirhf_veccore_p114ms目标跟踪模块cacuprobcore_t10ms模板更新模块1:cacurefmemcore_t7ms模板更新函数2:renewhfcore_t6ms分类器学习模块cacuhfcore_p104mssot的算法工作原理流程如图3所示,sot双核工作流程图如图4所示,sot每6帧跟踪流程示意图如图5所示,对应图4省略点处流程。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1