#modelweight = './model/alexnet/snapshot/_iter_6000.caffemodel' #net = caffe.Net(modeldef, modelweight) net = caffe.Net(modeldef) net.forward() #Testing one image img = net.blobs['data'].data.transpose((2,3,1,0)).astype(np.uint8)#[:,:,:,0]#224 x 224 x 3 x batch seg = net.blobs['label'].data.transpose((2,3,1,0)).astype(np.uint8) seg_full = np.zeros((seg.shape[0], seg.shape[1], seg.shape[3])).astype(np.uint8) batch = img.shape[-1] n=random.randint(0,batch-1) for n_batch in range(batch): for dim in range(1,seg.shape[2]+1): seg_full[:,:,n_batch] += seg[:,:,dim-1, n_batch]*dim imshow(img[:,:,:,n]+cmap(seg_full[:,:,n]), '_data + seg-label') #Prediction pred = net.blobs['seg-score'].data.transpose((2,3,1,0)).astype(np.uint8) seg_pred = (pred>0)*1.0 seg_reshape = seg.reshape(-1) pred_reshape = seg_pred.reshape(-1) accuracy_0 = 0.0 accuracy_1 = 0.0 #accuracy_all = 0.0 for value in range(seg_reshape.shape[0]): if seg_reshape[value]==pred_reshape[value]: # accuracy_all += 1 if seg_reshape[value] == 0: accuracy_0 += 1 else: accuracy_1 +=1
import pickle import os import cv2 as cv import numpy as np import sys import random sys.path.insert(0, 'Drawing') from Drawing import imshow import Drawing as draw out_folder = 'data' sub_data = ['images', 'segs'] root = ['full', 'parted'] vgg_size = cfg.vgg_size if __name__ == '__main__': mode = sys.argv[1] if not mode == 'Training' or not mode == 'Validation' or not mode == 'Test': ValueError('Please insert a valid mode between "Training", "Validation" or "Test". Case sensitive.') lines = open(os.path.join(out_folder, mode+'.txt')).readlines() randi = random.randint(0, len(lines)-1) line = lines[randi][:-1].split(' ') img = cv.imread(line[0]) seg = cv.imread(line[1]) for i in range(2, len(line)): seg += (cv.imread(line[i])*i) seg = draw.cmap(seg) imshow(img+seg,0)