[271336]: / model_test.py

Download this file

50 lines (43 with data), 1.5 kB

 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 01 17:08:10 2017
@author: Shreyas_V
"""
import Brain_pipeline
import Metrics
import numpy as np
#For testing a model
def predict_labels(test_images, model, mu, sigma):
'''
INPUT: a numpy array of 4x240x240 elements and a keras model already trained over various images
OUTPUT: a numpy array of 240x240 label elements
'''
predicted_images = [] # list to maintain predicted labels
for i in test_images:
msk = ((i[0]+i[1]+i[2]+i[3])!=0.)
patches = Brain_pipeline.test_patches(i, mu, sigma)
if patches.shape[0] == 0:
predicted_images.append(np.full((240, 240), 0))
continue
print "running..."
predicted_slice = model.predict_classes(patches)
predicted_slice = Brain_pipeline.reconstruct_labels(msk, predicted_slice)
predicted_images.append(predicted_slice)
return np.array(predicted_images)
def get_metrics(test_images, gt, msk):
DSC = []
acc = []
DSC_core = []
PPV = []
for i, j in zip(test_images, gt):
DSC.append(Metrics.DSC(i, j))
acc.append(Metrics.accuracy(i, j, msk))
DSC_core.append(Metrics.DSC_core_tumor(i, j))
PPV.append(Metrics.PPV(i, j))
return DSC, acc, DSC_core, PPV
def test_slices(test_images, gt, model, mu=0, sigma=1):
pred = predict_labels(test_images, model, mu, sigma)
msk = []
for i in test_images:
msk.append((i[0]+i[1]+i[2]+i[3])!=0.)
return pred, get_metrics(pred, gt, msk)