Skip to content

Commit

Permalink
Add heatmap overlays on Explanations (#10)
Browse files Browse the repository at this point in the history
* add `heatmap_overlay` method on XAIBase's `Explanation` type

* Update tests and references
  • Loading branch information
adrhill authored Feb 20, 2024
1 parent 6401798 commit 4c8909a
Show file tree
Hide file tree
Showing 179 changed files with 253 additions and 202 deletions.
44 changes: 41 additions & 3 deletions src/overlay.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
const AbstractImage{T<:Colorant} = AbstractMatrix{T}

const DEFAULT_OVERLAY_ALPHA = 0.6
const DEFAULT_RESIZE_METHOD = Lanczos(1)

"""
heatmap_overlay(val, img)
heatmap_overlay(val, image)
Create a heatmap from `val` and overlay it on top of an image.
Assumes 4D input array following the WHCN convention
Expand All @@ -18,10 +20,21 @@ Refer to the [`heatmap`](@ref) documentation for more information.
"""
function heatmap_overlay(
val::AbstractArray{T,N},
im::AbstractMatrix{<:Colorant};
im::AbstractImage;
alpha=DEFAULT_OVERLAY_ALPHA,
resize_method=DEFAULT_RESIZE_METHOD,
heatmap_kwargs...,
) where {T,N}
options = HeatmapOptions(; heatmap_kwargs...)
return heatmap_overlay(val, im, alpha, resize_method, options)
end

function heatmap_overlay(
val::AbstractArray{T,N},
im::AbstractImage,
alpha::Real,
resize_method,
options::HeatmapOptions,
) where {T,N}
N != 4 && throw(InputDimensionError)
if size(val, 4) != 1
Expand All @@ -35,7 +48,6 @@ function heatmap_overlay(
throw(ArgumentError("alpha must be in the range [0, 1]"))
end

options = HeatmapOptions(; heatmap_kwargs...)
hm = heatmap(val, options)
hmsize = size(hm)
imsize = size(im)
Expand All @@ -44,3 +56,29 @@ function heatmap_overlay(
end
return im * (1 - alpha) + hm * alpha
end

#=================#
# XAIBase support #
#=================#

"""
heatmap_overlay(expl::Explanation, image)
Visualize `Explanation` from XAIBase as a vision heatmap and overlay it on top of an image.
Assumes WHCN convention (width, height, channels, batch dimension) for `explanation.val`
and batch size 1.
This will use the default heatmapping style for the given type of explanation.
Refer to the [`heatmap`](@ref) and [`heatmap_overlay`](@ref) documentation
for a list of supported keyword arguments that can be used to override the defaults.
"""
function heatmap_overlay(
expl::Explanation,
im::AbstractImage;
alpha=DEFAULT_OVERLAY_ALPHA,
resize_method=DEFAULT_RESIZE_METHOD,
heatmap_kwargs...,
)
options = HeatmapOptions(expl; heatmap_kwargs...)
return heatmap_overlay(expl.val, im, alpha, resize_method, options)
end
1 change: 1 addition & 0 deletions test/references/grays_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_abssum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_abssum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_maxabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_maxabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_norm_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_sum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_sum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_sumabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/grays_sumabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
File renamed without changes.
1 change: 1 addition & 0 deletions test/references/heatmap/jet_abssum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_abssum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_maxabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_maxabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_norm_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_sum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_sum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_sumabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/heatmap/jet_sumabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions test/references/jet_sum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 0 additions & 1 deletion test/references/maxabs_centered_seismic.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_centered_grays.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_centered_jet.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_centered_seismic.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_extrema.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_extrema_2.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_extrema_grays.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_extrema_jet.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/norm_extrema_seismic.txt

This file was deleted.

1 change: 1 addition & 0 deletions test/references/overlay/grays_abssum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_abssum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_maxabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_maxabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_norm_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_sum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_sum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_sumabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/grays_sumabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
File renamed without changes.
1 change: 1 addition & 0 deletions test/references/overlay/jet_abssum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_abssum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_maxabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_maxabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_norm_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_sum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_sum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_sumabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 1 addition & 0 deletions test/references/overlay/jet_sumabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
▀▀
1 change: 0 additions & 1 deletion test/references/overlay_maxabs_centered_seismic.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_maxabs_extrema_seismic.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_centered_grays.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_centered_jet.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_centered_seismic.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_extrema_grays.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_extrema_jet.txt

This file was deleted.

1 change: 0 additions & 1 deletion test/references/overlay_norm_extrema_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_maxabs_centered_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_maxabs_centered_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_maxabs_extrema_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_maxabs_extrema_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_norm_centered_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_norm_centered_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_norm_extrema_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_norm_extrema_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_centered_grays.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_centered_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_centered_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_extrema_grays.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_extrema_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sum_extrema_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_centered_grays.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_centered_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_centered_seismic.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_extrema_grays.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_extrema_jet.txt

This file was deleted.

3 changes: 0 additions & 3 deletions test/references/overlay_rescale_sumabs_extrema_seismic.txt

This file was deleted.

3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_abssum_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_abssum_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_maxabs_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_maxabs_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_norm_centered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
3 changes: 3 additions & 0 deletions test/references/overlay_rescaled/grays_norm_extrema.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
▀▀▀▀▀▀
▀▀▀▀▀▀
▀▀▀▀▀▀
Loading

0 comments on commit 4c8909a

Please sign in to comment.