Ejemplo n.º 1
0
    def generate_grid_custom(self, file):
        file = file.numpy().decode("utf-8")
        with open(file, 'r') as fp:
            meta = json.load(fp)
        shape = (meta['imageHeight'], meta['imageWidth'])
        lines = self.get_points(file)

        return generate_grid(lines, self.cls_shape, shape)
Ejemplo n.º 2
0
    def generate_grid_llamas(self, file):
        #img = self.load_image(file)
        file = file.numpy().decode("utf-8")
        lanes = get_horizontal_values_for_four_lanes(file)

        return generate_grid(lanes,
                             self.cls_shape,
                             self.llamas_shape,
                             delete_lanes=(0, 3))
Ejemplo n.º 3
0
def sample_from_model(sess, data=None, **params):
    if type(data) is tuple:
        x,y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5) ## preprocessing

    if 'use_coordinates' in params and params['use_coordinates']:
        g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
        xg = np.concatenate([x, g], axis=-1)
        xg, _ = uf.random_crop_images(xg, output_size=(args.input_size, args.input_size))
        x, g = xg[:, :, :, :3], xg[:, :, :, 3:]

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    # spatial conditioning
    if args.spatial_conditional:
        spatial_lv = []
        if 'use_coordinates' in params and params['use_coordinates']:
            spatial_lv.append(g)
        spatial_lv = np.concatenate(spatial_lv, axis=-1)

    if args.global_conditional:
        global_lv = np.split(global_lv, args.nr_gpu)
        feed_dict.update({ghs[i]: global_lv[i] for i in range(args.nr_gpu)})
    if args.spatial_conditional:
        spatial_lv = np.split(spatial_lv, args.nr_gpu)
        feed_dict.update({shs[i]: spatial_lv[i] for i in range(args.nr_gpu)})

    x = np.split(x, args.nr_gpu)
    x_gen = [np.zeros_like(x[0]) for i in range(args.nr_gpu)]

    for yi in range(obs_shape[0]):
        for xi in range(obs_shape[1]):
            feed_dict.update({xs[i]: x_gen[i] for i in range(args.nr_gpu)})
            new_x_gen_np = sess.run(new_x_gen, feed_dict=feed_dict)
            for i in range(args.nr_gpu):
                x_gen[i][:,yi,xi,:] = new_x_gen_np[i][:,yi,xi,:]
    return np.concatenate(x_gen, axis=0)
Ejemplo n.º 4
0
def make_feed_dict(data, init=False, **params):
    if type(data) is tuple:
        x,y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5) ## preprocessing

    if 'use_coordinates' in params and params['use_coordinates']:
        g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
        xg = np.concatenate([x, g], axis=-1)
        xg, _ = uf.random_crop_images(xg, output_size=(args.input_size, args.input_size))
        x, g = xg[:, :, :, :3], xg[:, :, :, 3:]

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    # spatial conditioning
    if args.spatial_conditional:
        spatial_lv = []
        if 'use_coordinates' in params and params['use_coordinates']:
            spatial_lv.append(g)
        spatial_lv = np.concatenate(spatial_lv, axis=-1)

    if init:
        feed_dict = {x_init: x}
        if args.global_conditional:
            feed_dict.update({gh_init: global_lv})
        if args.spatial_conditional:
            feed_dict.update({sh_init: spatial_lv})
    else:
        x = np.split(x, args.nr_gpu)
        feed_dict = {xs[i]: x[i] for i in range(args.nr_gpu)}
        if args.global_conditional:
            global_lv = np.split(global_lv, args.nr_gpu)
            feed_dict.update({ghs[i]: global_lv[i] for i in range(args.nr_gpu)})
        if args.spatial_conditional:
            spatial_lv = np.split(spatial_lv, args.nr_gpu)
            feed_dict.update({shs[i]: spatial_lv[i] for i in range(args.nr_gpu)})
    return feed_dict
