Beispiel #1
0
        tokens = line.strip().split(',')
        url = tokens[0]
        im_name = get_fpath_filename(url)

        im_path = join(im_dir, im_name)
        url = url.replace('{','').replace('}','')
        tokens[0] = url

        # Can also use quality_utils to get some blurriness metrics
        cv_im = cv2.imread(im_path, 0)
        if cv_im is None:
            continue
        blurriness = get_blurriness(get_laplacian(cv_im))


        x = load_and_preprocess_image(im_path, x_size, y_size, True)
        if x is False:
            continue

        base_features = base_model.predict(x)
        menu_preds = menu_model.predict(base_features)
        menu_pred, menu_prob = _decode_predictions(menu_preds, mapping)[0]

        tokens.extend([blurriness, menu_pred, str(menu_prob)])

        output = ','.join([str(x) for x in tokens]) + '\n'
        outf.write(output)

        num_images += 1

Beispiel #2
0
def create_pairs_helper(pos_pairs, all_image_data, image_dir, year, month,
                        limit):

    pairs = []

    start_time = time.time()

    total_count = 0
    batch_size = 1600
    # limit = 35200

    output_dir = '/tigress/dchouren/thesis/resources/pairs'
    output_file = join(output_dir,
                       year + '_' + month + '_' + str(limit) + '.h5')

    print(len(pos_pairs))

    with h5py.File(output_file, 'w') as f:

        maxshape = (None, ) + (2, 3, 224, 224)
        dset = f.create_dataset('pairs',
                                shape=(batch_size, 2, 3, 224, 224),
                                maxshape=maxshape,
                                compression='gzip')
        row_count = 0

        for i, (base_data, pos_data) in enumerate(pos_pairs):
            base_filename = base_data[2].split('/')[-1]
            if base_filename.endswith('zz=1'):
                continue
            base_image = vutils.load_and_preprocess_image(join(
                image_dir, base_filename),
                                                          dataset='imagenet',
                                                          x_size=224,
                                                          y_size=224,
                                                          preprocess=False,
                                                          rescale=True)
            if base_image is None:
                continue

            pos_filename = pos_data[2].split('/')[-1]
            if pos_filename.endswith('zz=1'):
                continue
            pos_image = vutils.load_and_preprocess_image(join(
                image_dir, pos_filename),
                                                         dataset='imagenet',
                                                         x_size=224,
                                                         y_size=224,
                                                         preprocess=False,
                                                         rescale=True)
            if pos_image is None:
                continue

            possible_neg_image = all_image_data[np.random.choice(
                all_image_data.shape[0])]

            # ipdb.set_trace()
            distance = meter_distance(possible_neg_image[:2], base_data[:2])
            # print('finding negative')
            i = 0
            while distance < 2000:
                # print(distance)
                possible_neg_image = all_image_data[np.random.choice(
                    all_image_data.shape[0])]
                distance = meter_distance(possible_neg_image[:2],
                                          base_data[:2])
                i += 1

            neg_filename = possible_neg_image[2].split('/')[-1]
            if neg_filename.endswith('zz=1'):
                continue
            neg_image = vutils.load_and_preprocess_image(join(
                image_dir, neg_filename),
                                                         dataset='imagenet',
                                                         x_size=224,
                                                         y_size=224,
                                                         preprocess=False,
                                                         rescale=True)
            if neg_image is None:
                continue

            pos_pair = [base_image, pos_image]
            neg_pair = [base_image, neg_image]

            # ipdb.set_trace()
            pairs += [pos_pair]
            pairs += [neg_pair]

            # print('{}: {}'.format(len(pairs), int(time.time() - start_time)))

            if len(pairs) == batch_size:
                # print('here')
                # ipdb.set_trace()
                pairs = np.squeeze(np.asarray(pairs))
                # print('squeezed pairs')
                dset[row_count:] = pairs
                # print('assigned dset')
                row_count += pairs.shape[0]
                dset.resize(row_count + pairs.shape[0], axis=0)
                # print('resized dset')

                # np.savez_compressed(open(output_file, 'wb'), pairs)
                labels = []
                pairs = []

                total_count += batch_size
                print(dset.shape)

            if total_count >= limit:
                # print('ending')
                dset.resize(limit, axis=0)
                print(dset.shape)
                break

        if dset.shape[0] == limit:
            f.close()
            print('{} | Saved to {}'.format(int(time.time() - start_time),
                                            output_file))
            return True
        else:
            del dset
            del f
            print('False')
            return False
Beispiel #3
0
import vision_utils as vutils


image_path = '/Users/daway/Documents/Princeton/Thesis2017/4392232665_90c251d33c.jpg'
x = vutils.load_and_preprocess_image(image_path, preprocess=False, rescale=True)

print(x.shape)
import vision_utils as vutils

import time

