如何绘制TrainCascadeObjectDetector生成的探测器的ROC曲线?

时间:2016-05-25 14:35:53

标签: matlab opencv image-processing cascade roc

在我的图像对象检测项目中,我使用matlab的TrainCascadeObjectDetector函数,你也可以看到here,这个函数使用opencv train cascade,用于训练一组图像(正面和负面) :

肯定:图像包含感兴趣的对象。

否定:图像不包含感兴趣的对象,但必须包含正面背景,以便在训练后获得更高的精确度。

此功能还需要一些参数:

- 级联阶段的数量。

-True Positive Rate。

- 误报率。

- 负样本因素。

- 对象训练大小。

- 特征类型(HOG,LBP,Haar)。

我使用HOG(面向渐变的直方图),此函数的结果是.xml文件:

trainCascadeObjectDetector(outputXMLFilename,positiveInstances,negativeImages)

我使用输出来定位图像中感兴趣的对象:

detector = vision.CascadeObjectDetector(XMLFILE)

所以我的结果是一个探测器,我用它来绘制边界框:

BBOX = step(detector)

我想评估结果的表现,我发现可以绘制一条ROC曲线,here我的问题。 ROC是真正的正率VS误差率曲线,因此它是TPR和FPR的需求值。 全球TPR和FPR正在以这种方式计算:

TruePositiveRate^numberOfStages    and FalseAlarmRate^numberOfStages

但它们只是2个值,而不是绘制曲线的无法识别。 我还尝试通过这个topic进行二进制比较而得到TPR和FPR,我通过比较我的地面实况图像和结果图像并采用了最大FPR和TPR,现在我有1个TPR和1个FPR用于最后阶段的整个图像。 如何从前几个阶段获得其他人?

我的GUI: enter image description here

1 个答案:

答案 0 :(得分:1)

为参数化分类器定义ROC,其中影响FPR / TPR的每个连续参数都有自己的曲线。您可以通过重复选择参数的不同值,然后通过分类器运行验证集来近似此曲线。