I’ve trained a model that tries to segment objects of interest in an image. I want evaluate the performance of my model by determining the precision, recall and f-measure of the network output.
I know that precision=tp/(tp+fp) and recall=tp/(tp+fn). I found out that sklearn.metrics has multiple functions to determine these values but I cant seem to effectively use these functions.
At first I had written a script that found the tp, fp and fn values and returned the actual int numbers so for example in one sample I have 2 objects of interest in the ground truth but the network detected 4 objects of interest so these put my values at:
tp = 2, fp = 2 and fn = 0
I cant use these, as sklearn.metrics expects arrays as inputs, so I rewrote my script to give the following arrays:
gt_array = [1, 1]
pred_array = [1, 0, 1, 0]

as two of the predictions were correct while the other two were misclassified objects.
If I give this to the function:
metrics.classification_report(gt_array, pred_array)

and
metrics.precision_recall_fscore_support(gt_array, pred_array,average='binary')

I get the error:
{ValueError}Multi-label binary indicator input with different numbers of labels

which I can see, but I assumed the function will automatically, from the size differences, determine the fn and fp values.
So how do I determine these metrics when I have varying sizes of arrays. In some samples the ground_truth has 10 detections but the network output only shows 5, so in this case how do I incorporate the fn values in the above function?
Thanks