Esempio n. 1
0
 def finalize(self):
     for image_name, clean, image in zip(self.images_names,
                                         self.best_result.cleans,
                                         self.images):
         save_image(image_name + "_watermark", self.best_result.watermark)
         save_image(image_name + "_mask", self.best_result.mask)
         save_image(image_name + "_obtained_mask",
                    self.best_result.mask * self.best_result.watermark)
         save_image(image_name + "_clean", clean)
         save_image(image_name + "_original", image)
Esempio n. 2
0
def segment_all(one_obj_path, output_path):
    for image in glob.glob(one_obj_path + "input/*"):
        name = image[len(one_obj_path + "input/"):-4]
        print("processing {}".format(name))
        #fg = image.replace("input/", "output_fg/").replace(".jpg", ".png")
        #bg = image.replace("input/", "output_bg/").replace(".jpg", ".png")
        masks = []
        im = prepare_image(image)
        #fg = prepare_image(fg)
        #bg = prepare_image(bg)
        fg = None
        bg = None
        for i in range(5):
            s = Segmentation("1obj_{}".format(i) + name,
                             im,
                             bg_hint=bg,
                             fg_hint=fg,
                             plot_during_training=True,
                             output_path=output_path)
            s.optimize()
            masks.append(s.best_result.mask)
        save_image("1obj_" + name + "_final_mask", median(masks), output_path)
Esempio n. 3
0
def watermarks2_example_no_hint():
    # im1 = prepare_image('data/watermark/123RF_1.jpg')
    # im2 = prepare_image('data/watermark/123RF_2.jpg')
    # im3 = prepare_image('data/watermark/123RF_3.jpg')
    # im4 = prepare_image('data/watermark/123RF_4.jpg')
    # results = []
    # for i in range(7):
    #     # TODO: make it median
    #     s = ManyImagesWatermarkNoHint(["123rf_example_{}".format(i) for i in range(4)], [im1, im2, im3, im4])
    #     s.optimize()
    #     s.finalize()

    im1 = prepare_image('data/watermark/fotolia1.jpg')
    im2 = prepare_image('data/watermark/fotolia2.jpg')
    im3 = prepare_image('data/watermark/fotolia3.jpg')
    results = []
    for i in range(5):
        # TODO: make it median
        s = ManyImagesWatermarkNoHint(
            ["fotolia_example_{}".format(i) for i in range(3)],
            [im1, im2, im3])
        s.optimize()
        results.append(s.best_result)
    # namedtuple("ManyImageWatermarkResult", ['cleans', 'mask', 'watermark', 'psnr'])
    obtained_watermark = median(
        [result.mask * result.watermark for result in results])
    obtained_im1 = median([result.cleans[0] for result in results])
    obtained_im2 = median([result.cleans[1] for result in results])
    obtained_im3 = median([result.cleans[2] for result in results])
    # obtained_mask = median([result.mask for result in results])
    v = np.zeros_like(obtained_watermark)
    v[obtained_watermark < 0.03] = 1
    final_im1 = v * im1 + (1 - v) * obtained_im1
    final_im2 = v * im2 + (1 - v) * obtained_im2
    final_im3 = v * im3 + (1 - v) * obtained_im3
    save_image("fotolia1_final", final_im1)
    save_image("fotolia2_final", final_im2)
    save_image("fotolia3_final", final_im3)
    save_image("fotolia_final_watermark", obtained_watermark)
Esempio n. 4
0
def ambiguity_experiment_example():
    im1 = prepare_image('data/experiments/texture3.jpg')
    im2 = prepare_image('data/experiments/texture1.jpg')
    im3 = prepare_image('data/experiments/texture4.jpg')
    im4 = prepare_image('data/experiments/texture6.jpg')
    im1_new = im1
    im1_new[:, :, :im1.shape[2] // 2] = im4[:, :, :im1.shape[2] // 2]
    im2_new = im2
    # im4 = np_imresize(im4, output_shape=im2.shape)
    im2_new[:, :, :im2.shape[2] // 2] = im3[:, :, :im2.shape[2] // 2]
    save_image("input1", im1_new)
    save_image("input2", im2_new)
    mixed = (im1_new + im2_new) / 2
    save_image("mixed", mixed)
    exit()
    for i in range(10):
        # mixed = prepare_gray_image('data/experiments/97033.jpg')
        # mixed = prepare_gray_image('data/separation/c.jpg')
        s = Separation("mixed_{}".format(i), mixed, num_iter=8000)
        s.optimize()
        s.finalize()
 def finalize(self):
     self.net_output1 = self.net1(self.net_input1)
     self.net_output2 = self.net2(self.net_input2)
     save_image("original_image1", self.image1)
     save_image("original_image2", self.image2)
     save_image("learn_on", self.first_half)
     save_image("apply_on", self.second_half)
     save_image("learned_image1", torch_to_np(self.net_output1))
     save_image("learned_image2", torch_to_np(self.net_output2))
Esempio n. 6
0
 def finalize(self):
     save_image(self.image_name + "_watermark", self.best_result.watermark)
     save_image(self.image_name + "_clean1", self.best_result.clean1)
     save_image(self.image_name + "_clean2", self.best_result.clean2)
     save_image(self.image_name + "_original1", self.image1)
     save_image(self.image_name + "_original2", self.image2)
     save_image(
         self.image_name + "_final1",
         self.image1 - self.best_result.watermark * self.watermark_hint)
     save_image(
         self.image_name + "_final2",
         self.image2 - self.best_result.watermark * self.watermark_hint)
        optimizer.zero_grad()

        loss = loss_fn(ae(prior_input), prior_input)

        loss.backward()

        optimizer.step()

    rec_samples.append(ae(prior_input).detach())

img_name = os.path.splitext(os.path.basename(args.img))[0]

img_prior = torch.mean(torch.cat(rec_samples), dim=0).cpu().numpy()

# save prior to output
save_image(img_name, img_prior, args.output_path)

fg = prepare_image(args.fg_hint)
bg = prepare_image(args.bg_hint)

masks = []
for _ in range(5):
    s = Segmentation(img_name,
                     img_prior,
                     bg_hint=bg,
                     fg_hint=fg,
                     plot_during_training=True,
                     show_every=200,
                     first_step_iter_num=args.dip_iters // 2,
                     second_step_iter_num=args.dip_iters,
                     output_path=args.output_path)