Ejemplo n.º 1
0
 def conditional_save_img_comparison_with_intensity(self, mode, i, ele,
                                                    pred, pred_intensity,
                                                    epoch):
     # save 8 images for visualization
     if mode == 'val' or mode == 'eval':
         skip = 100
         if i == 0:
             self.img_merge = vis_utils.merge_into_row_with_intensity(
                 ele, pred, pred_intensity)
             # self.img_merge = vis_utils.merge_into_row(ele, pred)
         elif i % skip == 0 and i < 8 * skip:
             # row = vis_utils.merge_into_row(ele, pred)
             row = vis_utils.merge_into_row_with_intensity(
                 ele, pred, pred_intensity)
             self.img_merge = vis_utils.add_row(self.img_merge, row)
         elif i == 8 * skip:
             filename = self._get_img_comparison_name(mode, epoch)
             vis_utils.save_image(self.img_merge, filename)  #HWC
             # input C x H x W
             img_np_rescale = skimage.transform.rescale(np.array(
                 self.img_merge, dtype='float64'),
                                                        0.5,
                                                        order=0)
             img_np_rescale_CHW = np.transpose(img_np_rescale, (2, 0, 1))
             self.writer.add_image('comparison', img_np_rescale_CHW, i)
 def conditional_save_img_comparison(self, mode, i, ele, pred, epoch):
     # save 8 images for visualization
     if mode == 'val' or mode == 'eval':
         skip = 100
         if i == 0:
             self.img_merge = vis_utils.merge_into_row(ele, pred)
         elif i % skip == 0 and i < 8 * skip:
             row = vis_utils.merge_into_row(ele, pred)
             self.img_merge = vis_utils.add_row(self.img_merge, row)
         elif i == 8 * skip:
             filename = self._get_img_comparison_name(mode, epoch)
             vis_utils.save_image(self.img_merge, filename)
    def visualise_layer_without_hooks(self):
        # Process image and return variable
        # Generate a random image
        random_image = np.uint8(np.random.uniform(150, 180, (1, 10, 100, 100)))
        # Process image and return variable
        processed_image = preprocess_clip(random_image)
        print(processed_image.shape)
        # Define optimizer for the image
        optimizer = Adam([processed_image], lr=0.5, weight_decay=1e-6)

        for i in range(1, 101):
            optimizer.zero_grad()
            # Assign create image to a variable to move forward in the model
            x = processed_image
            for index, layer in enumerate(self.model):
                # Forward pass layer by layer
                x = layer(x)
                if index == self.selected_layer:
                    # Only need to forward until the selected layer is reached
                    # Now, x is the output of the selected layer
                    break
            # Here, we get the specific filter from the output of the convolution operation
            # x is a tensor of shape 1x512x28x28.(For layer 17)
            # So there are 512 unique filter outputs
            # Following line selects a filter from 512 filters so self.conv_output will become
            # a tensor of shape 28x28
            self.conv_output = x[0, self.selected_filter]
            # Loss function is the mean of the output of the selected layer/filter
            # We try to minimize the mean of the output of that specific filter
            loss = -torch.mean(self.conv_output)
            print('Iteration:', str(i), 'Loss:', "{0:.6f}".format(loss.data.numpy()))
            # Backward
            loss.backward()
            # Update image
            optimizer.step()
            # TODO: check if we need to recreate image
            #self.created_image = recreate_image(processed_image)
            # Save image
            if i % 10 == 0:
                im_path = '../generated/layer_vis_l' + str(self.selected_layer) + \
                    '_f' + str(self.selected_filter) + '_iter' + str(i) + '.jpg'
                save_image(self.created_image, im_path)
 def save_img_comparison_as_best(self, mode, epoch):
     if mode == 'val':
         filename = self._get_img_comparison_name(mode, epoch, is_best=True)
         vis_utils.save_image(self.img_merge, filename)
        'float32')  # cv2 only works with 32 bit floating point
    input_data_img = cv2.cvtColor(input_data_img, cv2.COLOR_GRAY2RGB)
    heatmap = cv2.applyColorMap(cv2.bitwise_not(np.uint8(255 * mask[i])),
                                cv2.COLORMAP_JET)
    if RESIZE_FLAG:
        input_data_img = cv2.resize(input_data_img, (RESIZE_SIZE, RESIZE_SIZE))
        heatmap = cv2.resize(heatmap, (RESIZE_SIZE, RESIZE_SIZE))
    heatmap = np.float32(heatmap) / 255
    cam = heatmap + np.float32(input_data_img)
    cam = cam / np.max(cam)
    combined_img = np.concatenate(
        (np.uint8(255 * input_data_img), np.uint8(255 * cam)), axis=1)

    # these always need to be saved so we can make the gif
    save_image(
        combined_img,
        os.path.join(output_images_folder_cam_combined,
                     "img%02d.jpg" % (i + 1)))

    if SAVE_INDIVIDUALS:
        save_image(
            np.uint8(255 * cam),
            os.path.join(output_images_folder_cam, "img%02d.jpg" % (i + 1)))
        save_image(
            np.uint8(255 * input_data_img),
            os.path.join(output_images_folder_original,
                         "img%02d.jpg" % (i + 1)))

path_to_combined_gif = os.path.join(output_images_folder_cam_combined,
                                    "mygif.gif")
os.system("convert -delay 20 -loop 0 {}.jpg {}".format(
    os.path.join(output_images_folder_cam_combined, "*"),
 def save_img_comparison_as_best(self, mode, epoch):
     if mode == 'val':
         filename = self._get_img_comparison_name(mode, epoch, is_best=True)
         vis_utils.save_image(self.img_merge, filename)
         self.writer.add_image(f"img_merge_{mode}", self.img_merge,
                               self.current_step)
Ejemplo n.º 7
0
 def save_img_comparison_as_best(self, mode, epoch):
     if mode == 'val':
         filename = self._get_img_comparison_name(mode, epoch, is_best=True)
         vis_utils.save_image(self.img_merge, filename)
         self.writer.add_image('val_comparison_best',
                               np.transpose(self.img_merge, (2, 0, 1)))