示例#1
0
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])
示例#2
0
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
示例#3
0
        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)
示例#4
0
    #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