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标准异常topic
Python标准异常topic AssertionError 断言语句 (assert) ...
- OpenERP ORM 对象方法列表
OpenERP对象支持的字段类型有,基础类型:char, text, boolean, integer, float, date, time, datetime, binary:复杂类型:select ...
- bzoj 4445 [SCOI2015] 小凸想跑步
题目大意:一个凸包,随机一个点使得其与前两个点组成的面积比与其他相邻两个点组成的面积小的概率 根据题意列方程,最后求n条直线的交的面积与原凸包面积的比值 #include<bits/stdc++ ...
- 关于malloc函数的动态分配问题
malloc函数动态分配了一个整型的内存空间,让abc都指向刚申请的空间,所以只有最后一个赋值语句的值保留在了空间里 #include<stdio.h> main() { int *a,* ...
- finally类
finally叫做最后的执行快,什么是最后的执行快?他的意思是这样的 他是写在try catch 的后面但是只能写一个,他设计这个finally的意思就是,如果try里面出错肯定会往陷阱里 面跑.没有 ...
- MYSQL提权总结
最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导致的吧,总结一下MYSQL提权的各种姿势吧,权当复习了.关于mysql提权的方法也就那 ...
- WinServer2003 文件夹共享 方法设置
文件夹设置: 5.假设我们在E盘有一个wmpub文件夹要设置在网络中共享,让大家都可以看到,首先我们右键点击WMPUB文件夹[共享和安全],弹出对话框,选择[共享此文件夹],点击[权限],弹出的对话框 ...
- android获取textview的行数
最近项目需求,需要获取Textview的行数,通过行数与TextView的maxLines进行比较来确定是否显示TextView下方的展开按钮是否显示,废话少说直接上代码,mTextView.getL ...
- border-radius详解
语法: border-radius : none | <length>{1,4} [/ <length>{1,4} ]? 取值范围: <length>: 由浮点数字 ...
- WVS简单使用
Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞,如交叉站点脚本,sql 注入等.在被 ...