Ejemplo n.º 5
0
def make_feed_dict(data, init=False):
    if type(data) is tuple:
        x, y = data
    else:
        x = data
        y = None

    x = np.cast[np.float32](
        (x - 127.5) / 127.5
    )  # input to pixelCNN is scaled from uint8 [0,255] to float in range [-1,1]
    g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
    xg = np.concatenate([x, g], axis=-1)
    xg, _ = uf.random_crop_images(xg,
                                  output_size=(args.input_size,
                                               args.input_size))
    x, g = xg[:, :, :, :3], xg[:, :, :, 3:]

    if init:
        feed_dict = {x_init: x}
        if gh_init is not None:
            feed_dict.update({gh_init: y})
        if sh_init is not None:
            h = x.copy()
            h = uf.mask_inputs(h, train_mgen)
            h = np.concatenate([g, h], axis=-1)
            feed_dict.update({sh_init: h})
    else:
        x = np.split(x, args.nr_gpu)
        g = np.split(g, args.nr_gpu)
        if y is not None:
            y = np.split(y, args.nr_gpu)
        feed_dict = {xs[i]: x[i] for i in range(args.nr_gpu)}
        if args.spatial_conditional:
            h = [x[i].copy() for i in range(args.nr_gpu)]
            for i in range(args.nr_gpu):
                h[i] = uf.mask_inputs(h[i], train_mgen)
                h[i] = np.concatenate([g[i], h[i]], axis=-1)
            feed_dict.update({shs[i]: h[i] for i in range(args.nr_gpu)})
        if args.global_conditional:
            feed_dict.update({ghs[i]: y[i] for i in range(args.nr_gpu)})
    return feed_dict
Ejemplo n.º 6
0
def sample_from_model(sess, data=None):
    if data is not None and type(data) is not tuple:
        x = data
    x = np.cast[np.float32]((x - 127.5) / 127.5)
    g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
    xg = np.concatenate([x, g], axis=-1)
    #xg, _ = uf.random_crop_images(xg, output_size=(args.input_size, args.input_size))
    xg, _ = uf.tile_crop_images(xg[0],
                                output_size=(args.input_size, args.input_size))
    x, g = xg[:, :, :, :3], xg[:, :, :, 3:]
    x = np.split(x, args.nr_gpu)
    g = np.split(g, args.nr_gpu)
    # y = np.split(y, args.nr_gpu)

    h = [x[i].copy() for i in range(args.nr_gpu)]
    for i in range(args.nr_gpu):
        h[i] = uf.mask_inputs(h[i], sample_mgen)
        h[i] = np.concatenate([g[i], h[i]], axis=-1)
    if args.spatial_conditional:
        feed_dict = {shs[i]: h[i] for i in range(args.nr_gpu)}
    if args.global_conditional:
        feed_dict.update({ghs[i]: y[i] for i in range(args.nr_gpu)})

    if args.context_conditioning:
        x_gen = [h[i][:, :, :, -4:-1].copy() for i in range(args.nr_gpu)]
        m_gen = [h[i][:, :, :, -1].copy() for i in range(args.nr_gpu)]
        m_gen = m_gen[0][0]

    for yi in range(obs_shape[0]):
        for xi in range(obs_shape[1]):
            if m_gen[yi, xi] == 0:
                feed_dict.update({xs[i]: x_gen[i] for i in range(args.nr_gpu)})
                new_x_gen_np = sess.run(new_x_gen, feed_dict=feed_dict)
                for i in range(args.nr_gpu):
                    x_gen[i][:, yi, xi, :] = new_x_gen_np[i][:, yi, xi, :]
    return np.concatenate(x_gen, axis=0)
