在我的图像对象检测项目中,我使用了matlab的TrainCascadeObjectDetector函数,您还可以看到here,该函数使用opencv train层叠,用于训练一组图像(正负):

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

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

此函数还需要一些参数:

-级联数。

-正确率。

-false警报率。

-负样本因子。

对象训练大小。

特征类型(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:
matlab - 如何绘制TrainCascadeObjectDetector生成的检测器的ROC曲线?-LMLPHP

最佳答案

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

10-06 01:04