简要

2010年David S. Bolme等人在CVPR上发表了《Visual Object Tracking using Adaptive Correlation Filters》一文,首次将相关滤波器引入到目标跟踪当中。该算法大幅提高了目标跟踪的性能,论文实验结果可达到669FPS的速度。这相比同期间的跟踪算法可以算是一个极大的飞跃。本文将以该论文作为分析一类基于相关滤波的目标检测算法的引子。

基于相关滤波的跟踪

MOSSE算法的创新的在于,它是第一篇将相关滤波引入到目标跟踪的领域的论文。其思想是构造一个滤波模板 \(h\),使用该模板与图像序列帧 \(f\) (此处解释下,f指的是输入图像中框定的目标区域,也称为目标窗口,并非整个图像帧)做卷积运算,根据得到的响应输出\(g\)来确定目标在新的一帧图像中的位置
\[g=f \ast h\]
上式的符号\(\ast\)表示卷积运算。对于输入图像的2维快速傅里叶变换有\(F=\mathcal{F}(f)\),而对模板\(h\)的变换为\(H=\mathcal{F}(h)\)
根据傅里叶变换的性质,时空域\(f\)和\(h\)的卷积运算可以转换为傅里叶频域的点乘运算,有如下式子:
\[G=F\bigodot H^\ast\]
上式 \(H^\ast\) 表示为\(H\)的共轭复,\(\bigodot\)表示为点乘运算。
由此时空域的卷积运算转化为频域的点乘运算,将有助于提高运算速度,事实上后来的大部分改进算法也是基于这个性质进行的。

MOSSE滤波器

前面可知,基于相关滤波的目标跟踪算法核心是用滤波模板与图像序列做卷积运算来确定目标的位置,那么对与滤波模板的求解是算法的核心。
MOSSE全称是Minimum Output Sum of Squared Error ,算法开始需要有一组训练图像\(f{_i}\)和期望的训练输出\(g{_i}\)。\(g{_i}\)通常是以目标为中心,\(\sigma\)为方差生成的一个高斯矩阵。由此滤波模板\(H\)的计算如下:
\[H{_i^\ast} = \frac{G{_i}}{F{_i}}\]
上式是对单独一帧图像计算滤波模板的,但是在实际情况下滤波模板需要能够适应整个图像序列。MOSSE的滤波其要求对于视频序列的所有实际输出和期望输出的平方误差最小,即:
\[\underset{H^\ast}{min} \underset{i} {\sum} \begin{vmatrix} F_i \bigodot H^\ast - G_i \end{vmatrix}^{2}\]
该式的求解非本文重点,有兴趣的读者可以翻阅原论文的附录。该式子的求解结果如下:
\[H^\ast = \frac{\sum_i G_i \bigodot F^\ast_i}{\sum_i F_i \bigodot F^\ast_i}\]
分子是输入图像与期望的输入图像的卷积,而分母则是输入图像的能量谱图。

UMACE和ASEF滤波器

该论文虽然叫做MOSSE算法,不仅使用了Minimum Output Sum of Squared Error滤波器,其算法框架可以简单的将MOSSE滤波其替换为UMACE和ASEF等滤波器。
文中给出了UMACE和ASEF滤波其的求解形式。
UMACE滤波器形式如下:
\[H^\ast = \frac{\sum_i F^\ast_i}{\sum_i F_i \bigodot F^\ast_i}\]
可以看出其与MOSSE区别在于分子部分。

ASEF滤波器如下:
\[H^\ast = \frac{1}{N} \sum_i \frac{ G_i \bigodot F^\ast_i}{F_i \bigodot F^\ast_i}\]

对于ASEF滤波器因为输入图像的能量谱图\({F_i \bigodot F^\ast_i}\)在某些情况下可能接近与零,于是使用\({F_i \bigodot F^\ast_i + \varepsilon }\)替代。

滤波器初始化与更新

初始化

