コード例 #1
0
#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
コード例 #2
0
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)