我在做一个与人的检测有关的项目。我成功地实现了基于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万个负样本。
以下是我的两个问题:
像往常一样提前谢谢你!
马尔科。
发布于 2015-11-21 08:27:19
原则上,弱分类器可以是任何类型,但是Adaboost相关方法的优点是它们能够从简单的分类器中获得良好的结果(因为某种原因,它们被称为“弱”)。
使用SVN和Adaboost级联是一个矛盾,因为前者不需要在这样的框架中使用:它能够自己完成它的工作,而后者仅仅是因为它利用了弱分类器而具有快速性。
此外,我不知道关于它的任何研究,而且OpenCv不支持它:您必须自己编写代码。这是一个巨大的任务,你可能不会得到任何有趣的结果。
无论如何,如果您认为HOG功能更适合您的任务,OpenCv的traincascade有一个选项,除了Haar和Lbp。至于你的第二个问题,我不确定,但很有信心,答案是否定的。
我的建议是:尝试从traincascade中获得最大限度的数据,例如,尝试增加您可以获得的样本数量并比较结果。
发布于 2015-12-18 01:49:27
这个纸相当不错。它简单地说,如果使用较少的样本来训练支持向量机(假设训练集的一半以下),那么支持向量机可以被视为弱分类器。权重越高,“弱支持向量机”训练的机会就越大。
不幸的是,源代码并没有被广泛使用。如果您想要一个快速的原型,请使用python学习并查看在修改opencv之前是否可以获得理想的结果。
https://stackoverflow.com/questions/33800996
复制相似问题