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提供了两个主 ...
随机推荐
- 学习AOP之JAVA的代理机制
从一个输出日志的实例分析JAVA的代理机制 一.通用的日志输出方法 :需要在每个类里都增加对输出日志信息的代码 二.通过面向接口编程实现日志的输出(JAVA的静态代理):虽然实现了业务逻辑与输出日志 ...
- java并发控制:lock
一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性.那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被syn ...
- javascript学习之通过class获取元素
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Python脚本配合Linux计划任务工作
经常遇到直接运行Python脚本没有问题,但是一放入/etc/crontab之后就歇菜的情况,总结了一下,大致需要注意以下几点: 1. 脚本首行加入#!/usr/bin/env python 2. 脚 ...
- NorthWind 数据库整体关系
http://blog.csdn.net/bergn/article/details/1502150 今天看到一张非常有用的图,说明有关Northwind数据库整体关系的图,以前一直在用,但是没有一个 ...
- 使用 PHP 过滤器(Filter)进行严格表单验证
PHP 过滤器(Filter)用于验证和过滤来自非安全来源的数据,比如用户的输入,使用过滤器扩展可以使数据过滤更轻松快捷.要求的 PHP 版本是 PHP 5 >= 5.2.0,PHP 7 和 F ...
- javascript立即执行函数
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( ...
- Approaches to Vector Computation
COMPUTER OR GANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION
- 【java基础学习】IO流
IO流 字节流InputStream和OutputStream 字符流Writer和Reader 装饰模式
- 月四 周2 iii
同样发生于今天 今天做的一道题引起了我对<电波女与青春男>的回忆 如果说光鸟鸟和电波女对我来说有什么共同之处, 那应该是体验过程我都很认真吧 我还是很喜欢入间人间的书, 不过那本妹主题的新 ...