как нарисовать кривую 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/AAAAAAAAAEQg/B5twqcZtlQA/s560/roc.jpg

Итак, кто-нибудь, пожалуйста, помогите мне и скажите, где я был неправ? Спасибо вам всем!


person Flan    schedule 13.12.2012    source источник


Ответы (2)


VLFeat реализует очень простой способ построения кривой ROC в среде Matlab. Пожалуйста, проверьте эту ссылку: http://www.vlfeat.org/overview/plots-rank.html

person fahmifahim    schedule 02.01.2013
comment
Спасибо~! Я решил эту проблему, в основном из-за моего непонимания определения ROC, которое подробно описано в следующем документе: lirias.kuleuven.be/bitstream/123456789/295592/1/ - person Flan; 25.01.2013

Если вы хотите узнать о внутренностях создания графа ROC, вы можете прочитать Отчет Тома Фосетта о графиках ROC или его статья ScienceDirect.

Если вы просто хотите сгенерировать графики, не вдаваясь в технические подробности, вы можете использовать библиотеку Yard phyton или Пакет ROCR R

person Ikram Ullah    schedule 15.08.2013