示例#1
0
def main(_):
    start = time.clock()

    if args.dataset == 'MSRA':
        di = MSRA15Importer(args.data_root, cacheDir='./cache/MSRA/',refineNet=None)
        Seq_all = []
        MID = args.test_sub
        for seq in range(9):     
            if seq == MID:
                Seq_train_ = di.loadSequence('P{}'.format(seq), rng=rng, shuffle=False, docom=False, cube=(175, 175, 175))
            else:
                Seq_train_ = di.loadSequence('P{}'.format(seq), rng=rng, shuffle=False, docom=False, cube=None)
            Seq_all.append(Seq_train_)

        Seq_test_raw = Seq_all.pop(MID)
        Seq_test = Seq_test_raw.data
        Seq_train = [seq_data for seq_ in Seq_all for seq_data in seq_.data]

        train_num = len(Seq_train)
        print ('loaded over with %d train samples'%train_num)       
        imgs = np.asarray([d.dpt.copy() for d in Seq_train], 'float32')
        gt3Dcrops = np.asarray([d.gt3Dcrop for d in Seq_train], dtype='float32')
        M = np.asarray([d.T for d in Seq_train], dtype='float32')
        com2D = np.asarray([d.com2D for d in Seq_train], 'float32')
        cube = np.asarray([d.cube for d in Seq_train], 'float32')
        # uv_crop = np.asarray([d.gtcrop for d in Seq_train], dtype='float32')[:, :, 0:-1]
        del Seq_train

        train_stream = MultiDataStream([imgs, gt3Dcrops, M, com2D, cube])
    else:
        raise ValueError('error dataset %s'%args.dataset)
    
    test_num=len(Seq_test)
    print ('loaded over with %d test samples'%test_num) 
    test_gt3Dcrops = np.asarray([d.gt3Dcrop for d in Seq_test], dtype='float32')
    test_M = np.asarray([d.T for d in Seq_test], dtype='float32')
    # test_com2D = np.asarray([d.com2D for d in Seq_test], 'float32')  
    # test_uv_crop = np.asarray([d.gtcrop for d in Seq_test], dtype='float32')[:, :, 0:-1]
    test_uv = np.asarray([d.gtorig for d in Seq_test], 'float32')[:, :, 0:-1]
    test_com3D = np.asarray([d.com3D for d in Seq_test], 'float32') 
    test_cube = np.asarray([d.cube for d in Seq_test], 'float32')
    test_imgs = np.asarray([d.dpt.copy() for d in Seq_test], 'float32')
    test_data=np.ones_like(test_imgs)
    for it in range(test_num):
        test_data[it]=norm_dm(test_imgs[it], test_com3D[it], test_cube[it])
    del Seq_test    
    test_stream = MultiDataStream([test_data, test_gt3Dcrops, test_M, test_com3D, test_uv, test_cube])
    clip_index = np.int(np.floor(test_num/args.batch_size)) * args.batch_size
    extra_test_data = [test_data[clip_index:], test_gt3Dcrops[clip_index:], test_M[clip_index:], 
                       test_com3D[clip_index:], test_uv[clip_index:], test_cube[clip_index:]]

    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.8)
    tf.set_random_seed(1)
    with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:
        model = Model(sess, args)
        model.train(args, train_stream, test_stream) if args.phase == 'train' \
            else model.test(args, test_stream, extra_test_data=None)
        end = time.clock()
        print ('running time: %f s'%(end-start))
coms_test = np.asarray([d.com for d in Seq_test], 'float32')
gt3Dcrops_test = np.asarray([d.gt3Dcrop for d in Seq_test], dtype='float32')
imgs_test = np.asarray([d.dpt.copy() for d in Seq_test], 'float32')
Ms_test = np.asarray([d.T for d in Seq_test], 'float32')
cubes = tf.placeholder(dtype=tf.float32, shape=(None, 3))

test_data = np.ones_like(imgs_test)
test_label = np.ones_like(gt3Dcrops_test)

print "training data {}".format(imgs_train.shape[0])
print "testing data {}".format(imgs_test.shape[0])
print "testing sub {}".format(MID)
print "done"

for it in range(test_num):
    test_data[it] = norm_dm(imgs_test[it], coms_test[it], cubes_test[it])
    test_label[it] = gt3Dcrops_test[it] / (cubes_test[it][0] / 2.)
test_data = np.expand_dims(test_data, 3)
test_label = np.reshape(test_label, (-1, 21 * 3))

hd_edges = [[0, 1], [1, 2], [2, 3], [3, 4], [0, 5], [5, 6], [6, 7], [7, 8],
            [0, 9], [9, 10], [10, 11], [11, 12], [0, 13], [13, 14], [14, 15],
            [15, 16], [0, 17], [17, 18], [18, 19], [19, 20]]
visual = False
visual_aug = False
if visual == True:
    import matplotlib.pyplot as plt

    for i in range(0, test_num, 10):
        plt.imshow(imgs_test[i], cmap='gray')
        gt3D = gt3Dcrops_test[i] + coms_test[i]
