I am doing a binary segmentation of brain tumors from CT scan images. Following is the code I am using for precision and recall
def get_precision(PR,GT,threshold=0.5):
PR = PR > threshold
GT = GT == torch.max(GT)
TP = ((PR==1)&(GT==1))
FP = ((PR==1)&(GT==0))
Precision = float(torch.sum(TP))/(float(torch.sum(TP)+torch.sum(FP)) + 1e-6)
return Precision
def get_recall(PR,GT,threshold=0.5):
PR = PR > threshold
GT = GT == torch.max(GT)
TP = ((PR==1)&(GT==1))
FN = ((PR==0)&(GT==0))
Recall = float(torch.sum(TP))/(float(torch.sum(TP)+torch.sum(FN)) + 1e-6)
return Recall
PR is the predicted probabilities of the model from sigmoid layer and GT is the ground truth images divided by 255.Is this the right implementation of the metrics for binary segmentation as I am getting both values in high 90’s. Also can I follow same approach for calculating mIOU.