[论文阅读]随机蕨:FAST Key Points Recognition Using Random Ferns
2015-09-23 15:59
706 查看
论文阅读,记录一下自己阅读论文的收获,如有谬误,希望能得到指正!
------------------------------------------------------------------------------------------------------------------------------------------------------------
随机蕨可以理解为一种简化版本的随机树。对于每一个图片的特征点,把其周围的块(Patch)可能的取值看作一个类,用二值测试进行分类,具体说来,就是选择一定的模式位,对这些模式的像素进行二值测试,来对Patch进行分类。随机蕨把这种分层的随机树结构进行简化,变为非层次的结构,同时也能和随机树一样保持很好的分类效果。
比如,上图中左边是一个随机树,通过对随机树每一层采用同样的测试,变为中间的树形结构,其等价于右边的结构,这就是文章所谓的蕨。
之所以要这样做是因为原来的树空间中虽然维度更高,但是能去得到的值的位置个数和蕨空间中一样。例如在上图(a)中,数空间能取值的只有绿色的四个点,这和右图中蕨空间取值个数一样。
------------------------------------------------------------------------------------------------------------------------------------------------------------
一、问题的表示
给定一个特征点,得到包围其的Patch的二值特征集,我们的目标是通过这些二值特征集来对其进行分类:
其中,f1...fN 是对待分类Patch进行计算得到的二值特征,ci为具体的类别。C是代表具体类别的随机变量。
由贝叶斯公式可以得到:
假设先验 P(C)是均匀分布(针对具体问题可以替换为具体的概率分布,或许会有更好的结果),对于一个特定的分类问题,其特征也都是固定的,所以分母也可以去掉,最后我们的问题变成了:
在实现中,每一个二值特征fj只决定于选定的两个像素的相对大小:
I 代表图片的Patch,这些特征很简单,所以需要足够多的数量来保证分类的精度,通常N=300。因此(1)式的联合概率需要为每一个类存储2^N个实体。
一种简化的方式是Naive Bayesian,即假设所有的特征之间是完全独立的,于是问题简化为:
但是这种方式过于极端了,完全忽略了特征之间的一些依赖关系。于是作者提出了一个折中的方式,先对所有的特征进行分组,然后再在组内部考虑依赖关系,组之间假设完全独立,把这些组成为蕨(Ferns),把N个特征分为M个组,每个组有S个特征,即N=S*M,于是条件概率变为下列式子了:
Fk代表第k个蕨,δ(k,j)是一个从1到N的随机值。这种方式也被称为是 Semi-Naive Bayesian 方式。因此可以组内部对特征的依赖进行Model。之前的 2^N 被减小到了 M x 2^S,对于N=450时,S=11,M在30到50之间,M
x 2^S大约为80,000,要比 2^N 小多了。这种表示方式也很灵活,因为可以通过改变蕨的数目和大小,在性能和占用内存大小之间进行折中。
二、训练
这里说明一下,随机蕨的随机体现在特征选择和分组都是随机的。训练的时候,对每一个蕨进行操作。k表示选定的二值特征组成数的大小,k取1,2,...,2^S。
最简单的方式是用极大似然估计,分子 N(k,ci)表示训练样本中类别为ci、蕨的二值特征大小为k的样本数量,分母 Nci 表示类别ci的样本总数量:
由于有些 N(k,ci)会为0,导致(2)式乘起来为 0,变为了下列式子,Nr取1就可以:
------------------------------------------------------------------------------------------------------------------------------------------------------------
随机蕨可以理解为一种简化版本的随机树。对于每一个图片的特征点,把其周围的块(Patch)可能的取值看作一个类,用二值测试进行分类,具体说来,就是选择一定的模式位,对这些模式的像素进行二值测试,来对Patch进行分类。随机蕨把这种分层的随机树结构进行简化,变为非层次的结构,同时也能和随机树一样保持很好的分类效果。
比如,上图中左边是一个随机树,通过对随机树每一层采用同样的测试,变为中间的树形结构,其等价于右边的结构,这就是文章所谓的蕨。
之所以要这样做是因为原来的树空间中虽然维度更高,但是能去得到的值的位置个数和蕨空间中一样。例如在上图(a)中,数空间能取值的只有绿色的四个点,这和右图中蕨空间取值个数一样。
------------------------------------------------------------------------------------------------------------------------------------------------------------
一、问题的表示
给定一个特征点,得到包围其的Patch的二值特征集,我们的目标是通过这些二值特征集来对其进行分类:
其中,f1...fN 是对待分类Patch进行计算得到的二值特征,ci为具体的类别。C是代表具体类别的随机变量。
由贝叶斯公式可以得到:
假设先验 P(C)是均匀分布(针对具体问题可以替换为具体的概率分布,或许会有更好的结果),对于一个特定的分类问题,其特征也都是固定的,所以分母也可以去掉,最后我们的问题变成了:
在实现中,每一个二值特征fj只决定于选定的两个像素的相对大小:
I 代表图片的Patch,这些特征很简单,所以需要足够多的数量来保证分类的精度,通常N=300。因此(1)式的联合概率需要为每一个类存储2^N个实体。
一种简化的方式是Naive Bayesian,即假设所有的特征之间是完全独立的,于是问题简化为:
但是这种方式过于极端了,完全忽略了特征之间的一些依赖关系。于是作者提出了一个折中的方式,先对所有的特征进行分组,然后再在组内部考虑依赖关系,组之间假设完全独立,把这些组成为蕨(Ferns),把N个特征分为M个组,每个组有S个特征,即N=S*M,于是条件概率变为下列式子了:
Fk代表第k个蕨,δ(k,j)是一个从1到N的随机值。这种方式也被称为是 Semi-Naive Bayesian 方式。因此可以组内部对特征的依赖进行Model。之前的 2^N 被减小到了 M x 2^S,对于N=450时,S=11,M在30到50之间,M
x 2^S大约为80,000,要比 2^N 小多了。这种表示方式也很灵活,因为可以通过改变蕨的数目和大小,在性能和占用内存大小之间进行折中。
二、训练
这里说明一下,随机蕨的随机体现在特征选择和分组都是随机的。训练的时候,对每一个蕨进行操作。k表示选定的二值特征组成数的大小,k取1,2,...,2^S。
最简单的方式是用极大似然估计,分子 N(k,ci)表示训练样本中类别为ci、蕨的二值特征大小为k的样本数量,分母 Nci 表示类别ci的样本总数量:
由于有些 N(k,ci)会为0,导致(2)式乘起来为 0,变为了下列式子,Nr取1就可以:
相关文章推荐
- HTML+CSS+JavaScript语言重温感想
- 使用Typescript来写javascript
- 使用etalage插件快速做出jquery放大镜效果
- TypeScript入门指南(JavaScript的超集)
- 如何封装form表单中富文本编辑器bootstrap wysiwyg到jfinal传递参数
- jQuery EasyUI datagrid列名包含特殊字符会导致表格错位
- React的一些。
- JavaScript学习笔记之JS函数(一)
- 一句话总结:工作,用jQuery,怎么快怎么来;学习,用js,怎么精怎么来
- 学习笔记-AngularJs(六)
- 50 Must-have plugins for extending Twitter Bootstrap
- Node.js Cluster多进程负载测试
- CSS注意事项
- 一些CSS3的乐趣 - 工作也能发现乐的源头
- ButterKnife--View注入框架
- Unsafe初涉
- 浅谈html5网页内嵌视频(转)
- Angular JS笔记
- IIS7.0设置 url重写成html(伪静态)
- javascript之查找数组元素