-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevaluation.py
25 lines (18 loc) · 853 Bytes
/
evaluation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import torch
import segmentation_models_pytorch as smp
def compute_accuracy_loss(model, data_loader, criterion, device="cuda"):
accuracy = 0
loss = 0
with torch.no_grad():
for i, (image, mask) in enumerate(data_loader):
image = image.float().to(device)
mask = mask.float().to(device)
mask_pred = model(image)
loss_batch = criterion(mask_pred,mask)
loss += loss_batch.item()
tp, fp, fn, tn = smp.metrics.get_stats(mask_pred, mask.int(),
threshold=0.5,
mode='binary')
accuracy_batch = smp.metrics.accuracy(tp, fp, fn, tn, reduction="micro").item()
accuracy += accuracy_batch
return accuracy / len(data_loader), loss / len(data_loader)