An open API service indexing awesome lists of open source software.

https://github.com/ieee8023/latentshift

A method to generate counterfactuals
https://github.com/ieee8023/latentshift

Last synced: 5 months ago
JSON representation

A method to generate counterfactuals

Awesome Lists containing this project

README

        

# Latent Shift - A Simple Autoencoder Approach to Counterfactual Generation

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ieee8023/latentshift/blob/main/example.ipynb)

# The idea

Read the paper about Latent Shift: https://arxiv.org/abs/2102.09475

Watch a video: https://www.youtube.com/watch?v=1fxSDP8DheI

Read the paper about Counterfactual Alignment: https://arxiv.org/abs/2312.02186

The main diagram:
![latentshift.gif](docs/latentshift.gif)

## Animations/GIFs

| Smiling | Arched Eyebrows|
| ----------- | ----------- |
| | |

|Mouth Slightly Open | Young |
| ----------- | ----------- |
| | |

# Generating a transition sequence

For a predicting of `smiling`

![gen_sequence.png](docs/gen_sequence.png)

# Multiple different targets


# Comparison to traditional methods

For a predicting of `pointy_nose`

![comparison.png](docs/comparison.png)

# Getting Started

```bash
$pip install latentshift
````

```python3
import latentshift
# Load classifier and autoencoder
model = latentshift.classifiers.FaceAttribute(download=True)
ae = latentshift.autoencoders.VQGAN(weights="faceshq", download=True)

# Load image
input = torch.randn(1, 3, 1024, 1024)

# Defining Latent Shift module
attr = captum.attr.LatentShift(model, ae)

# Computes counterfactual for class 3.
output = attr.attribute(input, target=3)
```