Skip to content

Commit

Permalink
docs: introduce Craft documentation
Browse files Browse the repository at this point in the history
Signed-off-by: Frederic Boisnard <[email protected]>
  • Loading branch information
fredericboisnard committed Sep 8, 2023
1 parent 3fb0299 commit 6512d24
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ All the attributions method presented below handle both **Classification** and *
| Testing CAV (TCAV) | TF | [Paper](https://arxiv.org/pdf/1711.11279.pdf) |
| (WIP) Robust TCAV | |
| (WIP) Automatic Concept Extraction (ACE) |
| Concept Recursive Activation FacTorization for Explainability (Craft) | TF | [Paper](https://arxiv.org/pdf/2211.10154.pdf) |

| **Feature Visualization** [(Paper)](https://distill.pub/2017/feature-visualization/) | Type of Model | Details |
| :----------------------------------------------------------------------------------- | :------------ | :----------------------------------------------------------------------------------------------------------------- |
Expand Down
50 changes: 50 additions & 0 deletions docs/api/concepts/craft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# CRAFT

CRAFT or Concept Recursive Activation FacTorization for Explainability is a method for automatically extracting human-interpretable concepts from deep networks.

This concept activations factorization method aims to explain a pre-trained model's decisions both on a per-class and per-image basis by highlighting both "what" the model saw and “where” it saw it.

It is made up from 3 ingredients:
1. a method to recursively decompose concepts into sub-concepts
2. a method to better estimate the importance of extracted concepts
3. a method to use any attribution method to create concept attribution maps, using implicit differentiation

CRAFT requires splitting the model in two parts: $(g, h)$ such that $f(x) = (g \cdot h)(x)$. To put it simply, $g$ is the function that maps our input to the latent space (the penultimate layer of our model), and $h$ is the function that maps this penultimate layer to the output. It is important to note that if the model contains a global average pooling layer, it is strongly recommended to provide CRAFT with the layer before the global average pooling.

!!!warning
Please keep in mind that the activations must be positives (after relu or any positive activation function)


## Example

```python
from xplique.concepts import CraftTf as Craft
from xplique.plots.craft_visualizations import CraftPlot

# cut the model in two parts (as explained in the paper)
# first part is g(.) our 'input_to_latent' model, second part is h(.) our 'latent_to_logit' model
g = tf.keras.Model(model.input, model.layers[-3].output)
h = tf.keras.Model(model.layers[-2].input, model.layers[-1].output)

# Create a Craft concept extractor from these 2 models
craft = Craft(input_to_latent = g,
latent_to_logit = h,
number_of_concepts = 10,
patch_size = 80,
batch_size = 64)

# Use Craft to get the crops (crops), the embedding of the crops (crops_u), and the concept bank (w)
# 330 is the rabbit class id in imagenet
crops, crops_u, w = craft.fit(images_preprocessed, class_id=rabbit_class)

# Compute Sobol indices to understand which concept matters
importances = craft.estimate_importance(nb_most_important_concepts=5)

# Display those concepts by showing the 10 best crops for each concept
craft.plot_concepts_crops(nb_crops=10)

```

{{xplique.concepts.craft.Craft}}

[^1]: [CRAFT: Concept Recursive Activation FacTorization for Explainability (2023).](https://arxiv.org/pdf/2211.10154.pdf)
Binary file added docs/assets/craft.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,18 @@ We propose some Hands-on tutorials to get familiar with the library and its api:
</a>
</p>

- [**Concepts Methods**: CRAFT: Getting started on Tensorflow](https://colab.research.google.com/drive/1Fk0EObQQfwAtiiFQyClX31HiHgrEzN9_)
<sub> [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Fk0EObQQfwAtiiFQyClX31HiHgrEzN9_) </sub>
, or [on Pytorch](https://colab.research.google.com/drive/1_8l5bwzalKBvFkrv5Lvcph97FtUdd3Wp)
<sub> [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1_8l5bwzalKBvFkrv5Lvcph97FtUdd3Wp) </sub>

<p align="center" width="100%">
<a href="https://colab.research.google.com/drive/1iuEz46ZjgG97vTBH8p-vod3y14UETvVE">
<img width="95%" src="./assets/craft.jpeg">
</a>
</p>


- [**Feature Visualization**: Getting started](https://colab.research.google.com/drive/1st43K9AH-UL4eZM1S4QdyrOi7Epa5K8v) <sub> [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1st43K9AH-UL4eZM1S4QdyrOi7Epa5K8v) </sub>
- [**Modern Feature Visualization with MaCo**: Getting started](https://colab.research.google.com/drive/1l0kag1o-qMY4NCbWuAwnuzkzd9sf92ic) <sub> [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1l0kag1o-qMY4NCbWuAwnuzkzd9sf92ic) </sub>

Expand Down Expand Up @@ -240,6 +252,7 @@ All the attributions method presented below handle both **Classification** and *
| Testing CAV (TCAV) | TF | [Paper](https://arxiv.org/pdf/1711.11279.pdf) |
| (WIP) Robust TCAV | |
| (WIP) Automatic Concept Extraction (ACE) |
| Concept Recursive Activation FacTorization for Explainability (Craft) | TF | [Paper](https://arxiv.org/pdf/2211.10154.pdf) |

| **Feature Visualization** [(Paper)](https://distill.pub/2017/feature-visualization/) | Type of Model | Details |
| :----------------------------------------------------------------------------------- | :------------ | :----------------------------------------------------------------------------------------------------------------- |
Expand Down
5 changes: 4 additions & 1 deletion docs/tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ Here is the lists of the availables tutorial for now:

## Concepts extraction

**WIP**
| Category | **Tutorial Name** | Notebook |
|:------------- | :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| CRAFT | CRAFT Tensorflow | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Fk0EObQQfwAtiiFQyClX31HiHgrEzN9_) |
| CRAFT | CRAFT Pytorch | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1_8l5bwzalKBvFkrv5Lvcph97FtUdd3Wp) |

## Features Visualizations

Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ nav:
- Concept based:
- Cav: api/concepts/cav.md
- Tcav: api/concepts/tcav.md
- Craft: apt/concepts/craft.md
- Feature visualization:
- Modern Feature Visualization (MaCo): api/feature_viz/maco.md
- Feature visualization: api/feature_viz/feature_viz.md
Expand Down

0 comments on commit 6512d24

Please sign in to comment.