MIL 多示例学习 特征选择
一个主要的跟踪系统包含三个成分:1)外观模型,通过其可以估计目标的似然函数。2)运动模型,预测位置。3)搜索策略,寻找当前帧最有可能为目标的位置。MIL主要的贡献在第一条上。
MIL与CT的不同在于后者是通过感知矩阵进行特征提取,而MIL是通过boosting框架来进行特征选择,选择出来的特征(高斯分布)作为分类器用于对采样图像块的筛选,响应最大采样帧即估计目标。
多示例学习考虑的问题就是类别里含有大量难以去除的噪声,其将样本看成包(bag)的形式,一个bag中包含若干示例(即一个样本及其标签flag),某个示例的flag不定性较大,即其可能为正或负示例,但对于一个包含n个示例的bag,只要知道任意一个示例的flag为正就将其标志为正bag,而bag要为负,其中所有的示例都为负才行。由原文中表达式可看出,yi=maxj(yij),y=1,0分别表示正负样本,MIL有了其特有的外观模型。论文[1]中的Noisy-OR模型描述了p(y|X)与p(y|x)的关系:
p(yi|Xi)=1-prod(1-p(yi|xij))
而p(yi|xij)=sigmoid(H(x)),H表示强分类器,H=sumK(a*h),K为特征数即我们要训练后选出的有效特征数。这里h是弱分类器,其表达式为
hk=log[p(y=1|f(k)/p(y=0|f(k)]
即p(具有某一特征的采样属于正样本)/p(具有某一特征的采样属于负样本),该值越大,采样越可能为正样本。由于正负样本已知,这里假设其特征符合高斯分布。
于是,可通过求似然函数L=sum(logp(p(yi|Xi)))来进行特征的选择:首先求出L最大时的hi,并记录下所选特征的位置(即该特征可很好的区分当前帧正负样本,从而使得采样较易标签),依次类推,文中迭代了50次,即每个样本的特征向量长度为50,减少了弱分类类性质的特征的同时也减小了运算,最终,提取出较强的特征。
PS:本文的图像块的特征是harr特征,随机选取2到4个矩阵进行计算获得一个特征值(可通过积分图进行快速计算),程序中获取了长度为250的特征向量,有效地减少特征向量长度可提升算法的性能。
主要步骤理解为:1 获得正负样本的harr特征 2 通过MIL和boosting(提升)算法,训练正负样本,计算出使似然函数L最大的强特征 3 有了分类器,在当前帧目标附近采样大量图像块并计算出相应的特征(这里由于正负样本训练完成,强特征位置已知) 4 计算出采样样本在分类器器上的响应,响应最大的即为估计目标块。
而CT:1 获取正负样本的所有harr特征(高维,10的6次方) 2 感知矩阵R提取特征 3 训练贝叶斯分类器,获得参数 4 采样,计算分类器响应,响应最大的即为目标块
比较MIL与CT:1 初始特征维度不一样 2 CT降维的同时较好的保留了原高维向量信息;MIL选取了分类性能较强的特征作为训练器输入 4 CT 贝叶斯分类器 ;MIL boosting提升了贝叶斯分类器的性能 4 MIL采用了自适应表观模型(在线多示例学习),对噪声有较好的鲁棒性 5 由于都含有贝叶斯分类的思想,都属于判决式跟踪范畴。
[1] Multiple Instance Boosting for Object Detection. Paul Viola.
Visual tracking with online Multiple Instance Learning.
MIL 多示例学习 特征选择的更多相关文章
- 多示例学习 multiple instance learning (MIL)
多示例学习:包(bags) 和 示例 (instance). 包是由多个示例组成的,举个例子,在图像分类中,一张图片就是一个包,图片分割出的patches就是示例.在多示例学习中,包带有类别标签而示例 ...
- html5游戏引擎phaser官方示例学习
首发:个人博客,更新&纠错&回复 phaser官方示例学习进行中,把官方示例调整为简明的目录结构,学习过程中加了点中文注释,代码在这里. 目前把官方的完整游戏示例看了一大半, brea ...
- Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
- ApiDemos示例学习(1)——ApiDemos示例的导入
---恢复内容开始--- 今天准备开始写这个ApiDemos示例的学习日记了,放在网上以监督自己! 首先是导入该示例.如果我们在配置Android开发环境是,利用Android SDK 安装包中的SD ...
- 通过示例学习JavaScript闭包
译者按: 在上一篇博客,我们通过实现一个计数器,了解了如何使用闭包(Closure),这篇博客将提供一些代码示例,帮助大家理解闭包. 原文: JavaScript Closures for Dummi ...
- Java中的for循环——通过示例学习Java编程(9)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=21 循环用于反复执行同一组语句,直到满足特定条件 ...
- Java中的if-else语句——通过示例学习Java编程(7)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=18 当我们需要根据一个条件执行一组语句时,我们需 ...
- 通过示例学习rholang(下部:课程8-13)
课程8——状态通道和方法 保存数据 到现在为止,你已经很擅长于发送数据到元组空间和从元组空间中获取数据.但是无论你在什么时候进行计算,你有时需要把一些数据放在一边晚点才使用.几乎所有编程语言都有变量的 ...
- 通过示例学习PYTORCH
注意:这是旧版本的PyTorch教程的一部分.你可以在Learn the Basics查看最新的开始目录. 该教程通过几个独立的例子较少了PyTorch的基本概念. 核心是:PyTorch提供了两个主 ...
随机推荐
- C++STL 常用 函数 用法
学完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在 ...
- GregorianCalendar类
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现. Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的G ...
- jquer 基础篇 dom操作
DOM操作: 1.新增元素:创建元素:$("HTML")返回的创建成功的新元素新增子元素:元素.append(obj) 在匹配元素的里面新增一个子元素 追加方式 新元素作为最后一个 ...
- WPF整理-使用逻辑资源
"Traditional application resources consist of binary chunks of data, typically representing thi ...
- 实战Java虚拟机之二“虚拟机的工作模式”
今天开始实战Java虚拟机之二:“虚拟机的工作模式”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...
- C++11新特性——初始化列表 initializer_list
破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性 ...
- Sublime P4语法高亮设置
Github插件链接:p4-syntax-highlighter 首先安装Package Control. 进入Package界面,我的目录: /Users/wasdns/Library/Applic ...
- apachetop 实时监控apache指定日志
编译安装,压缩包戳我下载 帮助文档 # apachetop -h ApacheTop v0.12.6 - Usage: File options: -f logfile open logfile (a ...
- iOS - + initialize 与 +load
一.+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化 ...
- CodeForces 676D代码 哪里有问题呢?
题目: http://codeforces.com/problemset/problem/676/D code: #include <stdio.h> #define MAXN 1001 ...