im_path = '/scratch/network/dchouren/images/2012/01/8331121208_daaf6fa41c.jpg'
start_time = time.time()
im = vutils.load_and_preprocess_image(im_path,
                                      dataset='imagenet',
                                      x_size=224,
                                      y_size=224,
                                      preprocess=False,
                                      rescale=True)
Beispiel #5
0
def load_pairs(same_pairs, diff_pairs, image_dir, output_file):

    pairs = []
    labels = []

    total_count = 0
    batch_size = 1600

    start_time = time.time()
    with h5py.File(output_file, 'w') as f:
        maxshape = (None, ) + (2, 3, 224, 224)
        dset = f.create_dataset('pairs',
                                shape=(batch_size, 2, 3, 224, 224),
                                maxshape=maxshape)
        labels_dset = f.create_dataset('labels',
                                       shape=(batch_size, 1),
                                       maxshape=(None, 1))

        row_count = 0

        # ipdb.set_trace()
        data = np.empty((same_pairs.shape[0] * 2, same_pairs.shape[1]),
                        dtype=same_pairs.dtype)
        # ipdb.set_trace()
        data[0::2] = same_pairs
        data[1::2] = diff_pairs
        # ipdb.set_trace()
        for i, (base_data, pair_data) in enumerate(data):
            # ipdb.set_trace()
            base_filename = base_data[2].split('/')[-1]
            year, month = base_data[3].split('-')[0], base_data[3].split(
                '-')[1]
            if base_filename.endswith('zz=1'):
                continue
            base_image = vutils.load_and_preprocess_image(join(
                image_dir, year, month, month, base_filename),
                                                          dataset='imagenet',
                                                          x_size=224,
                                                          y_size=224,
                                                          preprocess=False,
                                                          rescale=True)
            if base_image is None:
                # print(i)
                continue

            pair_filename = pair_data[2].split('/')[-1]
            year, month = pair_data[3].split('-')[0], pair_data[3].split(
                '-')[1]
            if pair_filename.endswith('zz=1'):
                continue
            pair_image = vutils.load_and_preprocess_image(join(
                image_dir, year, month, month, pair_filename),
                                                          dataset='imagenet',
                                                          x_size=224,
                                                          y_size=224,
                                                          preprocess=False,
                                                          rescale=True)
            if pair_image is None:
                # print(i)
                continue

            pair = [base_image, pair_image]
            if i % 2 == 0:
                label = 1
            else:
                label = 0

            pairs += [pair]
            labels += [label]

            if len(pairs) == batch_size:
                pairs = np.squeeze(np.asarray(pairs))
                dset[row_count:] = pairs
                labels = np.array(labels)
                labels_dset[row_count:] = np.reshape(labels,
                                                     (labels.shape[0], 1))
                row_count += pairs.shape[0]
                dset.resize(row_count + pairs.shape[0], axis=0)
                labels_dset.resize(row_count + pairs.shape[0], axis=0)

                labels = []
                pairs = []

                total_count += batch_size

        if dset.shape[0] >= data.shape[0]:
            dset.resize(data.shape[0], axis=0)
    print('{} | Saved to {}'.format(int(time.time() - start_time),
                                    output_file))