Ejemplo n.º 7
0
def make_feed_dict(data, init=False, **params):
    if type(data) is tuple:
        x, y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5)  ## preprocessing

    if args.use_coordinates:
        g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
        xg = np.concatenate([x, g], axis=-1)
        xg, _ = uf.random_crop_images(xg,
                                      output_size=(args.input_size,
                                                   args.input_size))
        x, g = xg[:, :, :, :3], xg[:, :, :, 3:]
    else:
        x, _ = uf.random_crop_images(x,
                                     output_size=(args.input_size,
                                                  args.input_size))

    if 'mask_generator' in params:
        mgen = params['mask_generator']
        ms = mgen.gen(x.shape[0])
        x_masked = x * uf.broadcast_mask(ms, 3)
        x_masked = np.concatenate(
            [x_masked, uf.broadcast_mask(ms, 1)], axis=-1)

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    # spatial conditioning
    if args.spatial_conditional:
        spatial_lv = []
        if args.context_conditioning:
            spatial_lv.append(x_masked)
        spatial_lv = np.concatenate(spatial_lv, axis=-1)

    if init:
        feed_dict = {x_init: x}
        if args.global_conditional:
            feed_dict.update({gh_init: global_lv})
        if args.spatial_conditional:
            feed_dict.update({sh_init: spatial_lv})
        if args.use_coordinates:
            c1 = g
            c2 = grid.zoom_batch(c1, [obs_shape[0] // 2, obs_shape[1] // 2])
            c4 = grid.zoom_batch(c1, [obs_shape[0] // 4, obs_shape[1] // 4])

            feed_dict.update({ch_1_init: c1})
            feed_dict.update({ch_2_init: c2})
            feed_dict.update({ch_4_init: c4})
    else:
        x = np.split(x, args.nr_gpu)
        feed_dict = {xs[i]: x[i] for i in range(args.nr_gpu)}
        if args.global_conditional:
            global_lv = np.split(global_lv, args.nr_gpu)
            feed_dict.update(
                {ghs[i]: global_lv[i]
                 for i in range(args.nr_gpu)})
        if args.spatial_conditional:
            spatial_lv = np.split(spatial_lv, args.nr_gpu)
            feed_dict.update(
                {shs[i]: spatial_lv[i]
                 for i in range(args.nr_gpu)})
        if args.use_coordinates:
            c1 = g
            c2 = grid.zoom_batch(c1, [obs_shape[0] // 2, obs_shape[1] // 2])
            c4 = grid.zoom_batch(c1, [obs_shape[0] // 4, obs_shape[1] // 4])

            c1 = np.split(c1, args.nr_gpu)
            c2 = np.split(c2, args.nr_gpu)
            c4 = np.split(c4, args.nr_gpu)

            feed_dict.update({ch_1[i]: c1[i] for i in range(args.nr_gpu)})
            feed_dict.update({ch_2[i]: c2[i] for i in range(args.nr_gpu)})
            feed_dict.update({ch_4[i]: c4[i] for i in range(args.nr_gpu)})
    return feed_dict
Ejemplo n.º 8
0
def sample_from_model(sess, data=None, **params):
    if type(data) is tuple:
        x, y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5)  ## preprocessing

    if args.use_coordinates:
        g = grid.generate_grid((x.shape[1], x.shape[2]), batch_size=x.shape[0])
        xg = np.concatenate([x, g], axis=-1)
        xg, _ = uf.random_crop_images(xg,
                                      output_size=(args.input_size,
                                                   args.input_size))
        x, g = xg[:, :, :, :3], xg[:, :, :, 3:]
    else:
        x, _ = uf.random_crop_images(x,
                                     output_size=(args.input_size,
                                                  args.input_size))

    if 'mask_generator' in params:
        mgen = params['mask_generator']
        ms = mgen.gen(x.shape[0])
        x_masked = x * uf.broadcast_mask(ms, 3)
        x_masked = np.concatenate(
            [x_masked, uf.broadcast_mask(ms, 1)], axis=-1)

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    # spatial conditioning
    if args.spatial_conditional:
        spatial_lv = []
        if args.context_conditioning:
            spatial_lv.append(x_masked)
        spatial_lv = np.concatenate(spatial_lv, axis=-1)

    feed_dict = {}  ##
    # coordinates conditioning:
    if args.use_coordinates:
        c1 = g
        c2 = grid.zoom_batch(c1, [obs_shape[0] // 2, obs_shape[1] // 2])
        c4 = grid.zoom_batch(c1, [obs_shape[0] // 4, obs_shape[1] // 4])

        c1 = np.split(c1, args.nr_gpu)
        c2 = np.split(c2, args.nr_gpu)
        c4 = np.split(c4, args.nr_gpu)

        feed_dict.update({ch_1[i]: c1[i] for i in range(args.nr_gpu)})
        feed_dict.update({ch_2[i]: c2[i] for i in range(args.nr_gpu)})
        feed_dict.update({ch_4[i]: c4[i] for i in range(args.nr_gpu)})

    if args.global_conditional:
        global_lv = np.split(global_lv, args.nr_gpu)
        feed_dict.update({ghs[i]: global_lv[i] for i in range(args.nr_gpu)})
    if args.spatial_conditional:
        spatial_lv = np.split(spatial_lv, args.nr_gpu)
        feed_dict.update({shs[i]: spatial_lv[i] for i in range(args.nr_gpu)})

    if 'mask_generator' in params:
        x_gen = np.split(x_masked[:, :, :, :3], args.nr_gpu)
    else:
        x_gen = [np.zeros_like(x) for i in range(args.nr_gpu)]

    for yi in range(obs_shape[0]):
        for xi in range(obs_shape[1]):
            if ('mask_generator' not in params) or ms[0][yi, xi] == 0:
                feed_dict.update({xs[i]: x_gen[i] for i in range(args.nr_gpu)})
                new_x_gen_np = sess.run(new_x_gen, feed_dict=feed_dict)
                for i in range(args.nr_gpu):
                    x_gen[i][:, yi, xi, :] = new_x_gen_np[i][:, yi, xi, :]
    return np.concatenate(x_gen, axis=0)
def complete(sess, data, mask, **params):
    if type(data) is tuple:
        x, y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5)  ## preprocessing
    # mask images
    masks = uf.broadcast_mask(mask, 3, x.shape[0])
    x *= masks

    if 'x_hats' in params:
        x_hats = params['x_hats']
        x_hats = (x_hats * 2.) - 1.

    x_ret = np.split(x, args.nr_gpu)

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    global_g = grid.generate_grid((x.shape[1], x.shape[2]),
                                  batch_size=x.shape[0])

    if args.global_conditional:
        global_lv = np.split(global_lv, args.nr_gpu)
        feed_dict.update({ghs[i]: global_lv[i] for i in range(args.nr_gpu)})

    while True:
        # find the next pixel and the corresonding window
        p = uf.find_next_missing_pixel(mask)
        if p is None:
            break
        window = uf.find_maximally_conditioned_window(mask, 32, p)
        print(p, window)
        [[h0, h1], [w0, w1]] = window
        g = global_g[:, h0 - 2:h1 + 2, w0 - 2:w1 + 2, :]
        # mw = mask[h0:h1, w0:w1]
        # xw = x[:, h0:h1, w0:w1, :]
        x_hatsw = x_hats[:, h0 - 2:h1 + 2, w0 - 2:w1 + 2, :]
        x_hatsws = np.split(x_hatsw, args.nr_gpu)
        yi, xi = p[0] - h0, p[1] - w0

        # spatial conditioning
        if args.spatial_conditional:
            spatial_lv = []
            if 'use_coordinates' in params and params['use_coordinates']:
                spatial_lv.append(g)
            if 'x_hats' in params:
                spatial_lv.append(x_hatsw)
            spatial_lv = np.concatenate(spatial_lv, axis=-1)

        if args.spatial_conditional:
            spatial_lv = np.split(spatial_lv, args.nr_gpu)
            feed_dict.update(
                {shs[i]: spatial_lv[i]
                 for i in range(args.nr_gpu)})

        x_gen = [
            x_ret[i][:, h0:h1, w0:w1, :].copy() for i in range(args.nr_gpu)
        ]  # np.split(xw, args.nr_gpu)

        feed_dict.update({xs[i]: x_gen[i] for i in range(args.nr_gpu)})
        new_x_gen_np = sess.run(new_x_gen, feed_dict=feed_dict)
        for i in range(args.nr_gpu):
            x_ret[i][:, p[0], p[1], :] = new_x_gen_np[i][:, yi, xi, :]

        mask[p[0], p[1]] = 1

    return np.concatenate(x_ret, axis=0)
Ejemplo n.º 10
0
def complete(sess, data, mask, **params):
    if type(data) is tuple:
        x, y = data
    else:
        x = data
        y = None
    x = np.cast[np.float32]((x - 127.5) / 127.5)  ## preprocessing
    # mask images
    x_ret = x * uf.broadcast_mask(mask, 3, x.shape[0])
    x_ret = np.split(x_ret, args.nr_gpu)
    x_masked = np.concatenate([
        np.concatenate(x_ret, axis=0),
        uf.broadcast_mask(mask, 1, x.shape[0])
    ],
                              axis=-1)

    # global conditioning
    if args.global_conditional:
        global_lv = []
        if 'z' in params:
            global_lv.append(params['z'])
        global_lv = np.concatenate(global_lv, axis=-1)

    if args.global_conditional:
        global_lv = np.split(global_lv, args.nr_gpu)
        feed_dict.update({ghs[i]: global_lv[i] for i in range(args.nr_gpu)})

    global_g = grid.generate_grid((x.shape[1], x.shape[2]),
                                  batch_size=x.shape[0])

    while True:
        # find the next pixel and the corresonding window
        p = uf.find_next_missing_pixel(mask)
        if p is None:
            break
        window = uf.find_maximally_conditioned_window(mask, 32, p)
        print(p, window)
        [[h0, h1], [w0, w1]] = window
        g = global_g[:, h0:h1, w0:w1, :]

        x_masked_w = x_masked[:, h0:h1, w0:w1, :]

        yi, xi = p[0] - h0, p[1] - w0

        # spatial conditioning
        if args.spatial_conditional:
            spatial_lv = []
            if args.context_conditioning:
                spatial_lv.append(x_masked_w)
            spatial_lv = np.concatenate(spatial_lv, axis=-1)
        if args.spatial_conditional:
            spatial_lv = np.split(spatial_lv, args.nr_gpu)
            feed_dict.update(
                {shs[i]: spatial_lv[i]
                 for i in range(args.nr_gpu)})

        # coordinates conditioning:
        if args.use_coordinates:
            c1 = g
            c2 = grid.zoom_batch(c1, [obs_shape[0] // 2, obs_shape[1] // 2])
            c4 = grid.zoom_batch(c1, [obs_shape[0] // 4, obs_shape[1] // 4])

            c1 = np.split(c1, args.nr_gpu)
            c2 = np.split(c2, args.nr_gpu)
            c4 = np.split(c4, args.nr_gpu)

            feed_dict.update({ch_1[i]: c1[i] for i in range(args.nr_gpu)})
            feed_dict.update({ch_2[i]: c2[i] for i in range(args.nr_gpu)})
            feed_dict.update({ch_4[i]: c4[i] for i in range(args.nr_gpu)})

        x_gen = [x_ret[i][:, h0:h1, w0:w1, :] for i in range(args.nr_gpu)]

        feed_dict.update({xs[i]: x_gen[i] for i in range(args.nr_gpu)})
        new_x_gen_np = sess.run(new_x_gen, feed_dict=feed_dict)
        for i in range(args.nr_gpu):
            x_ret[i][:, p[0], p[1], :] = new_x_gen_np[i][:, yi, xi, :]

        mask[p[0], p[1]] = 1
        #x_masked = np.concatenate([np.concatenate(x_ret, axis=0), uf.broadcast_mask(mask, 1, x.shape[0])], axis=-1)

    return np.concatenate(x_ret, axis=0)