4

我正在尝试构建一个分类器来检测热图像中的人脸。所以我尝试使用 Haar、LBP 和 HOG 分类器进行训练。我在 Windows 上使用 OpenCV 2.4.8。

opencv_traincascade.exe -data haarcascades -vec pos.vec -bg neg.txt -numPos 250 -numStages 24 -numNeg 900 -w 24 -h 24

我总共有 307 个阳性样本。负样本的大小为 75x75。对于这三种情况中的每一种,训练都停留在特定的阶段——早期的 Haar(阶段 12)和后期的 LBP(阶段 14/15)。我减少了否定的数量(最多 200 个),但这意味着训练会在后期陷入困境。培训已经两天没有进展了。没有负片被消耗,命令窗口看起来像这样 -

===== TRAINING 14-stage =====
<BEGIN
POS count : consumed   255 : 262

  • 消耗的 POS 计数和消耗的 NEG 计数是什么意思?
  • 当我将 minHitRate 降低到 0.7 时,为什么消耗的 POS 数量会增加?

请让我知道我做错了什么。谢谢。

4

2 回答 2

2

消耗的计数是在每个阶段中使用的正面和负面图像的数量。并且您需要使用更多的正负图像,大约 1000 个正片和 2000 个负片才能获得好的结果

于 2014-04-05T18:03:02.130 回答
2

我自己也有类似的问题。问题是每个阶段的分类器都会采用那些在前一阶段被分类为正例的负例。所以发生的事情是没有一个负样本被归类为正样本,代码进入无限循环试图找到一个。我通过更改源代码解决了这个问题,以便算法在找不到任何负面示例后终止,并且只使用前面的阶段作为分类器。如果您不想更改代码,请尝试添加更多负面示例或减少阶段数。

于 2015-02-20T02:25:30.580 回答