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

How to plot a ROC curve of a detector generated by TrainCascadeObjectDetector?

在我使用 TrainCascadeObjectDetector function of matlab you can see also here 的图像对象检测项目中,此函数使用 opencv train cascade 并用于训练一组图像(正面和负面):

正面:图像包含感兴趣的对象。

负片:图像不包含感兴趣的对象,但必须包含正片背景以便在训练后更加精确。

这个函数还需要一些参数:

-级联级数。

-真阳性率。

-误报率。

-负样本因子。

-对象训练大小。

-特征型(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最后阶段的整体形象。 如何从前面的阶段获得其他人?

我的图形用户界面:

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