我使用检测算法来检测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
那么,有人会帮助我告诉我哪里错了吗?谢谢大家!
答案 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 library或ROCR R package