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提供了两个主 ...
随机推荐
- Python开发: DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...
- PHP+Zend 输出时中文乱码问题
1.把输入的格式改成 echo iconv("GB2312","UTF-8",'我爱PHP'); 2.其他的方法,还不会用,有待完善........
- 使用Hibernate SQLQuery(转)
原文地址:http://itindex.net/detail/51776-hibernate-sqlquery-sql,重新排了一下版 Hibernate对原生SQL查询的支持和控制是通过SQLQue ...
- 掌握Thinkphp3.2.0----自动完成
自动完成,是在create数据的时候自动执行的一个或多个动作 自动完成也分为动态和静态两种 格式: //完成规则array( array(完成字段1,完成规则,[完成条件,附加规则]), array( ...
- Shell 重定向
一直没搞懂 &> 和 <& 是表示什么意思. 今天自己总结一下,希望自己能理解它的真正含义. 重定向标准输入输出,切记 “1” 和 “>”之间没有空格 $ > ...
- TID大会学习心得之敏捷软件架构-微服务
敏捷微服务构建 王威: TW咨询师.架构转型教练.敏捷技术教练 敏捷的目标 敏捷的目标是提升效率?降低成本?减员增效? 敏捷:关注价值.快速反馈.快速响应.其的目标是提升响应力,响应力的提升不一定会提 ...
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
转载自:http://blog.sina.com.cn/s/blog_701c951f0100n1sp.html 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题, ...
- SQL update join on 连接更新
http:/how-can-i-do-an-update-statement-with-join-in-sql create table sale ( id int, udid int, assid ...
- Highcharts 总结
一.Highcharts series属性 1.下面是一个基本曲线图的例子: <html> <head> <meta charset="UTF-8" ...
- 视觉机器学习读书笔记--------BP学习
反向传播算法(Back-Propagtion Algorithm)即BP学习属于监督式学习算法,是非常重要的一种人工神经网络学习方法,常被用来训练前馈型多层感知器神经网络. 一.BP学习原理 1.前馈 ...