コード例 #1
0
def _mask_dataset():
    # Load model and compile function
    with open('../cache/foreground_model.pkl', 'rb') as f:
        model, threshold = cPickle.load(f)

    x = T.matrix('x')
    y = model.get_output(x)
    output_func = theano.function(inputs=[x], outputs=(y >= threshold))

    # Load data
    image_data = DataLoader('../data/cuhk_small.mat', verbose=True)

    # Pre-processing
    print "Pre-processing ..."

    images = image_data.get_all_images()
    images = [_input_preproc(image) for image in images]
    images = imageproc.images2mat(images).astype(theano.config.floatX)

    # Compute masks
    print "Computing masks ..."

    masks = output_func(images)

    # Save masks
    print "Saving data ..."

    mask_data = DataSaver()

    cur_index = 0
    for gid in xrange(image_data.get_n_groups()):
        m, v = image_data.get_n_pedes_views(gid)
        mask_data.add_group(m, v)

        for pid in xrange(m):
            n_images = image_data.get_n_images(gid, pid)

            for vid, n in enumerate(n_images):
                view_masks = [0] * n
                for k in xrange(n):
                    mask = masks[cur_index, :]
                    mask = mask.reshape(160, 80, 1)
                    orig_image = image_data.get_image(gid, pid, vid, k)
                    orig_image = imageproc.imresize(orig_image, (160, 80, 3))
                    view_masks[k] = (mask * orig_image).astype(numpy.uint8)
                    cur_index += 1

                mask_data.set_images(gid, pid, vid, view_masks)

    mask_data.save('../data/cuhk_small_masked.mat')
コード例 #2
0
ファイル: mask_foreground.py プロジェクト: Cysu/Person-Reid
def _mask_dataset():
    # Load model and compile function
    with open('../cache/foreground_model.pkl', 'rb') as f:
        model, threshold = cPickle.load(f)

    x = T.matrix('x')
    y = model.get_output(x)
    output_func = theano.function(inputs=[x], outputs=(y >= threshold))

    # Load data
    image_data = DataLoader('../data/cuhk_small.mat', verbose=True)

    # Pre-processing
    print "Pre-processing ..."

    images = image_data.get_all_images()
    images = [_input_preproc(image) for image in images]
    images = imageproc.images2mat(images).astype(theano.config.floatX)

    # Compute masks
    print "Computing masks ..."

    masks = output_func(images)

    # Save masks
    print "Saving data ..."

    mask_data = DataSaver()

    cur_index = 0
    for gid in xrange(image_data.get_n_groups()):
        m, v = image_data.get_n_pedes_views(gid)
        mask_data.add_group(m, v)

        for pid in xrange(m):
            n_images = image_data.get_n_images(gid, pid)

            for vid, n in enumerate(n_images):
                view_masks = [0] * n
                for k in xrange(n):
                    mask = masks[cur_index, :]
                    mask = mask.reshape(160, 80, 1)
                    orig_image = image_data.get_image(gid, pid, vid, k)
                    orig_image = imageproc.imresize(orig_image, (160, 80, 3))
                    view_masks[k] = (mask * orig_image).astype(numpy.uint8)
                    cur_index += 1

                mask_data.set_images(gid, pid, vid, view_masks)

    mask_data.save('../data/cuhk_small_masked.mat')
