SAMF

论文: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好。

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

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);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

写给开发者的机器学习指南(四)

查全率是定义由给定查询和数据语料库的算法检索的相关性的大小。因此,给定一组文档和应该返回这些文档的子集的查询,查全率的值表示实际返回了多少相关文档。 此值计算如...

651
来自专栏技术沉淀

03 Types of Learning

从Output Space/Data Label/Protocol/Input Space四个维度介绍常见机器学习类型,见详细课件。

1891
来自专栏挖数

简述【聚类算法】

所谓人以类聚,物以群分。人都喜欢跟自己像的人聚在一起,这些人或者样子长得比较像,或者身高比较像,或者性格比较像,或者有共同的爱好,也就是身上有某些特征是相似的。...

2906
来自专栏AI研习社

Tensorflow 中 learning rate decay 的奇技淫巧

深度学习中参数更新的方法想必大家都十分清楚了——sgd,adam 等等,孰优孰劣相关的讨论也十分广泛。可是,learning rate 的衰减策略大家有特别关注...

5374
来自专栏机器学习原理

深度学习——CNN(3)CNN-AlexNetCNN-GoogleNet其他网络结构

2555
来自专栏智能算法

数据异常到底该如何检测?(二)

有了之前的铺垫和理论,本文就用一些现实中的实际数据进行一些具体的算法的应用。数据为网络访问日志文件,主要选择了单位时间内的访问请求次数与单位访问中的动作数作为二...

2855
来自专栏自学笔记

基于SVM的思想做CIFAR-10图像分类

回顾一下之前的SVM,找到一个间隔最大的函数,使得正负样本离该函数是最远的,是否最远不是看哪个点离函数最远,而是找到一个离函数最近的点看他是不是和该分割函数离的...

3553
来自专栏Petrichor的专栏

深度学习: 检测算法演进

[1] 干货 | 目标检测入门,看这篇就够了 [2] 基于深度学习的目标检测算法综述 [3] 基于深度学习的「目标检测」算法综述

963
来自专栏目标检测和深度学习

教程 | 先理解Mask R-CNN的工作原理,然后构建颜色填充器应用

选自matterport 作者:Waleed Abdulla 机器之心编译 参与:刘晓坤 上年 11 月,matterport 开源了 Mask R-CNN 实...

2375
来自专栏张耀琦的专栏

【机器学习入门系列】梯度下降法

什么是梯度下降法?学习速率的引入;如何调整学习速率;Adagrad算法介绍;用泰勒展开式对梯度下降法进行数学理论支持。

1.5K1

扫码关注云+社区

领取腾讯云代金券