【发布时间】: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