首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持向量机弱学习的Opencv级联分类器

支持向量机弱学习的Opencv级联分类器
EN

Stack Overflow用户
提问于 2015-11-19 10:17:36
回答 2查看 763关注 0票数 2

我在做一个与人的检测有关的项目。我成功地实现了基于libSVM的分类器(用libSVM)和级联分类器(用opencv)。svm分类器工作得很好,我对许多视频进行了测试,它正确地检测出了带有少量假阳性和少量假阴性的人;这里的问题是计算时间:整个图像的计算时间接近1.2-1.3秒,前景贴片上的计算时间为0.2-0.4秒;由于我正在从事一个必须能够在几乎实时的环境中工作的项目,所以我转而使用分类器级联(以获得较少的计算时间)。所以我用opencv (opencv_traincascade)训练了许多不同的级联分类器。输出在计算时间上是很好的(在整个图像上有0.2到0.3秒,只有在前景上发射时就少了很多),所以我达到了目标,比如说。问题是检测的质量:我得到了很多假阳性和很多假阴性。由于这两种方法的唯一区别是opencv中使用的基分类器(决策树或决策桩,据我所知,无论如何没有支持向量机),所以我开始认为我的问题可能是基分类器(在某种程度上,hog特征最好与超平面分开)。

当然,libsvm和Opencv中使用的数据集完全相同,无论是为了训练还是为了testing...for的完整性,我使用了将近9千个正样本和近3万个负样本。

以下是我的两个问题:

  • 是否有可能改变opencv_traincascade函数中的基础弱学习者?如果是的话,这是可能的选择之一?如果两个答案都是肯定的,我如何才能做到这一点?)
  • 是否有其他计算机视觉或机器学习库将svm实现为弱分类器,并有一些方法来训练级联分类器?(这些库适合与opencv结合使用吗?)

像往常一样提前谢谢你!

马尔科。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-21 08:27:19

原则上,弱分类器可以是任何类型,但是Adaboost相关方法的优点是它们能够从简单的分类器中获得良好的结果(因为某种原因,它们被称为“弱”)。

使用SVN和Adaboost级联是一个矛盾,因为前者不需要在这样的框架中使用:它能够自己完成它的工作,而后者仅仅是因为它利用了弱分类器而具有快速性。

此外,我不知道关于它的任何研究,而且OpenCv不支持它:您必须自己编写代码。这是一个巨大的任务,你可能不会得到任何有趣的结果。

无论如何,如果您认为HOG功能更适合您的任务,OpenCv的traincascade有一个选项,除了Haar和Lbp。至于你的第二个问题,我不确定,但很有信心,答案是否定的。

我的建议是:尝试从traincascade中获得最大限度的数据,例如,尝试增加您可以获得的样本数量并比较结果。

票数 1
EN

Stack Overflow用户

发布于 2015-12-18 01:49:27

这个相当不错。它简单地说,如果使用较少的样本来训练支持向量机(假设训练集的一半以下),那么支持向量机可以被视为弱分类器。权重越高,“弱支持向量机”训练的机会就越大。

不幸的是,源代码并没有被广泛使用。如果您想要一个快速的原型,请使用python学习并查看在修改opencv之前是否可以获得理想的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33800996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档