前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

SAMF

作者头像
和蔼的zhxing
发布2018-09-04 11:46:32
7080
发布2018-09-04 11:46:32
举报

论文:paper 结合了CN和KCF的多尺度扩展,看文章之前就听说很暴力,看了以后才发现原来这么暴力。 论文的前一半讲KCF,后一半讲做的实验,中间一点点大概半页的内容讲了怎么进行尺度适应。原文的3.3部分 这里有一张图:

SAMF

具体操作就是选择一系列尺度因子,源代码中选择了7个(比DSST中少多了),然后得到一个尺度金字塔,利用双线性插值resize到一个固定尺寸,然后分别送入KCF(结合了Fhog和CN特征),然后得到一个响应图,一共7层,然后找出响应的最大值,最大值属于哪个尺度就说明哪个尺度合适(直观上这样并没有说明道理),不过实验说明这样的效果还是不错的,这个算法取得了14年VOT竞赛的第二名。 可想而知这个速度是比较慢的,每一帧都要比KCF多花6倍的时间,如果加CN的话再多一点。 大神的专栏里比较了一下SAMF和DSST: 1:DSST有33个尺度,而SAMF只有7个尺度(还可以减少,并不存在训练样本减少的问题),所以DSST比较精细。 2:DSST是位置和尺度分开检测,所以只是分布最优,并不能保证位置是最优的,而SAMF是位置和尺度同时(全局)最优,而往往这两个结果是不一样的(全局和分布)。 3:DSST更具有创新性,也更灵活,但需要额外训练一个滤波器,SAMF只需要一个滤波器,但需要计算多次。 并不是DSST的效果一定就比SAMF好。

最后再吐槽一句,真是太暴力了,这种文章真是拼速度发出来的,不过公开源码了也可以说非常良心了。 核心代码截取出来放到这里:

代码语言:javascript
复制
search_size = [1  0.985 0.99 0.995 1.005 1.01 1.015];

for i=1:size(search_size,2)
                tmp_sz = floor((target_sz * (1 + padding))*search_size(i));
                param0 = [pos(2), pos(1), tmp_sz(2)/window_sz(2), 0,...
                        tmp_sz(1)/window_sz(2)/(window_sz(1)/window_sz(2)),0];
                param0 = affparam2mat(param0); 
                patch = uint8(warpimg(double(im), param0, window_sz));
                zf = fft2(get_features(patch, features, cell_size, cos_window,w2c));

                %calculate response of the classifier at all shifts
                switch kernel.type
                case 'gaussian',
                    kzf = gaussian_correlation(zf, model_xf, kernel.sigma);
                case 'polynomial',
                    kzf = polynomial_correlation(zf, model_xf, kernel.poly_a, kernel.poly_b);
                case 'linear',
                    kzf = linear_correlation(zf, model_xf);
                end
                response(:,:,i) = real(ifft2(model_alphaf .* kzf));  %equation for fast detection
            end
            %target location is at the maximum response. we must take into
            %account the fact that, if the target doesn't move, the peak
            %will appear at the top-left corner, not at the center (this is
            %discussed in the paper). the responses wrap around cyclically.
            [vert_delta,tmp, horiz_delta] = find(response == max(response(:)), 1);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档