如何在计算机视觉算法中绘制ROC曲线?

时间:2012-12-13 00:26:37

标签: curve roc

我使用检测算法来检测100个图像中的对象,每个图像包含2个真值,即每个图像包含2个对象。然后我加了噪音,找到了最好的一个。我计算了检测结果和地面实况intArea之间的交叉区域,以及联合区域unionArea = rectA + rectB - intArea。然后我计划使用这些比率绘制如下的ROC曲线:

init TP, FP as 100X1 array.
for threshold = 0..1, step = 0.01
    curIdx = 1;
    for each ratio(i), i = 1..100
        if ratio(i) > threshold then
           TP(curIdx) = TP(curIdx) + 1;
        else
           FP(curIdx) = FP(curIdx) + 1;
     end
end

然后我使用TP / 100作为Y轴值,并使用TP /(TP + FP)作为X轴值来绘制ROC曲线。 但结果并不像预期的那样:(我现在无法发布图片,因为我是新用户-_-) https://lh4.googleusercontent.com/-cuNKyobdV7E/UMkiJmrhTFI/AAAAAAAAEQg/B5twqcZtlQA/s560/roc.jpg

那么,有人会帮助我告诉我哪里错了吗?谢谢大家!

2 个答案:

答案 0 :(得分:1)

VLFeat实现了一种在Matlab环境下绘制ROC曲线的简单方法。请检查此链接:http://www.vlfeat.org/overview/plots-rank.html

答案 1 :(得分:0)

如果您想了解ROC图生成的内部结构,可以阅读Tom Fawcett's report on ROC Graphs或他的内容 ScienceDirect article

如果您只想生成图表而不考虑其技术性,可以使用Yard phyton libraryROCR R package