3

我正在尝试通过内置的 Matlab 函数“ trainCascadeObjectDetector ”训练级联分类器,但是当我调用此函数时,它总是显示以下错误消息:

trainCascadeObjectDetector('MCsDetector.xml',positiveInstances(1:5000,:),'./negativeSubFolder/',...
'FalseAlarmRate',0.01,'NumCascadeStages',5, 'FeatureType', 'LBP');

Automatically setting ObjectTrainingSize to [ 32, 32 ]
Using at most 980 of 1000 positive samples per stage
Using at most 1960 negative samples per stage

265 ocvTrainCascade(filenameParams, trainerParams, cascadeParams, boostParams, ...
Training stage 1 of 5
[....................................................Time to train stage 1: 12 seconds

Error using ocvTrainCascade
Error in generating samples for training. No samples could be generated for training the first cascade stage.

Error in trainCascadeObjectDetector (line 265)
ocvTrainCascade(filenameParams, trainerParams, cascadeParams, boostParams, ...

样本数量为5000张正片和11000张负片。Matlab 版本是 2014a,在 Ubuntu 12.04 上运行。

我不确定是否需要增加更多的训练数据,因为错误信息是:

生成训练样本时出错。无法生成用于训练第一个级联阶段的样本。

你能看看这个吗?谢谢!

4

1 回答 1

1

首先,数据类型是positiveInstances什么?它应该是具有两个字段的结构的一维数组:imageFileNameobjectBoundingBoxespositiveInstances(1:5000,:)看起来有点可疑,因为您将其视为 2D 矩阵。

要检查的第二件事是negativeSubFolder. 它应该包含大量没有感兴趣对象的图像,以便每个阶段能够生成 1960 个负样本。

为了将来参考,MATLAB 文档中有一个教程

于 2015-03-20T13:48:46.617 回答