mahmoodlab/CLAM

Heatmaps are patchy and not smooth

rohith2011 opened this issue · 1 comments

I have been using the tif images to create the heatmaps for my images, Below is the configuration that I am using.

exp_arguments:
  # number of classes
  n_classes: 2
  # name tag for saving generated figures and assets
  save_exp_code: HEATMAP_OUTPUT 
  # where to save raw asset files
  raw_save_dir: heatmaps/heatmap_raw_results
  # where to save final heatmaps
  production_save_dir: heatmaps/heatmap_production_results
  batch_size: 256
data_arguments: 
  # where is data stored; can be a single str path or a dictionary of key, data_dir mapping
  data_dir: heatmaps/demo/slides/
  # column name for key in data_dir (if a dict mapping is used)
  data_dir_key: source
  # csv list containing slide_ids (can additionally have seg/patch paramters, class labels, etc.)
  process_list: heatmap_demo_dataset.csv
  # preset file for segmentation/patching
  preset: presets/bwh_biopsy.csv
  # file extention for slides
  slide_ext: .tif
  # label dictionary for str: interger mapping (optional)
  label_dict:
    LUAD: 0
    LSCC: 1                        
patching_arguments:
  # arguments for patching
  patch_size: 1
  overlap: 0.1
  patch_level: 0
  custom_downsample: 1
encoder_arguments:
  # arguments for the pretrained encoder model
  model_name: resnet50_trunc # currently support: resnet50_trunc, uni_v1, conch_v1
  target_img_size: 224 # resize images to this size before feeding to encoder
model_arguments: 
  # arguments for initializing model from checkpoint
  ckpt_path: heatmaps/demo/ckpts/s_0_checkpoint.pt
  model_type: clam_sb # see utils/eval_utils/
  initiate_fn: initiate_model # see utils/eval_utils/
  model_size: small
  drop_out: 0.
  embed_dim: 1024
heatmap_arguments:
  # downsample at which to visualize heatmap (-1 refers to downsample closest to 32x downsample)
  vis_level: 1
  # transparency for overlaying heatmap on background (0: background only, 1: foreground only)
  alpha: 0.4
  # whether to use a blank canvas instead of original slide
  blank_canvas: false
  # whether to also save the original H&E image
  save_orig: true
  # file extension for saving heatmap/original image
  save_ext: jpg
  # whether to calculate percentile scores in reference to the set of non-overlapping patches
  use_ref_scores: true
  # whether to use gaussian blur for further smoothing
  blur: false
  # whether to shift the 4 default corner points for checking if a patch is inside a foreground contour
  use_center_shift: true
  # whether to only compute heatmap for ROI specified by x1, x2, y1, y2
  use_roi: false 
  # whether to calculate heatmap with specified overlap (by default, coarse heatmap without overlap is always calculated)
  calc_heatmap: true
  # whether to binarize attention scores
  binarize: false
  # binarization threshold: (0, 1)
  binary_thresh: -1
  # factor for downscaling the heatmap before final dispaly
  custom_downsample: 1
  cmap: jet
sample_arguments:
  samples:
    - name: "topk_high_attention"
      sample: true
      seed: 1
      k: 15 # save top-k patches
      mode: topk

And here I tried to change the following settings majorly - patch_size, overlap, patch_level, blur.

But still the heatmap output is like patches insted of the smooth heatmaps.

Any help and insights on how to get a smooth heatmap would be greatly appriciated.

Thanks.

@rohith2011 I had the same issue before during my work, try to change the blur: true in your config it will make further smoothing to your output. If possible increase your overlap size, the optimal would be ranging from 0.3 - 0.5. And also for futher info look into this Supplementary Figure 4. Attention heatmap visualization using varying degrees of overlap.This would do the job perfectly.