In [1]:
%load_ext autoreload
%autoreload 2
import cPickle as pickle
import os; import sys; sys.path.append('..')
import gp
import gp.nets as nets
from nolearn.lasagne.visualize import plot_loss
from nolearn.lasagne.visualize import plot_conv_weights
from nolearn.lasagne.visualize import plot_conv_activity
from nolearn.lasagne.visualize import plot_occlusion
from sklearn.metrics import classification_report, accuracy_score, roc_curve, auc, precision_recall_fscore_support, f1_score, precision_recall_curve, average_precision_score, zero_one_loss
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
%matplotlib inline
In [2]:
import nolearn.lasagne.visualize
In [3]:
NETS = []
NETS.append('../nets/IP_FULL.p') # image + prob
NETS.append('../nets/IPLB_FULL.p') # image + large border
NETS.append('../nets/IPM_FULL.p') # image + prob + binary
NETS.append('../nets/IPMB_FULL.p') # image + prob + binary + border
NETS.append('../nets/IPMLB_FULL.p') # image + prob + binary + large border
network_path = NETS[-1]
with open(network_path, 'rb') as f:
net = pickle.load(f)
In [4]:
X_test, y_test = gp.Patch.load_rgba_test_only('ipmlb')
In [14]:
len(X_test)
Out[14]:
In [5]:
test_prediction = net.predict(X_test)
test_prediction_prob = net.predict_proba(X_test)
print
print 'Precision/Recall:'
print classification_report(y_test, test_prediction)
In [6]:
test_acc = net.score(X_test, y_test)
acc_score = accuracy_score(y_test, test_prediction)
print 'Test Accuracy:', test_acc
print 'Accuracy Score:', acc_score
In [7]:
plot_loss(net)
Out[7]:
In [8]:
# ROC/AUC
fpr, tpr, _ = roc_curve(y_test, test_prediction_prob[:,1])
roc_auc = auc(fpr, tpr)
data = {}
data['CNN'] = (fpr, tpr, roc_auc)
gp.Legacy.plot_roc(data)
In [5]:
net.uuid = 'IPMLB'
In [6]:
gp.Stats.run_dojo_xp(net)
In [8]:
gp.Stats.run_dojo_xp(net)
In [13]:
gp.Stats.run_cylinder_xp(net)
In [ ]:
In [ ]:
In [36]:
# load dojo data
input_image, input_prob, input_gold, input_rhoana, dojo_bbox = gp.Legacy.read_dojo_data()
In [40]:
input_image[0].max()
Out[40]:
In [38]:
imshow(input_prob[2], cmap='gray')
Out[38]:
In [41]:
imshow(input_rhoana[0])
Out[41]:
In [53]:
import numpy as np
def seg_to_color(slice):
colors = np.zeros(slice.shape+(3,),dtype=np.uint8)
colors[:,:,0] = np.mod(107*slice[:,:],700).astype(np.uint8)
colors[:,:,1] = np.mod(509*slice[:,:],900).astype(np.uint8)
colors[:,:,2] = np.mod(200*slice[:,:],777).astype(np.uint8)
return colors
i_r = input_image[0]
rrr = np.zeros((i_r.shape[0], i_r.shape[1], 3), dtype=np.uint8)
for j in range(rrr.shape[0]):
for i in range(rrr.shape[1]):
rrr[j,i] = (i_r[j,i], i_r[j,i], i_r[j,i])
rrr[input_prob[0] > 220 ] = (0,255,0)
In [57]:
plt.figure()
imshow(rrr)
Out[57]:
In [ ]:
In [55]:
imshow(input_gold[0], cmap='gray')
Out[55]:
In [56]:
imshow(input_rhoana[0], cmap='gray')
Out[56]:
In [62]:
original_mean_VI, original_median_VI, original_VI_s = gp.Legacy.VI(input_gold, input_rhoana)
original_adapted_rand = gp.metrics.adapted_rand(input_rhoana, input_gold)
In [64]:
merge_errors = gp.Legacy.get_top5_merge_errors(net, input_image, input_prob, input_rhoana)
In [66]:
first_rand = gp.metrics.adapted_rand(input_rhoana[0], input_gold[0])
In [78]:
net.uuid = 'IPMLB'
In [80]:
M = gp.Legacy.create_bigM_without_mask(net, input_image[0:1], input_prob[0:1], input_rhoana[0:1], verbose=False)
In [85]:
newM, new_rhoana, fixes, new_vi_s = gp.Legacy.splits_global_from_M_automatic(net, M, input_image[0:1], input_prob[0:1],
input_rhoana[0:1], input_gold[0:1], sureness_threshold=.95)
In [87]:
fixes
Out[87]:
In [88]:
gp.metrics.adapted_rand(new_rhoana[0], input_gold[0])
Out[88]:
In [89]:
first_rand
Out[89]:
In [ ]: