打开run_tracker,给一些参数赋值,包括正则化、填充,
接下来用switch选择特征,文章中用到的是hogcolor(hog和CN特征),
读取视频,从base_path中读取(.\data),读取的有置信度,boundingbox的位置,大小,帧的序号等等,将上述参数传入tracker主函数,调用
tracker主函数,先判断boundingbox的大小是否太大,太大则降低分辨率,进行填充
创建高斯回归label,转到傅里叶域,即yf,计算余弦窗口,将中心突出,边缘降为0 (cos_window)
设置尺度池,search_size,将boundingbox放大缩小为这些尺寸
将time,positions,results,response这些变量初始化,
重头戏来了!!!开始循环序列里的每一帧,
如果是第一帧,用目标框大小乘以search_size中最佳的,默认是1,
tmp填充 ,进行一些列操作后读取特征,在get_feature中,也就是之后要加深度的地方,特征为gray,cn,hog(1+10+31维)因为选择的高斯核函数,则生成最后的特征信息kf
快速训练一个模型alpha,用于第一帧,之后更新模型的公式为
之前一直不懂模型是干嘛的,请教师兄知道是模型点乘特征之后才能得到一个响应图,将模型理解为一个滤波器即可
至此,我们第一帧的信息就结束了,得到了模型和位置大小信息信息等,循环第二帧
第二帧开始将boundingbox乘以每一个尺度信息
之后用同样的方法得到zf已经kzf,到尺度池里每个尺度都循环结束了,则找到一个响应最大的尺度,记录到szid
更新tmp,位置,大小等信息(使用上面的最佳尺度szid)
更新模型信息
大致流程结束,循环完序列中的每一帧即可