Visual Tracking with Online Multiple Instance Learning (MIL)及Robust Object Tracking with **paper笔记

MILTrack是一种基于在线多重实例学习的目标跟踪算法,通过改进正样本选择方式提高跟踪精度。该算法结合了多重实例学习(MIL)和在线Boosting,有效解决了因误标带来的分类器退化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 论文信息

  • 论文标题 :Visual Tracking with Online Multiple Instance Learning
  • 论文作者:
    1. Boris Babenko,University of California, San Diego
    2. Ming-Hsuan Yang,University of California, Merced
    3. Serge Belongie,University of California, San Diego
  • 发表会议:CVPR,2009

2. 基础知识

  • 目标跟踪的三大要素:图像表示(Image Representation)、外观模型(Appearance Model)和运动模型(Motion Model)。
  • 本文中的图像表示为Haar-like特征,外观模型由一个判别分类器组成,运动模型就是在上一帧目标周围取一系列的patches(要求:距离 < s ),看哪一个patch的概率最高就将新的目标框给它(贪心算法)。
  • 本文的重点是外观模型
  • 本文没有考虑旋转和尺度变化。

3. 整体思路

        MIL是一篇关于tracking中基于tracking-by-detection框架的文章,而且关注的是好的正样本的问题。当然之前那篇里面的struck也是关注这个问题。作者首先发现,利用当前帧的state获得的正负样本很容易混淆分类器本身。因为tracker本身稍微的误差可能将训练样本的label标错,那么训练出来的分类器也就不好了,于是对下一帧的预测很可能出问题。于是我们还是得获得好的正负样本来update appearance model啊。

        我感觉作者提出multi-instance learning 来解决这个问题,说白了就是三个臭皮匠顶个诸葛亮的思想。也就是说,作者想由于无法保证每次的正样本是最好的,而如果扩充正样本的话,又会搞得分类器自己迷惑,那么干脆多找些臭皮匠样本得了。这些样本构成一个集合,给他们赋一个标签。当这个集合里面的样本存在一个正样本或以上这个标签就是正的,否则为负。如下所示:

      左边是采用单个正样本update model,中间是采用多个正样本update model,右边是将正样本构造一个集合,整个集合看做是正样本。

      模型的框架如下所示:

       下面说说multiple instance learning(MIL).

        在传统的判别式学习算法中,我们训练分类器的话,需要正负样本的集合,在这里就是从一个图像patch提取的特征。而在MIL中,形式如下:,其中X是样本的集合,bag。如果这里面至少有一个样本位置,那么bag就是看做正的。我们要做的就是训练一个instance classifer来估计出label.对于bag而言,就是。这个公式的好处就是当bag中某一个instance有很高的probability的时候,那么相应地这个bag也具有很高的probobility。

         讲完了MIL,作者又引入了一个概念叫:Online boosting.Boosting的思想,应该是弱弱联合,构造一个强分类器,其中组合系数可学:

         最流行的算法来求解这个系数的当属adboost.

         有了这两个概念之后:

         Online Multiple Instance Boosting就出来了,作者首先构造一个目标函数:

      Hk-1是有前(k-1)个弱分类器组成的强分类器,在本文中作者对instance probability建模成:

,首先我们需要训练弱分类器,而弱分类器需要label,于是我们把bag的label给里面的每一个instance,然后选择K个如分类,挑选标准就是:


主要针对以下两点:

  • 只要能够在每一帧中都能应用上述贪心算法,理论上就能实现目标跟踪,那么,程序如何计算各个patches(要求:距离 < s )的概率呢?
  • 只要每一帧确定了当前的目标位置,程序就会对外观模型进行更新,实质上是更新判别分类器,新的分类器会对各个patches(要求:距离 < s )的概率重新进行计算,将概率最大的patch作为新的目标位置。

这里写图片描述

算法的伪代码如下:


4. 判别分类器如何更新

  • 一旦确定了当前的目标位置,就选取一组patches(要求: γ < 距离 < β ),把这些patch放到一个包里面,标记为positive,即假设这个包里面的所有patch中,至少有一个是正样本。
  • 同时也另选取一组patches(要求: γ < 距离 < β ),对于这些patch,每个都作为一个独立的包(有多少个patch,就有多少个包),标记为negative,即假设这个包里面的patch是负样本。
  • 注意:这里用的判别分类器并不是一个单独的分类器,实际上它由许多独立的基于Haar-like特征的弱分类器构成,将这些弱分类器用线性的方式加起来,就形成了一个Haar级联分类器:

H(x)=k=1Kαkhk(x)(1)

上述公式(1)中的 K 表示候选分类器, αk 是权值,最终目的是从 M 个Haar-like特征分类器中选出 K 个用于进行判别。

  • 该论文在更新判别分类器时,核心算法如下所示:

    1. for k = 1 to K do
    2.     for m = 1 to M do
    3.          pmij=σ(Hij+hm(xij))
    4.          pmi=1j(1pmij)
    5.          Lm=i(yilog(pmi)+(1yi)log(1pmi))
    6.     end for
    7.      m=argmaxmLm
    8.      hk(x)hm(x)
    9. Hij=Hij+hk(x)
    10. end for
  • 在上述算法中,第三行中求的是样本的概率,第四行求的是包的概率。

  • 从上面的算法可以看出,本文MIL算法主要依赖对数似然函数进行求解,每处理一帧图像,算法就会采集一些训练样本 {(X1,y1),(X2,y2)} ,其中 Xi={Xi1,Xi2} ,这时,算法会通过估计 p(y|x) 的值来使对数似然函数最大化,如下所示:

    logL=ilog(p(yi|Xi))(2)

    其中,

    p(y|x)=σ(H(x))(3)

    σ(x)=11+ex(4)

    σ(x) 是Sigmoid函数,其中 x H(x) ,表示分类器的结果。

