用Hough投票做物体检测(续)
文献: Object Detection using a Max-Margin Hough Transform, CVPR 2009.
用最大化margin的方法学习出参与投票的部分的权重, 用优化工具CVX求解。流程图如下:
文献: Recognition using Regions, CVPR 09.
内容简介:提出了一个用区域来做物体检测、分割和分类的统一框架。具体地:对每幅图像产生a robust bag of overlaid regions,每个region用一系列特征表示;学习出每个region的权重;用a generalized Hough voting scheme来预测物体的位置、大小和类别,在做验证和分割。Bag of regions的示意图:
投票,验证和分割过程的示意图:
文献:Voting by Grouping Dependent Parts,ECCV 10。
内容简介:Hough投票方法的主要弱点是,用相互依赖的局部观测来独立的对物体的全局特征进行投票。也就是说忽略了特征之间的依赖关系。本文通过将依赖的部分分到一组来投票,解决这个问题。示意图:
创新点:
提出一个目标函数把相关的三个问题结合在一起:
Grouping: 把相互依赖的部分分到一组;
Correspondences: 相互依赖部分的对应问题(查询图像的特征和训练图像的特征之间的相似度);
Voting:用分好的组来找到一致的物体的假设。
算法细节:
算法流程和代价函数的三项
如上图(a)示,算法流程为:计算边缘图像——在边缘图像上均匀采样,提取特征(geometric blur features)——把每个特征映射到训练集中与之相似的特征——把相关的点分到一个组,由整个组(而不是独立的点)来对物体的假设进行估计。
为了较好的分组,提出了三个代价函数,分别表征:训练图像和查询图像特征之间的一致性,分组变换的一致性,分组后投票的一致性。目标是让这三个代价函数的加权和最小。
代价函数的定义
Correspondences:通过最小化查询图像的第i个部分和训练图像的第j个码本的差异:
表示第i个查询部分跟第j个训练码本匹配。采用K近邻,即一个查询特征对于很多训练特征,。
Grouping:找到一个变换来最小化组内每个部分的失真度:
Voting:惩罚组内投票的分散度:
(?)
代价函数组合:
所以,所有的查询部分i属于v组,并且与第j个训练部分相关的代价是:
联合优化和组的hough投票
我们使所有组的代价之和最小,来求解最好的分组方式,对应关系,变换,即:
联合优化和组的hough投票算法为:
其中式(14)为:
(?)
初始化分组的方法:如果边缘上的两点在同一个区域的边界上,则为一组。
验证:HOG特征的SVM分类器,用pyramid match kernels(PMK)。
————————————————————————————————————————————————————
文献:Discriminative Learning of Contour Fragments for Object Detection,BMVC 11。
内容简介:有判别性的学习轮廓片段描述子来做物体检测。
创新点:
提出了新的形状片段描述子,把边缘上的点之间的关系用一个角度矩阵描述。
判别性的学习:主要用hough 森林。
算法细节:
物体检测方法简介:用hough森林来判别性的训练局部边缘片段(分别代表新的片段描述矩阵,中心投票向量,类别);测试阶段匹配的描述子向特定的物体中心投票。
图1
片段的判别学习
边缘检测和连接:用Berkeley edge detector检测边缘,并把边缘连接起来,组成一系列点的集合。由于边缘的连接方式对片段的获取影响很大。 所以本文中,记:所有的点集为边缘(edges),所有提取出的边缘部分为片段(fragments)。定义所有的片段长度相同,有N个点。
形状片段描述子:一个独立边缘包含一系列点,共个(而且),表示为:,所以这个边缘有 个片段描述子。每个片段我们定义N*N的描述矩阵,每个元素定义为点组成的线和与(这个片段的bounding box的左上角的点)组成的线的夹角:
该描述子的优点:有判别性(类内方差小,类间方差大,见下图),减少了噪声(考虑多个点之间的关系而不是单独考虑各个点),对尺度变化的不变性、包含了方向信息,高效(事先计算像素之间所有可能的组合,存储在一个查询表——lookup-table,这个查询表的大小为,可以在常数时间内查询。)。
图2
判别性的片段学习:用hough森林学习。
建树时,训练样本表示为(分别代表片段描述矩阵,类别,偏移向量),正例样本是bounding box内所有的边缘。二值测试时随机的减少类别不确定性和偏移量不确定性。
检测过程中,提取出边缘,计算它的个片段描述子,并且分类到特定树的叶子节点。
投票时,每个叶子节点都有中心投票向量 ,类别概率,在hough图像中对应位置增加。最后对hough图像做高斯滤波,取局部最大作为物体中心。
排序和确认
用已有的方法pyramid matching kernel (PMK),选择HOG特征,对图像中候选的一些位置排序,做确认。
问题
1. 图1是不是只选择有弯曲的轮廓片段投票?
在描述子中并没有区别直线轮廓和弯曲轮廓。之所以弯曲轮廓投票,主要跟后面的hough森林有关。
理论上,如果一个特征能够走到叶子节点,并且该节点的类别纯度是1,则它一定来自物体,所以很具有判别性,应该投票。实际中,受噪声影响,可能还得考虑这个特征占总特征的比例。如果叶子节点的纯度高,并且走到该叶子节点的特征比例大,则这些特征就很具有判别性。
所以,图1中所画的弯曲轮廓应该是很具有判别性的轮廓片段,而直线轮廓则不太有判别性。
2. 该描述子对旋转变化不鲁棒。因为同一个边缘旋转后,它的bounding box 会发生变化,那么就会变。
3. 为什么本文的描述子效果好,后面hough投票时用hough 森林有什么好处?(本文的核心)
当一个fragment上的两点i和j比较近时,该描述子与链码(chain codes)没有本质区别。当i,j比较远时,该描述子很好的描述了点之间的空间关系,从而很好的描述了边缘的形状信息。
因为描述子遍历了fragment上的所有点,即把一个长度为N的fragment用一个N*N的矩阵进行描述,肯定有冗余。后面再用hough森林投票,经过多个节点判别,实质上是起到了降维的作用。