コード例 #3
0
ファイル: reconstruct.py プロジェクト: Cysu/Person-Reid
def _prepare_data(load_from_cache=False, save_to_cache=False):
    if load_from_cache:
        with open(_cached_datasets, 'rb') as f:
            views_data, datasets = cPickle.load(f)
    else:
        image_data = DataLoader('../data/cuhk_small_masked.mat', verbose=True)

        # Prepare the view-first order data representation
        print "Preparing the view-first order data ..."

        n_pedes, n_views = [], []
        for gid in xrange(image_data.get_n_groups()):
            m, v = image_data.get_n_pedes_views(gid)
            n_pedes.append(m)
            n_views.append(v)

        assert min(n_views) == max(n_views), \
            "The number of views in each group should be equal"

        v = n_views[0]

        views_data = [[] for __ in xrange(v)]
        for gid in xrange(image_data.get_n_groups()):
            bias = sum(n_pedes[0:gid])
            group_data = data_manager.view_repr(image_data.get_pedes(gid))

            for vid in xrange(v):
                view_data = group_data[vid]
                view_data = [(pid+bias, image) for pid, image in view_data]
                views_data[vid].extend(view_data)

        # Prepare the datasets
        print "Prepare the datasets ..."

        X, Y = [], []
        for gid in xrange(image_data.get_n_groups()):
            m, v = image_data.get_n_pedes_views(gid)

            for pid in xrange(m):
                n_images = image_data.get_n_images(gid, pid)

                for vi in xrange(v):
                    for vj in xrange(vi+1, v):
                        for i in xrange(n_images[vi]):
                            for j in xrange(n_images[vj]):
                                X.append(_preproc(
                                    image_data.get_image(gid, pid, vi, i)))
                                Y.append(_preproc(
                                    image_data.get_image(gid, pid, vj, j)))

        X = imageproc.images2mat(X).astype(theano.config.floatX)
        Y = imageproc.images2mat(Y).astype(theano.config.floatX)

        datasets = Datasets(X, Y)
        datasets.split(train_ratio=0.8, valid_ratio=0.1)

    if save_to_cache:
        with open(_cached_datasets, 'wb') as f:
            cPickle.dump((views_data, datasets), f,
                protocol=cPickle.HIGHEST_PROTOCOL)

    return (views_data, datasets)
コード例 #4
0
ファイル: reconstruct.py プロジェクト: lxy1993/Person-Reid
def _prepare_data(load_from_cache=False, save_to_cache=False):
    if load_from_cache:
        with open(_cached_datasets, 'rb') as f:
            views_data, datasets = cPickle.load(f)
    else:
        image_data = DataLoader('../data/cuhk_small_masked.mat', verbose=True)

        # Prepare the view-first order data representation
        print "Preparing the view-first order data ..."

        n_pedes, n_views = [], []
        for gid in xrange(image_data.get_n_groups()):
            m, v = image_data.get_n_pedes_views(gid)
            n_pedes.append(m)
            n_views.append(v)

        assert min(n_views) == max(n_views), \
            "The number of views in each group should be equal"

        v = n_views[0]

        views_data = [[] for __ in xrange(v)]
        for gid in xrange(image_data.get_n_groups()):
            bias = sum(n_pedes[0:gid])
            group_data = data_manager.view_repr(image_data.get_pedes(gid))

            for vid in xrange(v):
                view_data = group_data[vid]
                view_data = [(pid + bias, image) for pid, image in view_data]
                views_data[vid].extend(view_data)

        # Prepare the datasets
        print "Prepare the datasets ..."

        X, Y = [], []
        for gid in xrange(image_data.get_n_groups()):
            m, v = image_data.get_n_pedes_views(gid)

            for pid in xrange(m):
                n_images = image_data.get_n_images(gid, pid)

                for vi in xrange(v):
                    for vj in xrange(vi + 1, v):
                        for i in xrange(n_images[vi]):
                            for j in xrange(n_images[vj]):
                                X.append(
                                    _preproc(
                                        image_data.get_image(gid, pid, vi, i)))
                                Y.append(
                                    _preproc(
                                        image_data.get_image(gid, pid, vj, j)))

        X = imageproc.images2mat(X).astype(theano.config.floatX)
        Y = imageproc.images2mat(Y).astype(theano.config.floatX)

        datasets = Datasets(X, Y)
        datasets.split(train_ratio=0.8, valid_ratio=0.1)

    if save_to_cache:
        with open(_cached_datasets, 'wb') as f:
            cPickle.dump((views_data, datasets),
                         f,
                         protocol=cPickle.HIGHEST_PROTOCOL)

    return (views_data, datasets)