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)
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)))