Beispiel #6
0
def load_middlebury(match_pairs, image_dir):

    middlebury_pairs = []
    middlebury_dir = '/tigress/dchouren/thesis/resources/stereo/images'
    filenames = sorted(os.listdir(middlebury_dir))
    quads = list(
        zip(filenames[::4], filenames[1::4], filenames[2::4], filenames[3::4]))

    all_pairs = []
    stereo_pairs = []
    for quad in quads:
        pairs = [(quad[0], quad[1]), (quad[0], quad[2]), (quad[0], quad[3])]
        all_pairs.extend(pairs)
        stereo_pairs.extend([(quad[0], quad[1])])

    all_middlebury_images = []
    all_stereo_images = []
    for base_file, pos_file in all_pairs:
        base_image = vutils.load_and_preprocess_image(join(
            middlebury_dir, base_file),
                                                      dataset='imagenet',
                                                      x_size=224,
                                                      y_size=224,
                                                      preprocess=False,
                                                      rescale=True)
        pos_image = vutils.load_and_preprocess_image(join(
            middlebury_dir, pos_file),
                                                     dataset='imagenet',
                                                     x_size=224,
                                                     y_size=224,
                                                     preprocess=False,
                                                     rescale=True)

        all_middlebury_images.append([base_image, pos_image])

    for base_file, pos_file in stereo_pairs:
        base_image = vutils.load_and_preprocess_image(join(
            middlebury_dir, base_file),
                                                      dataset='imagenet',
                                                      x_size=224,
                                                      y_size=224,
                                                      preprocess=False,
                                                      rescale=True)
        pos_image = vutils.load_and_preprocess_image(join(
            middlebury_dir, pos_file),
                                                     dataset='imagenet',
                                                     x_size=224,
                                                     y_size=224,
                                                     preprocess=False,
                                                     rescale=True)

        all_stereo_images.append([base_image, pos_image])

    all_middlebury_images = np.squeeze(np.array(all_middlebury_images))
    all_stereo_images = np.squeeze(np.array(all_stereo_images))

    # ipdb.set_trace()

    pairs = []
    labels = []

    total_count = 0
    batch_size = 1600

    # ipdb.set_trace()
    print(match_pairs.shape[0])

    start_time = time.time()
    with h5py.File(output_file, 'w') as f:
        maxshape = (None, ) + (2, 3, 224, 224)
        dset = f.create_dataset('pairs',
                                shape=(batch_size, 2, 3, 224, 224),
                                maxshape=maxshape)
        labels_dset = f.create_dataset('labels',
                                       shape=(batch_size, 1),
                                       maxshape=(None, 1))

        row_count = 0

        for i, (base_data, pair_data) in enumerate(
                np.vstack(zip(match_pairs, match_pairs))):
            if i % 2 == 0:
                pair = all_stereo_images[np.random.choice(
                    all_stereo_images.shape[0])]
                label = 1
            else:
                base_filename = base_data[2].split('/')[-1]
                year, month = base_data[3].split('-')[0], base_data[3].split(
                    '-')[1]
                base_image = vutils.load_and_preprocess_image(join(
                    image_dir, year, month, month, base_filename),
                                                              dataset='flickr',
                                                              x_size=224,
                                                              y_size=224,
                                                              preprocess=False,
                                                              rescale=True)
                if base_image is None:
                    continue

                pair_filename = pair_data[2].split('/')[-1]
                year, month = pair_data[3].split('-')[0], pair_data[3].split(
                    '-')[1]
                pair_image = vutils.load_and_preprocess_image(join(
                    image_dir, year, month, month, pair_filename),
                                                              dataset='flickr',
                                                              x_size=224,
                                                              y_size=224,
                                                              preprocess=False,
                                                              rescale=True)
                if pair_image is None:
                    continue

                pair = np.squeeze(np.array([base_image, pair_image]))
                label = 0

            pairs += [pair]
            labels += [label]

            if len(pairs) == batch_size:
                # print('here')
                # pairs = np.squeeze(np.asarray(pairs))
                # ipdb.set_trace()
                pairs = np.asarray(pairs)
                dset[row_count:] = pairs
                labels = np.array(labels)
                labels_dset[row_count:] = np.reshape(labels,
                                                     (labels.shape[0], 1))
                row_count += pairs.shape[0]
                dset.resize(row_count + pairs.shape[0], axis=0)
                labels_dset.resize(row_count + pairs.shape[0], axis=0)

                labels = []
                pairs = []

                total_count += batch_size

    print('{} | Saved to {}'.format(int(time.time() - start_time),
                                    output_file))
Beispiel #7
0
def create_pairs_helper(pos_pairs, all_image_data, image_dir, output_dir):

    pairs = []
    labels = []

    # pos_pair_images = []
    # neg_pair_images = []

    # image_dir = '/scratch/network/dchouren/images/2014/01_new/01_new'

    last_time = time.time()

    count = 0

    for i, (base_data, pos_data) in enumerate(pos_pairs):
        base_filename = base_data[2].split('/')[-1]
        base_image = vutils.load_and_preprocess_image(join(
            image_dir, base_filename),
                                                      dataset='imagenet',
                                                      x_size=224,
                                                      y_size=224,
                                                      preprocess=False,
                                                      rescale=True)
        pos_filename = pos_data[2].split('/')[-1]
        pos_image = vutils.load_and_preprocess_image(join(
            image_dir, pos_filename),
                                                     dataset='imagenet',
                                                     x_size=224,
                                                     y_size=224,
                                                     preprocess=False,
                                                     rescale=True)

        possible_neg_image = all_image_data[np.random.choice(
            all_image_data.shape[0])]
        while meter_distance(possible_neg_image[:2], base_data[:2]) < 2000:
            possible_neg_image = all_image_data[np.random.choice(
                all_image_data.shape[0])]

        neg_filename = possible_neg_image[2].split('/')[-1]
        neg_image = vutils.load_and_preprocess_image(join(
            image_dir, neg_filename),
                                                     dataset='imagenet',
                                                     x_size=224,
                                                     y_size=224,
                                                     preprocess=False,
                                                     rescale=True)

        if base_image is None or pos_image is None or neg_image is None:
            continue

        pos_pair = [base_image, pos_image]
        neg_pair = [base_image, neg_image]

        # ipdb.set_trace()
        pairs += [pos_pair]
        pairs += [neg_pair]
        labels += [1, 0]

        if i % 100 == 0:
            print(i, time.time() - last_time)

        if len(labels) == 10000:
            np.save(open(join(output_dir, 'pairs_' + str(count) + '.npy')),
                    pairs)
            labels = []
            pairs = []