def _visualize_images(self, recons, targets, extra_params, epoch, step, training=False): mode = 'Training' if training else 'Validation' # This numbering scheme seems to have issues for certain numbers. # Please check cases when there is no remainder. if self.display_interval and (step % self.display_interval == 0): acc = extra_params['acceleration'] kwargs = dict(global_step=epoch, dataformats='HW') # Adding RSS images of reconstructions and targets. recon_rss = standardize_image(recons['rss_recons']) delta_rss = standardize_image(targets['rss_targets'] - recons['rss_recons']) self.writer.add_image(f'{mode} RSS Recons/{acc}/{step}', recon_rss, **kwargs) self.writer.add_image(f'{mode} RSS Deltas/{acc}/{step}', delta_rss, **kwargs) if epoch == 1: # Maybe add input images too later on. # Not actually the input but the RSS of the input images. target_rss = standardize_image(targets['rss_targets']) self.writer.add_image(f'{mode} RSS Targets/{acc}/{step}', target_rss, **kwargs) if 'rss_inputs' in targets: input_rss = standardize_image(targets['rss_inputs']) self.writer.add_image(f'{mode} RSS Inputs/{acc}/{step}', input_rss, **kwargs)
def _visualize_images(self, recons, targets, extra_params, epoch, step, training=False): mode = 'Training' if training else 'Validation' # This numbering scheme seems to have issues for certain numbers. # Please check cases when there is no remainder. if self.display_interval and (step % self.display_interval == 0): img_recon_grid = make_img_grid(recons['img_recons'], self.shrink_scale) # Added delta image in the image domain. This is different from delta images in the complex domain. # However, it is the only available delta image in I2I training. img_delta_grid = make_img_grid(targets['img_targets'] - recons['img_recons'], self.shrink_scale) acc = extra_params['acceleration'] kwargs = dict(global_step=epoch, dataformats='HW') self.writer.add_image(f'{mode} Image Recons/{acc}/{step}', img_recon_grid, **kwargs) self.writer.add_image(f'{mode} Delta Image/{acc}/{step}', img_delta_grid, **kwargs) # Adding RSS images of reconstructions and targets. if 'rss_recons' in recons: recon_rss = standardize_image(recons['rss_recons']) delta_rss = standardize_image(targets['rss_targets'] - recons['rss_recons']) self.writer.add_image(f'{mode} RSS Recons/{acc}/{step}', recon_rss, **kwargs) self.writer.add_image(f'{mode} RSS Delta/{acc}/{step}', delta_rss, **kwargs) if epoch == 1: # Maybe add input images too later on. img_target_grid = make_img_grid(targets['img_targets'], self.shrink_scale) # Not actually the input but what the input looks like as an image. img_grid = make_img_grid(targets['img_inputs'], self.shrink_scale) self.writer.add_image(f'{mode} Image Targets/{acc}/{step}', img_target_grid, **kwargs) self.writer.add_image(f'{mode} Input Images/{acc}/{step}', img_grid, **kwargs) target_rss = standardize_image(targets['rss_targets']) self.writer.add_image(f'{mode} RSS Targets/{acc}/{step}', target_rss, **kwargs)
def _visualize_images(self, recons, targets, epoch, step, training=False): mode = 'Training' if training else 'Validation' # This numbering scheme seems to have issues for certain numbers. # Please check cases when there is no remainder. if self.display_interval and (step % self.display_interval == 0): img_recon_grid = make_img_grid(recons['img_recons'], self.shrink_scale) # The delta image is obtained by subtracting at the complex image, not the real valued image. delta_image = complex_abs(targets['cmg_targets'] - recons['cmg_recons']) delta_img_grid = make_img_grid(delta_image, self.shrink_scale) kspace_recon_grid = make_k_grid(recons['kspace_recons'], self.smoothing_factor, self.shrink_scale) self.writer.add_image(f'{mode} k-space Recons/{step}', kspace_recon_grid, epoch, dataformats='HW') self.writer.add_image(f'{mode} Image Recons/{step}', img_recon_grid, epoch, dataformats='HW') self.writer.add_image(f'{mode} Delta Image/{step}', delta_img_grid, epoch, dataformats='HW') # Adding RSS images of reconstructions and targets. if 'rss_recons' in recons: recon_rss = standardize_image(recons['rss_recons']) delta_rss = standardize_image(make_rss_slice(delta_image)) self.writer.add_image(f'{mode} RSS Recons/{step}', recon_rss, epoch, dataformats='HW') self.writer.add_image(f'{mode} RSS Delta/{step}', delta_rss, epoch, dataformats='HW') if 'semi_kspace_recons' in recons: semi_kspace_recon_grid = make_k_grid( recons['semi_kspace_recons'], self.smoothing_factor, self.shrink_scale) self.writer.add_image( f'{mode} semi-k-space Recons/{step}', semi_kspace_recon_grid, epoch, dataformats='HW') if epoch == 1: # Maybe add input images too later on. img_target_grid = make_img_grid(targets['img_targets'], self.shrink_scale) kspace_target_grid = make_k_grid(targets['kspace_targets'], self.smoothing_factor, self.shrink_scale) # Not actually the input but what the input looks like as an image. img_grid = make_img_grid(targets['img_inputs'], self.shrink_scale) self.writer.add_image(f'{mode} k-space Targets/{step}', kspace_target_grid, epoch, dataformats='HW') self.writer.add_image(f'{mode} Image Targets/{step}', img_target_grid, epoch, dataformats='HW') self.writer.add_image(f'{mode} Inputs as Images/{step}', img_grid, epoch, dataformats='HW') if 'rss_targets' in targets: target_rss = standardize_image(targets['rss_targets']) self.writer.add_image(f'{mode} RSS Targets/{step}', target_rss, epoch, dataformats='HW') if 'semi_kspace_targets' in targets: semi_kspace_target_grid = make_k_grid(targets['semi_kspace_targets'], self.smoothing_factor, self.shrink_scale) self.writer.add_image(f'{mode} semi-k-space Targets/{step}', semi_kspace_target_grid, epoch, dataformats='HW')