在我的图像对象检测项目中,我使用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用于最后阶段的整个图像。 如何从前几个阶段获得其他人?
答案 0 :(得分:1)
为参数化分类器定义ROC,其中影响FPR / TPR的每个连续参数都有自己的曲线。您可以通过重复选择参数的不同值,然后通过分类器运行验证集来近似此曲线。