5. 一些不足及相应的修补方法

  • 对于positive包,一个包中有多个实例,文章在计算时假定这些实例全部为正样本,这种假设离真实情况存在差异,其补救办法是:基于似然损失函数来选择弱分类器 h
  • 在选择弱分类器时,没有采用系数,文章没有对此问题加以补救,文章认为这并没有影响性能。
  • 似然函数在计算时,仅仅依据当前的样本,可能导致对当前样本的过拟合,文章通过保留历史数据的做法进行修补(前面的算法有没有体现这种思想?)

6. 实现细节

  • 在文章中,每一个弱分类器 hk 由一个Haar-like特征 fk 以及对应的4个参数构成,弱分类器返回一个对数概率,如下所示:

    hk(x)=log[pt(y=1|fk(x))pt(y=0|fk(x))](5)

    其中,

    pt(ft(x)|y=1)N(μ1,σ1)pt(ft(x)|y=0)N(μ2,σ2)(6)

    文章令 p(y=1)=p(y=0) ,采用贝叶斯来计算 hk(x) 。当这个弱分类器接收了一组新数据 {(x1,y1),(x2,y2),...,(xn,yn))} 时,更新的原则如下所示:
    μ1γμ1+(1γ)1ni|yi=1fk(xi)σ1γσ1+(1γ)1ni|yi=1(fk(xi)μ1)2(7)

    其中, γ 被称为学习率参数。
  • μ0 σ0 的更新原则也是一样的。

  • 上述弱分类器函数 hk(x) 的计算在配套代码中有所体现,比如:

x = samples.feature;
p0 = exp((x - mu0).^2.*e0).*n0;
p1 = exp((x - mu1).^2.*e1).*n1;

r = log(eps + p1) - log(eps + p0);
 
  • 1
  • 2
  • 5

7. 源码分析

  • 源码中几个重要的步骤有:采样、为每个样本计算Haar特征、更新弱分类器和选择分类器,其中更新弱分类器有三个相关函数(weakClassifierUpdate、weakClassifier、MilBoostClassifierUpdate)。
  • 函数weakClassifierUpdate、weakClassifier、MilBoostClassifierUpdate之间的区别在于,weakClassifierUpdate 主要用于更新μσ,weakClassifier。 主要用于存放各个弱分类器对各个样本的分类结果, MilBoostClassifierUpdate主要用于选出50个分类器。
  • 算法的主要结构如下所示:

   新的一帧开始--->采集样本detectx(这一组样本不分正负,就是用来定位的)---->利用上一轮选择好的50 个弱分类器,计算每个 detectx 样本的 Haar特征----->计算各个弱分类器对所有detectx样本的分类结果(每个结果都是一个数值)----->对每个detectx样本,将各个分类器的分类结果进行求和Sum---->找出一个数值最大的Sum,将它对应的detectx样本作为当前这一帧的目标---->采集正样本和负样本----->分别对正样本和负样本计算特征分别为正样本和负样本更新mu和sigma----->各个弱分类器对各个样本进行分类,打分----->选出50个最好的分类器,用于下一帧----->新的一帧结束



论文补充:

Robust Object Tracking with Online Multimple Instance Learning

作者Boris Babenko,该算法算是tracking中比较牛的算法之一

http://vision.ucsd.edu/~bbabenko/project_miltrack.shtml该主页对算法有比较详细的介绍


看看论文题目就大概知道这是一个什么样的算法组合,MIL + boosting 

该算法能更加鲁棒性的更新模型表面特征,能够处理没有快速变化的遮挡


/******************************************************************************************************************************************/ 

                                                               MILtrack框架:

/******************************************************************************************************************************************/

input:第k个视频帧

1、根据前一帧的对象位置,在一个给点的范围r,从当前帧提取一组图片,计算该组图片的特征

2、使用我们训练好的boosting强分类器估计1中所有提取出的图片x,p(y=1|x)的值。(即该图片为正样本的概率)

                                   

3、从2中求得的所有p(y=1|x)中选取最大值,将该图片设为我们追踪位置tracker location,

 

4、从当前帧的tracker location 半径为r的范围类提取一组图片集作为我们的正样本集(MIL)

                             

     从当前帧的tracker location 半径为r到b的范围类随机提取一组图片集作为我们的负样本集

                           

5、用4中提取的正、负样本集更新强分类器


/*******************************************************************************************************************************************/  

                                                              Online MIL Boost (OMB) 强分类器更新部分

/*******************************************************************************************************************************************/

1、强分类器由k个弱分类器组成,算法总是维护一个候选弱分类器池,池中有M个弱分类器,M>k。

一个弱分类器是由一个哈尔特征和四个参数(u1,g1,u0,g0)组成,(注意:这里假设了harr feature服从正态分布)


其中y=0的情况类似,假设,然后可以利用贝叶斯公式可以计算上面弱分类器的值,每次进行到下一帧时,得到新的样例数据后进行弱分类器的参数更新,依照下列公式:


其中y为更新因子,取值范围为(0,1)



2、在线更新算法部分


 2.1、样例的可能性大小计算公式:


其中为sigmod 函数,H(x)为当前强分类器

2.2、样例块的可能性大小计算公式:


其中p(yi|xij)是表示单个样例的可能性大小,yi的取值和样例块值一致

2.3、弱分类器的选择更新极大化下列公式:


其中Hk-1是前k-1个弱分类器组成的强分类器,MIL算法中加入了loss function部分


算法更新部分流程图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值