上诉的三个滤波其公式可以看到下标i,其表示的是多帧图像帧。MOSSE算法在初始化的时候需要一组训练图像和期望输出。那么这些训练数据是如何获得的?
作者给出的方案是,对第一个目标窗口\(f_i\)进行八个仿射变换得到一组训练图像,而\(g_i\)则以目标中心生成高斯矩阵。

更新

因为一个视频序列会有关照、旋转、尺度等变换,所以需要滤波器进行更新以便滤波器适应环境的变化。该论文使用了滑动平均值作为更新策略,这是很常用的更新方式。
对于ASEF和MOSSE的更新方式有稍许不同。ASEF滤波其的更新方式如下:
\[H_i^\ast = \eta \frac{G_i \bigodot F_i^\ast}{F_i \bigodot F_i^\ast} + (1-\eta)H_{i-1}^\ast\]
其中\(\eta\)为学习因子。而MOSSE更新方式如下。
\[H_i^\ast = \frac{A_i}{B_i}\]
\[A_i=\eta G_i \bigodot F_i^\ast+(1-\eta)A_{i-1}\]
\[B_i=\eta F_i \bigodot F_i^\ast+(1-\eta)B_{i-1}\]
从ASEF和MOSSE滤波其的形式不难看何其更新方式的不同。

其他

到这里,MOSSE算法的主要思想其实已经解释完了,但是还存在几个要点需要提及

检测

前文说目标的位置通过响应输出\(g\)来确定,其实就是通过频域计算出\(G=F\bigodot H^\ast\),再进行逆傅里叶变换求出\(g\),\(g\)矩阵的最大值就是目标的位置

\(G_i\)究竟指的是啥?

原文论文中对与\(g_i\)和\(G_i\)的阐述不够清晰,可能大部分读者会疑惑,哪个是响应输出?哪个是期望的响应输出?

  • 期望的响应输出指的是,期望经过滤波模板卷积后得到的输出,该输出是符合高斯分布的。MOSSE的平方误差中,\(F_i \bigodot H^\ast\)指的是目标窗口和滤波模板卷积后的响应输出的傅里叶变换,而\(G_i\)指的是期望得到的输出的傅里叶变换,这个输出要符合高斯分布。
  • 初始化过程中生成了一组期望的响应输出\(g_i\),这组训练数据通过更新滤波器的公式,初始化了滤波器。而在随后的检测更新过程中,\(g_i\)是以\[g=f_{i} \ast h_{i-1}\]响应输出的最大值坐标作为目标中心点而生成的高斯矩阵。
    听着很绕口,其实简单的说,在检测过程中,更新滤波器公式使用的\(G_i\)是以当前目标位置作为中心的。

预处理

对图像和滤波器进行卷积操作会将其映射到拓扑空间中,形成圆环性,即左边与右边相连,上边与下边相连。这样可能会影响到检测的正确性。其原因是因为当左边和右边连接,在傅里叶域中计算时候,可能在边界上会产生高的响应值,而使目标位置定位到边界上。故预先对图像乘上一个\(\cos\)窗口,以减小影响。这个方法在随后改进的算法中经常使用到。

