Is there any way to get IoU values from Mask R-CNN per prediction?

Hi All,

I would be very grateful if someone could point me in the right direction on this, because I’m having trouble understanding how I can achieve what I need.

I’m using a slightly modified version of this notebook:

I have modified it to use my own dataset. Another modification I have made is to this block of code :

# pick one image from the test set
img, _ = dataset_test[0]
# put the model in evaluation mode
model.eval()
with torch.no_grad():
    prediction = model([img.to(device)])

To:

### To iterate through dataset_test:
#put model in prediction mode

model.eval()

#function to iterate through test set and return a list of predictions

def prediction_iterator():
  predictions = []
  for img, _ in dataset_test:
    with torch.no_grad():
      prediction = model([img.to(device)])
    predictions.append(prediction)
  return predictions

prediction_list = prediction_iterator()

This change is just so that I can make a series of predictions on the test set. I’m not totally sure if this is the best way to go about this, but it seems to work as far as I can see.

My issue is now that I want to get the IoUs for each prediction, as I want to compute True/False positive, True/False negative confusion matrices, Precision and Recall, F1, etc.

I realise the evaluate function spits out average precision and recall, but as I say I want to do a bit more than that.

I did use torch.save and then torch.load to save out the predictions (prediction_list) as a .csv, but the result was just that all tensors were listed as a string in one column. I considered using RegEx to split this string up, but I would really prefer if I could get it in the right format to begin with so I can scale this easily.

Apologies if I’m not explaining very well or if this is an obvious problem - if there are any more details you need, please let me know.