def get_data_examples(source): #while True: indices = range(len(source[0])) if settings.shuffle: random.shuffle(indices) for i in indices: image = source[0][i] image_left = source[0][max(0, i - 1)] image_right = source[0][min(i + 1, len(source[0]) - 1)] pose_x = source[1][0][i] pose_q = source[1][1][i] pose_x_left = source[1][0][max(0, i - 1)] pose_q_left = source[1][1][max(0, i - 1)] pose_x_right = source[1][0][min(i + 1, len(source[0]) - 1)] pose_q_right = source[1][1][min(i + 1, len(source[0]) - 1)] # print type(pose_x) # print pose_x # print pose_q # print pose_x_left m1_2, a1_2 = getError(pose_x, pose_q, pose_x_left, pose_q_left) m2_3, a2_3 = getError(pose_x, pose_q, pose_x_right, pose_q_right) m1_3, a1_3 = getError(pose_x_left, pose_q_left, pose_x_right, pose_q_right) if m1_2 > settings.distanceThreshold or m2_3 > settings.distanceThreshold: continue if a1_2 > settings.angleThreshold or a2_3 > settings.angleThreshold: continue #global samplesCounter # samplesCounter+=1 # print samplesCounter yield np.asarray([image_left, image, image_right]), np.asarray( [pose_x, pose_x_left, pose_x_right]), np.asarray([pose_q, pose_q_left, pose_q_right])
def validate(model): directory = settings.directory datasource = utilities.get_data(settings.testsetpath) datagen = utilities.limited_gen_data(datasource) settings.saveMean = False #model = cnn_lstm.create_cnn_lstm(weightsfile) #sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) #model.compile(optimizer=sgd, loss='categorical_crossentropy') print('\nin validate method!!!!!!') print(type(model)) posxs = [] posqs = [] howmanyaccepted = 0 counter = 0 print('looping on test set!') for ims, xs, qs in datagen: print(len(ims)) howmanyaccepted += 1 print howmanyaccepted inputs = np.zeros([1, 3, 3, 224, 224]) inputs[0, :] = ims out = model.predict(inputs) posx = out[0][0][1] #.mean(0)#xyz posq = out[1][0][1] #.mean(0)#wpqr actualx = xs[1] #.mean(0) actualq = qs[1] #.mean(0) errx, theta = getError(posx, posq, actualx, actualq) posxs.append(errx) posqs.append(theta) print('error should report here!') print 'errx ', errx, ' m and ', 'errq ', theta, ' degrees' return np.median(posxs), np.median(posqs), howmanyaccepted
p6 = float(p6) posexyzwpqr = np.asarray((p0, p1, p2, p3, p4, p5, p6)) img = utilities.ResizeCropImage(imread(directory + fname)).astype( np.float32) img = img.transpose((2, 0, 1)) img[0, :, :] -= meanImage[0, :, :].mean() img[1, :, :] -= meanImage[1, :, :].mean() img[2, :, :] -= meanImage[2, :, :].mean() inputs[0, counter % settings.stepSize, :, :, :] = img labels[counter % settings. stepSize, :] = posexyzwpqr #np.asarray((p0,p1,p2,p3,p4,p5,p6)) counter += 1 if counter % 3 == 0: m1_2, a1_2 = getError(labels[0][:3], labels[0][3:7], labels[1][:3], labels[1][3:7]) m2_3, a2_3 = getError(labels[1][:3], labels[1][3:7], labels[2][:3], labels[2][3:7]) m1_3, a1_3 = getError(labels[0][:3], labels[0][3:7], labels[2][:3], labels[2][3:7]) if m1_2 > settings.distanceThreshold or m2_3 > settings.distanceThreshold: print m1_2, m2_3 continue if a1_2 > settings.angleThreshold or a2_3 > settings.angleThreshold: print a1_2, a2_3 continue howmanyaccepted += 1 out = model.predict(inputs) # print out # print out[0].shape #(1,3,3)
#labels = np.zeros([3, 7]) for ims,xs,qs in datagen: howmanyaccepted+=1 print howmanyaccepted inputs = np.zeros([1, 3, 3, 224, 224]) inputs[0,:]=ims out = model.predict(inputs) # print out # print out[0].shape #(1,3,3) #print out posx = out[0][0][1]#.mean(0)#xyz posq = out[1][0][1]#.mean(0)#wpqr #print "actual:" actualx = xs[1]#.mean(0) actualq = qs[1]#.mean(0) errx, theta = getError(posx,posq,actualx,actualq) posxs.append(errx) posqs.append(theta) print 'errx ', errx, ' m and ', 'errq ', theta, ' degrees' #inputs = np.zeros([1, 3, 3, 224, 224]) #labels = np.zeros([ 3, 7]) print 'median error', np.median(posxs), ' m and ', np.median(posqs), ' degrees' print 'accepted test sequences: ',howmanyaccepted # poses.append((p0,p1,p2,p3,p4,p5,p6)) # images.append(directory+fname) # imgs.append(img) # print len(imgs) # print np.asarray(imgs).shape