在我的图像对象检测项目中,我使用了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:
最佳答案
为参数化分类器定义了ROC,其中影响FPR / TPR的每个连续参数都有其自己的曲线。您可以通过重复选择不同的参数值,然后通过分类器运行验证集来近似此曲线。