特征检测和对象检测之间的差异

时间:2011-09-29 21:36:55

标签: opencv feature-detection object-detection

我知道最常见的物体检测涉及Haar级联,并且有许多特征检测技术,如SIFT,SURF,STAR,ORB等......但如果我的最终目标是识别物体并非两种方式最终给了我相同的结果?我理解在简单的形状和图案上使用特征技术,但对于复杂的对象,这些特征算法似乎也可以工作。

我不需要知道它们如何运作的区别,但是否有一个足以排除另一个。如果我使用Haar级联,我是否需要打扰SIFT?为什么要这么麻烦?

感谢

编辑:出于我的目的,我想在广泛的事物上实现对象识别。这意味着任何形状与杯子形状相似的杯子都将作为杯子的一部分被拾取。但我也想指定实例,这意味着NYC杯将被作为NYC杯的实例。

3 个答案:

答案 0 :(得分:5)

物体检测通常包括两个步骤:特征检测和分类。

在特征检测步骤中,收集要检测的对象的相关特征。

这些功能输入到第二步,分类。 (甚至可以使用Haar级联 据我所知,对于特征检测。)分类涉及算法 例如神经网络,K-最近邻居等。分类的目标是找到 检测到的特征是否与要检测的对象的特征相对应 将有。分类一般属于机器学习领域。

例如,人脸检测就是对象检测的一个例子。

EDIT(2018年7月9日):

随着深度学习的出现,具有多个隐藏层的神经网络得到了广泛的应用,使得相对容易看到特征检测和对象检测之间的差异。深度学习神经网络由两个或多个隐藏层组成,每个隐藏层专门用于手头任务的特定部分。对于从图像中检测对象的神经网络,较早的图层将低级要素排列到多维空间(要素检测),后面的图层根据这些要素的位置对对象进行分类。多维空间(对象检测)。 Wolfram博客文章“启动Wolfram神经网络存储库”中提供了对此类神经网络的精彩介绍。

答案 1 :(得分:1)

通常,对象是要素的集合。一个特征往往是一个非常低级的原始事物。一个对象意味着将对场景的理解提升到一个新的水平。

某个功能可能类似于角落,边缘等。而对象可能类似于书籍,盒子,桌子等。这些对象都由多个特征组成,其中一些特征在任何给定场景中都是可见的。

答案 2 :(得分:0)

不变性,速度,存储;几个原因,我可以在脑海中思考。另一种方法是保留完整的图像,然后检查给定的图像是否与数据库中的玻璃图像相似。但是如果你有一个玻璃的压缩表示,它将需要较少的计算(因此更快),将需要较少的存储和功能告诉你跨图像的不变性。

您提到的两种方法基本相同,但略有不同。在哈尔的情况下,你会发现哈尔特征然后你提升他们以增加信心。提升只不过是一个元分类器,它巧妙地选择将所有Harr特征包含在最终的元分类中,以便它可以给出更好的估计。另一种方法,或多或少也是如此,除了你有更多“复杂”的功能。主要区别在于,您不直接使用助推器。您倾向于使用某种分类或聚类,如MoG(高斯混合)或K-Mean或其他一些启发式算法来聚类数据。您的群集很大程度上取决于您的功能和应用程序。

在您的情况下会起作用:这是一个棘手的问题。如果我是你,我会和Haar一起玩,如果它不起作用,会尝试另一种方法(obs:>)。请注意,您可能希望对图像进行分段并为其提供某种边界以检测眼镜。