顯著性目標檢測模型評價指標(二)——PR曲線

顯著性目標檢測模型評價指標 之 PR曲線原理與實現代碼

目錄


一、PR曲線原理

在顯著目標提取中(關於視覺顯著性的簡要介紹點此處鏈接),PR曲線是用來評估模型性能的重要指標之一,PR曲線中的P(Precision)和R(Recall)分佈意爲“查準率”和“查全率”。以“查準率”爲縱座標,“查全率”爲橫座標所做的曲線即爲PR曲線(如下圖,來自南京大學周志華教授主編的《機器學習》第二章,p31)。
PR曲線示意圖

計算方法

我們將模型所提的顯著性目標圖譜S進行二值化得到M,然後通過下面公式逐像素對比M與Ground-truth來計算Precision值與Recall值[1]:
這裏寫圖片描述
如下圖所示,模型輸出的顯著性圖片與Ground-truth圖在一般情況下都不會完全相同,即我們模型所提取出的顯著性圖mask出了正確被分類的目標(TP)與背景(TN)外,會將一部分本應該是背景的區域劃到目標區域(FP),將一部分本應該是目標的區域劃爲背景區域(FN)。
PR曲線示意圖
通過統計我們獲得TP、TN、FP、FN的數目,然後利用下式來計算Precision值與Recall值。
這裏寫圖片描述

閾值選取

將輸出圖片S進行二值化時,閾值選擇爲從0到255,每取一個閾值,即可對所有輸出圖S算得一組相對應的Precision值與Recall值。最後將所有圖像在該閾值下的Precision值與Recall值分別求平均,最後將會得到256對P,R值,以Recall爲橫座標,Precision爲縱座標繪製曲線圖即可得到precision-recall (PR)曲線。

二、Matlab代碼

代碼塊語法遵循標準markdown代碼,例如:

function PRcurveHanle
%本程序的功能是對顯著性特徵提取的結果繪製PR曲線。
%by [email protected]
clc
clear
close all
%讀取數據庫
imnames=dir(path_output);  
imnames2=dir(path_target);  
num=length(imnames);
Precision=zeros(256,num);
Recall=zeros(256,num);
TP=zeros(256,num);
FP=zeros(256,num);
FN=zeros(256,num);
MAES=zeros(num,1);
for j=1:num
    Target=imread(imnames2(j).name);%讀圖
    Output=imread(imnames(j).name);
    target=rgb2gray(Target);        %二值化ground-truth
    target0=(target)>0;
    for i=0:255
        %以i爲閾值二值化Output
        output0=(Output)>i;
        output1=output0*2;
        TFNP=zeros(256,256);
        x=1;
        TFNP(:,:)=output1(:,:,x)-target0;
        TP(i+1,j)=length(find(TFNP==1));
        FP(i+1,j)=length(find(TFNP==2));
        FN(i+1,j)=length(find(TFNP==-1));
        Precision(i+1,j)=TP(i+1,j)/(TP(i+1,j)+FP(i+1,j));
        Recall(i+1,j)=TP(i+1,j)/(TP(i+1,j)+FN(i+1,j));
    end
    j
end
P=mean(Precision,2);
R=mean(Recall,2);
figure,plot(R,P)  

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

參考文獻

[1]: A. Borji, M.-M. Cheng, H. Jiang, and J. Li. Salient object detection: A benchmark. IEEE TIP, 24(12):5706–5722, 2015.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章