目标跟踪系列十二:Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码关键记录

代码关键点记录:成功不远了!O(∩_∩)O 哈哈~

1. Input : load_video_info.m 读入视频文件groundtruth_rect.txt(里面是4个一组的点,x,y, width ,height ?),得到有用的参数:

target_sz = [ground_truth(1,4), ground_truth(1,3)];  得到的是目标的尺寸(这里好像是第一张的,也就是一样大)

这个值会用来计算空间带宽的值。通常一个m*n的目标,它的空间带宽为 sqrt(m*n)/16. 也就是后面的:

output_sigma
= sqrt(prod(target_sz)) * output_sigma_factor;

这个参数后面再看

sz = floor(target_sz * (1 + padding));

实际计算的时候将目标放大为两倍来计算。

得到sz以后有一部非常重要的操作:

[rs, cs] = ndgrid((1:sz(1)) - floor(sz(1)/2), (1:sz(2)) - floor(sz(2)/2));

y = exp(-0.5 / output_sigma^2 * (rs.^2 + cs.^2));

yf = fft2(y);

首先将范围变成以target中心为原点的分布,然后表示出目标中心可能出现的概率分布;接下来变换到频域里面去

由此可以看出公式中的y不是我们平时使用的1或者是-1,而是一个可能出现的概率标签。

pos = [ground_truth(1,2), ground_truth(1,1)] + floor(target_sz/2);

pos代表的是目标中心的位置。

cos_window = hann(sz(1)) * hann(sz(2))为了消除边缘的效应和强调中心,使用一个窗口。若是Opencv里面没有我们可以自己写:

一个维度上的表示是这样的: w(n)=0.5(1?cos2π n/N
) ,0≤n≤N。(当然好像也有一个函数叫做createHanningWindow,具体的也需要查一下。)

2.读入图片序列,进行操作

对于每一张进来的图片,先转化为灰度图。

然后代码中相当冗长繁琐让人费解的一段代码取出了
Target中的x 和Y的坐标(当然有一些的边界的处理),接下来将这个区域内的

灰度值归一化到
-0.5 到 0.5(out = double(out) / 255 - 0.5;). 接下来通过hanning 窗口使得数据没有边缘效应(out= hann(sz(1)) *

hann(sz(2))*
out)。

记得这个时候输出的是经过归一化,hanning窗
处理的目标的灰度值。

3.
 求高斯核

主要就是参照公式(16):

求出高斯核。也就是代码中的:k
= exp(-1 / sigma^2 * max(0, (xx + yy - 2 * xy) / numel(x)));

同时还需要解释的一个函数是: circshift,循坏位移函数。例如: circshift(a,[1,2])表示的是将a 行向下移动一行,再向右移动两列。

而当这个数是负数就是向相反的方向!

例如:

a
=

1     2     3

4     5     6

7     8     9

0     0     0

>> circshift(a,[-1])

ans =

4     5     6

7     8     9

0     0     0

1     2     3

>> circshift(a,[1 2])

ans =

0     0     0

2     3     1

5     6     4

8     9     7

高斯核的求取过程中,用到了两个区域的傅里叶变换,再在频域内点积,而后又用到了循坏移位!这里的意义是我现在还不能理解的。。

再一次的看到这里我才明白这篇论文的优点是用了非常多的样本来训练分类器,而不是用一般的方法:从附近取几个作为正样本,远一点取几个作为负样本,作者取了2倍size范围内的这些样本都用来训练分类器。

接下来我还有一点的疑惑是:检测的过程中不同位置的样本体现在哪里!!!

敬请期待!

iker Cross

2014. 12. 16

时间: 2024-10-26 20:16:58

目标跟踪系列十二:Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码关键记录的相关文章

目标跟踪系列十一:Exploiting the Circulant Structure of Tracking-by-detection with Kernels代码思路

Tracking学习系列原创,转载标明出处: http://blog.csdn.net/ikerpeng/article/details/40144497 这篇文章非常赞啊!非常有必要将其好好的学习,今天首先记录它的代码思路(具体的推导过程后面会给出的). 首先,这篇文章使用的决策函数是一个结构风险最小化的函数: 这个函数中:前面是一个损失函数,损失函数里面的f(x)就是最后要求的判别函数:后面是一个结构化的惩处因子.对于SVM分类器来讲就是合页损失函数(Hinge loss).可是实际上,採用

struts2官方 中文教程 系列十二:控制标签

介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项目:struts_basic2 本帖地址:struts2官方 中文教程 系列十二:控制标签 即 http://www.cnblogs.com/linghaoxinpian/p/6941683.html 下载本章节代码 struts2 if标签 我们在thankyou.jsp中添加如下代码: <s:i

Exchange Server 2013系列十二:邮箱的基本管理

杜飞 邮箱是 Exchange 组织中信息工作人员最常用的收件人类型.每个邮箱都与一个 Active Directory 用户帐户关联.用户可以使用邮箱发送和接收邮件,并可以存储邮件.约会.任务.便笺和文档.邮箱是 Exchange 组织中用户的主要邮件传递和协作工具.每个邮箱由 Active Directory 用户以及存储在 Exchange 邮箱数据库中的邮箱数据组成(如下图所示).邮箱的所有配置数据都存储在 Exchange 用户对象的 Active Directory 属性中.邮箱数据

SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的GIS专业理论知识.

Silverlight &amp; Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation)

原文:Silverlight & Blend动画设计系列十二:三角函数(Trigonometry)动画之自由旋转(Free-form rotation) 说到对象的旋转,或许就会联想到对象角度的概念.对象的旋转实现实际上就是利用对象的角度改变来实现的位置变换,在<Silverlight & Blend动画设计系列二:旋转动画(RotateTransform)>一文中有对对象的不同角度变换的实现介绍,本篇要介绍的自由旋转(Free-form rotation)将借助<Fun

Exploiting the Circulant Structure of Tracking-by-detection with Kernels 公式详细的推导

以下文字是我自己写的,每一个公式都是我自己敲出来的,提供给大家学习,iker Cross 转载标明出处: 为了防止直接复制,我贴的是图片: 以上就是Exploiting the Circulant Structure of Tracking-by-detection with Kernels 公式详细的推导,整个的推导过程就是这样的,我是花了几个月的,分享给大家! iker Cross 2015. 3. 10

Java设计模式菜鸟系列(十二)组合模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-整体模式,将对象组合成树形结构来表示"部分-整体"层次结构.组合模式在处理树形结构的问题时比较方便. 一.uml建模: 二.代码实现 /** * 示例:组合模式有时也称"整合-部分"模式 * * 组合模式在处理树形结构的问题时比较方便 * * 节点 */ class TreeNode { /

WPF入门教程系列十二——依赖属性(二)

二. 依赖属性的优先级 由于WPF 允许我们可以在多个地方设置依赖属性的值,所以我们就必须要用一个标准来保证值的优先级别.比如下面的例子中,我们在三个地方设置了按钮的背景颜色,那么哪一个设置才会是最终的结果呢?是Black.Red还是Azure呢? <Window x:Class="WpfApp1.WindowDepend" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xm

BurpSuite系列(十二)----User options模块(用户选择)

一.简介   User options模块主要用来配置一些常用的选项. 二.模块说明 User options主要由4个模块组成: 1.Connections 连接 2.SSL 3.Display 4.Misc  杂项 1.Connections 连接 选项1:Platform Authentication 选项2:Upstream Proxy Servers 选项3:Socks Proxy 2.SSL 选项1:JavaSSL Options 选项2:Client SSL Certificate