示例#3
0
def main(_):
    start = time.clock()

    if args.dataset == 'ICVL':
        if args.phase == 'train':
            di_train = ICVLImporter(args.data_root,
                                    cacheDir='./cache/ICVL/',
                                    refineNet=None)
            Seq_train = di_train.loadSequence('Training_2014',
                                              rng=rng,
                                              shuffle=False,
                                              docom=False,
                                              cube=None)
            train_num = len(Seq_train.data)
            print('loaded over with %d train samples' % train_num)
            imgs = np.asarray([d.dpt.copy() for d in Seq_train.data],
                              'float32')
            gt3Dcrops = np.asarray([d.gt3Dcrop for d in Seq_train.data],
                                   dtype='float32')
            M = np.asarray([d.T for d in Seq_train.data], dtype='float32')
            com2D = np.asarray([d.com2D for d in Seq_train.data], 'float32')
            cube = np.asarray([d.cube for d in Seq_train.data], 'float32')
            # uv_crop = np.asarray([d.gtcrop for d in Seq_train.data], dtype='float32')[:, :, 0:-1]
            del Seq_train

            train_stream = MultiDataStream([imgs, gt3Dcrops, M, com2D, cube])
    else:
        raise ValueError('error dataset %s' % args.dataset)

    di_test = ICVLImporter(args.data_root,
                           cacheDir='./cache/ICVL/',
                           refineNet=None)
    Seq_test = di_test.loadSequence('Testing_2014',
                                    rng=rng,
                                    shuffle=False,
                                    docom=False,
                                    cube=(250, 250, 250))
    test_num = len(Seq_test.data)
    print('loaded over with %d test samples' % test_num)
    test_gt3Dcrops = np.asarray([d.gt3Dcrop for d in Seq_test.data],
                                dtype='float32')
    test_M = np.asarray([d.T for d in Seq_test.data], dtype='float32')
    # test_com2D = np.asarray([d.com2D for d in Seq_test.data], 'float32')
    # test_uv_crop = np.asarray([d.gtcrop for d in Seq_test.data], dtype='float32')[:, :, 0:-1]
    test_uv = np.asarray([d.gtorig for d in Seq_test.data], 'float32')[:, :,
                                                                       0:-1]
    test_com3D = np.asarray([d.com3D for d in Seq_test.data], 'float32')
    test_cube = np.asarray([d.cube for d in Seq_test.data], 'float32')
    test_imgs = np.asarray([d.dpt.copy() for d in Seq_test.data], 'float32')
    test_data = np.ones_like(test_imgs)
    for it in range(test_num):
        test_data[it] = norm_dm(test_imgs[it], test_com3D[it], test_cube[it])
    del Seq_test
    test_stream = MultiDataStream(
        [test_data, test_gt3Dcrops, test_M, test_com3D, test_uv, test_cube])
    clip_index = np.int(np.floor(test_num / args.batch_size)) * args.batch_size
    extra_test_data = [
        test_data[clip_index:], test_gt3Dcrops[clip_index:],
        test_M[clip_index:], test_com3D[clip_index:], test_uv[clip_index:],
        test_cube[clip_index:]
    ]

    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7)
    tf.set_random_seed(1)
    with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess:
        model = Model(sess, args)
        model.train(args, train_stream, test_stream) if args.phase == 'train' \
            else model.test(args, test_stream, extra_test_data=None)
        end = time.clock()
        print('running time: %f s' % (end - start))
示例#4
0
test_num=len(Seq_test)
cubes_test = np.asarray([d.cube for d in Seq_test], 'float32')
coms_test = np.asarray([d.com for d in Seq_test], 'float32')
Ms_test = np.asarray([d.T for d in Seq_test], 'float32')
gt3Dcrops_test = np.asarray([d.gt3Dcrop for d in Seq_test], dtype='float32')
imgs_test = np.asarray([d.dpt.copy() for d in Seq_test], 'float32')
test_data=np.ones_like(imgs_test)
test_label=np.ones_like(gt3Dcrops_test)

print "testing data {}".format(imgs_test.shape[0])
print "testing sub {}".format(MID)
print "done"


for it in range(test_num):
    test_data[it]=norm_dm(imgs_test[it],coms_test[it],cubes_test[it])
    test_label[it]=gt3Dcrops_test[it]/(cubes_test[it][0]/2.)

test_data=np.expand_dims(test_data,3)
test_label=np.reshape(test_label,(-1,21*3))

hd_edges=[[0,1],[1,2],[2,3],[3,4],
          [0,5],[5,6],[6,7],[7,8],
          [0,9],[9,10],[10,11],[11,12],
          [0,13],[13,14],[14,15],[15,16],
          [0,17],[17,18],[18,19],[19,20]]
visual=True

inputs=tf.placeholder(dtype=tf.float32,shape=(None,96,96,1))
label=tf.placeholder(dtype=tf.float32,shape=(None,21*3))
gt_ht=tf.placeholder(dtype=tf.float32,shape=(None,24,24,21))
                              docom=False,
                              cube=(250, 250, 250))

test_num = len(Seq_train.data)
print test_num
cubes = np.asarray([d.cube for d in Seq_train.data], 'float32')
coms = np.asarray([d.com for d in Seq_train.data], 'float32')
Ms = np.asarray([d.T for d in Seq_train.data], dtype='float32')
gt3Dcrops = np.asarray([d.gt3Dcrop for d in Seq_train.data], dtype='float32')
imgs = np.asarray([d.dpt.copy() for d in Seq_train.data], 'float32')
test_data = np.ones_like(imgs)
test_label = np.ones_like(gt3Dcrops)

for i in range(test_num):

    test_data[i] = norm_dm(imgs[i], coms[i], cubes[i])
    test_label[i] = gt3Dcrops[i] / (cubes[i][0] / 2.)
    #print cubes[i]
    # plt.imshow(test_data[i],cmap='gray')
    # print i
    # plt.pause(0.0001)
    # plt.cla()

test_data = np.expand_dims(test_data, 3)
test_label = np.reshape(test_label, (-1, 42))
# for i in range(test_num):
#     print cubes[i]
inputs = tf.placeholder(dtype=tf.float32, shape=(None, 96, 96, 1))
label = tf.placeholder(dtype=tf.float32, shape=(None, 42))

batch_size = 128