【问题标题】:OpenCV Traincascade returns garbageOpenCV Traincascade 返回垃圾
【发布时间】:2014-12-04 19:08:57
【问题描述】:

我正在尝试训练一个级联分类器来检测图像中的鹿。问题是我的分类器总是在输入图像的直接中心返回一个正命中。对于测试图像、来自正集的训练图像和来自负集的训练图像都是如此。

对于我的正向训练集,我使用来自 CIFAR-10 数据集 (http://www.cs.toronto.edu/~kriz/cifar.html) 的鹿图像集。这给了我 5000 张各种姿势的鹿的 32x32 彩色图像。对于负训练集,我使用来自 Labelme12-50k 数据集 (http://www.ais.uni-bonn.de/download/datasets.html) 的图像,这给了我 39000 张随机图像。我将所有这些图像的大小调整为 32x32,以使大小与正训练集一致。

然后我使用以下命令创建了正向量:

./opencv_createsamples -info posFiles.txt -w 32 -h 32 -num 5000 -vec posVector.vec

矢量似乎已成功创建。然后,我使用以下命令训练了我的级联分类器:

./opencv_traincascade -data /home/mitchell/ece492/Deerinator_Software/Deerinator_Software/trunk/Haar/data -vec posVector_5000.vec -bg negFiles.txt -numPos 4000 -numNeg 39000 -w 32 -h 32 -featureType LBP -numStages 18

级联分类器需要大约 5 个小时来训练,并且似乎有 0.038 的负拒绝率但是,每当我使用以下命令在图像上测试分类器时:

./c-example-facedect --cascade=cascade.xml img.png

我总是得到相同的结果:在图像中心单击一次。这适用于测试图像、来自正训练集的图像和来自负训练集的图像。我不确定此时该做什么——此时,我只是在使用 opencv 示例可执行文件。我不确定这个过程是与我的输入训练集还是我对分类器的使用有关。有人有什么建议吗?

【问题讨论】:

    标签: c++ opencv image-processing machine-learning cascade


    【解决方案1】:

    我认为这失败了,因为图片样本太小了。我认为它们只有 32 x 32。如何将其用于阳性样本?如果我错了并且图片实际上更大,请教我如何打开它们,我敢打赌我可以为你运行它。

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多