Beispiel #1
0
    def convert(self, sequence):
        """convert ICVL sequence"""
        config = sequence.config
        name = '{}/{}_{}.h5'.format(self.cacheDir, self.datasetName,
                                    sequence.name)

        if os.path.isfile(name):
            print '{} exist, please check if h5 is right!'.format(name)
            return

        Dataset = ICVLDataset([sequence])
        dpt, gt3D = Dataset.imgStackDepthOnly(sequence.name)

        depth = []
        gtorig = []
        gtcrop = []
        T = []
        gt3Dorig = []
        gt3Dcrop = []
        com = []
        fileName = []

        for i in xrange(len(sequence.data)):
            data = sequence.data[i]
            depth.append(data.dpt)
            gtorig.append(data.gtorig)
            gtcrop.append(data.gtcrop)
            T.append(data.T)
            gt3Dorig.append(data.gt3Dorig)
            gt3Dcrop.append(data.gt3Dcrop)
            com.append(data.com)
            fileName.append(
                int(data.fileName[(data.fileName.find('image_') +
                                   6):(data.fileName.find('.png'))]))

        dataset = h5py.File(name, 'w')

        dataset['com'] = np.asarray(com)
        dataset['inds'] = np.asarray(fileName)
        dataset['config'] = config['cube']
        dataset['depth'] = np.asarray(dpt)
        dataset['joint'] = np.asarray(gt3D)
        dataset['gt3Dorig'] = np.asarray(gt3Dorig)
        dataset.close()
    def convert(self, sequence, size_before=None):
        """convert sequence data"""
        config = sequence.config
        if self.name == 'NYU':
            Dataset = NYUDataset([sequence])
        elif self.name == 'ICVL':
            Dataset = ICVLDataset([sequence])
        dpt, gt3D = Dataset.imgStackDepthOnly(sequence.name)

        dataset = {}
        com = []
        fileName = []
        dpt3D = []
        size = len(sequence.data)
        print('size of {} {} dataset is {}'.format(self.name, sequence.name,
                                                   size))
        for i in xrange(len(sequence.data)):
            data = sequence.data[i]
            com.append(data.com)
            dpt3D.append(data.dpt3D)
            if self.name == 'NYU':
                fileName.append(int(data.fileName[-11:-4]))
            elif self.name == 'ICVL' and size_before is not None:
                fileName.append(int(data.fileName[(data.fileName.find('image_') + 6): \
                    (data.fileName.find('.png'))]) + size_before)
            else:
                fileName.append(int(data.fileName[(data.fileName.find('image_') + 6): \
                    (data.fileName.find('.png'))]))
        dataset['depth'] = np.asarray(dpt)
        dataset['dpt3D'] = np.asarray(dpt3D)
        dataset['com'] = np.asarray(com)
        dataset['inds'] = np.asarray(fileName)
        dataset['config'] = np.asarray(config['cube']).reshape(
            1, self.dim).repeat(size, axis=0)
        dataset['joint'] = np.asarray(gt3D)

        return dataset
Beispiel #3
0
    print("create data")
    aug_modes = ['com', 'rot', 'none']  # 'sc',

    di = ICVLImporter('../data/ICVL/')
    Seq1_1 = di.loadSequence('train', ['0'], shuffle=True, rng=rng, docom=False)
    Seq1_1 = Seq1_1._replace(name='train_gt')
    Seq1_2 = di.loadSequence('train', ['0'], shuffle=True, rng=rng, docom=True)
    Seq1_2 = Seq1_2._replace(name='train_com')
    trainSeqs = [Seq1_1, Seq1_2]

    Seq2 = di.loadSequence('test_seq_1', docom=True)
    testSeqs = [Seq2]

    # create training data
    trainDataSet = ICVLDataset(trainSeqs)
    nSamp = numpy.sum([len(s.data) for s in trainSeqs])
    d1, g1 = trainDataSet.imgStackDepthOnly(trainSeqs[0].name)
    train_data = numpy.ones((nSamp, d1.shape[1], d1.shape[2], d1.shape[3]), dtype='float32')
    train_gt3D = numpy.ones((nSamp, g1.shape[1], g1.shape[2]), dtype='float32')
    train_data_com = numpy.ones((nSamp, 3), dtype='float32')
    train_data_M = numpy.ones((nSamp, 3, 3), dtype='float32')
    train_data_cube = numpy.ones((nSamp, 3), dtype='float32')
    del d1, g1
    gc.collect()
    gc.collect()
    gc.collect()
    oldIdx = 0
    for seq in trainSeqs:
        d, g = trainDataSet.imgStackDepthOnly(seq.name)
        train_data[oldIdx:oldIdx+d.shape[0]] = d
    floatX = theano.config.floatX  # @UndefinedVariable

    rng = numpy.random.RandomState(23455)

    print("create data")

    di = ICVLImporter('../data/ICVL/')
    Seq1 = di.loadSequence('train', ['0'], shuffle=True, rng=rng)
    trainSeqs = [Seq1]

    Seq2 = di.loadSequence('test_seq_1')
    testSeqs = [Seq2]

    # create training data
    trainDataSet = ICVLDataset(trainSeqs)
    train_data, train_gt3D = trainDataSet.imgStackDepthOnly('train')

    mb = (train_data.nbytes) / (1024 * 1024)
    print("data size: {}Mb".format(mb))

    valDataSet = ICVLDataset(testSeqs)
    val_data, val_gt3D = valDataSet.imgStackDepthOnly('test_seq_1')

    testDataSet = ICVLDataset(testSeqs)
    test_data, test_gt3D = testDataSet.imgStackDepthOnly('test_seq_1')

    print train_gt3D.max(), test_gt3D.max(), train_gt3D.min(), test_gt3D.min()
    print train_data.max(), test_data.max(), train_data.min(), test_data.min()

    imgSizeW = train_data.shape[3]