【目标跟踪】相关滤波算法之MOSSE的更多相关文章

  1. ICCV2013 录用论文(目标跟踪相关部分)(转)

    单目标(表观模型): 1. Seunghoon Hong, BohyungHan. Orderless Trackingthrough Model-Averaged Density Estimatio ...

  2. 挑战目标跟踪算法极限,SiamRPN系列算法解读

    商汤科技智能视频团队首次开源其目标跟踪研究平台 PySOT.PySOT 包含了商汤科技 SiamRPN 系列算法,以及刚被 CVPR2019 收录为 Oral 的 SiamRPN++.此篇文章将解读目 ...

  3. 基于MeanShift的目标跟踪算法及实现

    这次将介绍基于MeanShift的目标跟踪算法,首先谈谈简介,然后给出算法实现流程,最后实现了一个单目标跟踪的MeanShift算法[matlab/c两个版本] csdn贴公式比较烦,原谅我直接截图了 ...

  4. 目标跟踪之ECO:Efficient Convolution Operators for Tracking

    一. 相关滤波算法总结 作者首先分析了 影响相关滤波算法效率 和 导致过拟合 的几个原因: 1)Model Size (模型大小) 包括两个方面: - 模型层数,对应多分辨率 Sample,比如多层 ...

  5. 目标跟踪之相关滤波:CF及后续改进篇

    一. 何为相关滤波? Correlation Filter 最早应用于信号处理,用来描述两个信号之间的相关性,或者说相似性(有点像早期的概率密度),先来看定义: 对于两个数据 f 和 g,则两个信号的 ...

  6. 目标跟踪之粒子滤波---Opencv实现粒子滤波算法

    目标跟踪学习笔记_2(particle filter初探1) 目标跟踪学习笔记_3(particle filter初探2) 前面2篇博客已经提到当粒子数增加时会内存报错,后面又仔细查了下程序,是代码方 ...

  7. 视觉目标跟踪算法——SRDCF算法解读

    首先看下MD大神2015年ICCV论文:Martin Danelljan, Gustav Häger, Fahad Khan, Michael Felsberg. "Learning Spa ...

  8. Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解

    视频目标跟踪问题分析         视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...

  9. TLD目标跟踪算法

    1. 简介 TLD目标跟踪算法是Tracking-Learning-Detection算法的简称.这个视频跟踪算法框架由英国萨里大学的一个捷克籍博士生Zdenek Kalal提出.TLD将传统的视频跟 ...

随机推荐

  1. Skip-Gram模型

    Stanford CS224n的课程资料关于word2vec的推荐阅读里包含Word2Vec Tutorial - The Skip-Gram Model 这篇文章.这里针对此文章作一个整理. wor ...

  2. Java对XML文件解析方式之一_SAX

    SAX(org.xml.sax) Simple API for XML,以事件的形式通知程序,对Xml进行解析.   SAX技术的介绍:SAX是一种以事件驱动的XML api,由它定义的事件流可以指定 ...

  3. linux 报错Mysql.pid 文件不存在导致service Mysqld start 失败

    Mysql.pid 文件不存在导致service Mysqld start 失败 1.  到提示报错的mysql.pid 不存在的目录下  使用 touch 命令创建mysql.pid文件.    t ...

  4. Arduino IDE for ESP8266教程(三)HTTP客户端

    整个教程就以上传Yeelink数据点为目的制作一个HTTP客户端. 1获取账号 http://www.cnblogs.com/imfanqi/p/4419915.html 2代码教程 http://w ...

  5. centos 7 安装python3.5.1

    系统: [root@localhost ~]# cat /etc/centos-release CentOS Linux release 7.2.1511 (Core) 内核: [root@local ...

  6. 动手动脑(lesson2)

    一·随机数生成问题 //信1605-3 20163683 蔡金阳 package lesson2; public class Suiji { private static final int N = ...

  7. "system:serviceaccount:rook-ceph-system:rook-ceph-system" cannot get pods/log in the namespace "rook-ceph"

    1.kubectl logs -f   rook-ceph-operator-86776bbc44-cv5hs   -n rook-ceph-system 日志:E | op-cluster: unk ...

  8. TCP/IP协议--TCP的超时和重传

    TCP是可靠传输.可靠之一体现在收到数据后,返回去一个确认.但是不能完全避免的是,数据和确认都可能丢失.解决这个办法就是,提供一个发送的重传定时器:如果定时器溢出时还没收到确认,它就重传这个报文段. ...

  9. 如何下载google play商店里面的app?

    如何不FQ的下载这国际版的app呢? 方法如下: https://androidappsapk.co/category/apps/ 你可以直接登入这个网站,下载你所需要的国际版的软件. 就像是踏入一个 ...

  10. Luogu4886 快递员 点分治

    传送门 淀粉质好题啊qaq 我们先考虑随便选择一个点作为邮递中心,通过移动邮递中心找到更优的位置.将路径最大值求出,并将路径最大值对应的那一些路径拿出来考虑.可以知道,如果说这些路径中存在一条经过当前 ...