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 <frederic.boisnard@irt-saintexupery.com>
  • Loading branch information
fredericboisnard committed Sep 8, 2023
1 parent 9c7ea58 commit a88c2b7
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ TF : Tensorflow compatible
| 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) |

TF : Tensorflow compatible

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
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 12 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,17 @@ Finally, the _Metrics_ module covers the current metrics used in explainability.
</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/1Fk0EObQQfwAtiiFQyClX31HiHgrEzN9_">
<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>

- [**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>
Expand Down Expand Up @@ -267,7 +278,7 @@ Now that Xplique is installed, here are 4 basic examples of what you can do with
| 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) |
TF : Tensorflow compatible

??? abstract "Table of Feature Visualization methods available"
Expand Down
5 changes: 4 additions & 1 deletion docs/tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,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 @@ -39,6 +39,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 a88c2b7

Please sign in to comment.