GithubHelp home page GithubHelp logo

anguyen8 / visual-correspondence-xai Goto Github PK

View Code? Open in Web Editor NEW
40.0 4.0 1.0 18.63 MB

Official code for NeurIPS 2022 paper https://arxiv.org/abs/2208.00780 Visual correspondence-based explanations improve AI robustness and human-AI team accuracy

License: MIT License

Python 3.99% Shell 0.06% Jupyter Notebook 95.94% Lua 0.01%
xai explainable-ai interpretability correspondence-analysis

visual-correspondence-xai's Introduction

Visual correspondence-based explanations improve AI robustness and human-AI team accuracy

by Giang Nguyen *, Mohammad R. Taesiri *, and Anh Nguyen.

* equal contribution.

Paper Conference Conference Conference Hugging Face Spaces Demo

tldr: We propose two architectures of interpretable image classifiers that first explain, and then predict by harnessing the visual correspondences between a query image and exemplars. Our models improve on several out-of-distribution (OOD) ImageNet datasets while achieving competitive performance on ImageNet than the black-box baselines (e.g. ImageNet-pretrained ResNet-50). On a large-scale human study (∼60 users per method per dataset) on ImageNet and CUB, our correspondence-based explanations led to human-alone image classification accuracy and human-AI team accuracy that are consistently better than that of kNN. We show that it is possible to achieve complementary human-AI team accuracy (i.e., that is higher than either AI-alone or human-alone), on ImageNet and CUB.

⭐ Follow-up work: Interactive demo of CHM-Corr++ (image classifiers that make predictions based on human-guided patch attention)

If you use this software, please consider citing:

@inproceedings{taesirivisual,
  title={Visual correspondence-based explanations improve AI robustness and human-AI team accuracy},
  author={Taesiri, Mohammad Reza and Nguyen, Giang and Nguyen, Anh},
  booktitle={Advances in Neural Information Processing Systems}
}

1. Requirements

python=3.9.7
pytorch=1.10.0
torchvision=0.11.1
numpy=1.21.2
pip install tqdm
pip install seaborn

Since each classifier was developed independently, you can also run conda env create -f [classifier_name]/env.yml to create the virtual environment before running.

2. How to run

2.1 Reproduce classifiers' performance

To reproduce the accuracy of image classifiers in Table 1, please run:

cd [classifier_name]
sh test.sh

For the bird classification (CUB dataset) using iNaturalist pretrained ResNet-50 please refere to ResNet-50/README.md

2.2. Reproduce performance on a specific dataset

2.2.1. For the EMD-Corr classifier

To reproduce the accuracy of image classifiers on a specific dataset (e.g. CUB200) in Table 1, please run:

cd [classifier_name]
sh run -d [DATASET] -v False -i [True/False]

To see available options, run:

sh run.sh ?  # 

For example, running EMD-Corr for CUB-200 using iNaturalist-pretrained ResNet-50 feature.

sh run.sh -d cub200_test -v False -i True

2.2.2. For the CHM-Corr classifier

For the CHM-Corr classifier, a detailed description is available in CHM-Corr/README.md.

2.3. Visualize correspondence-based explanations

2.3.1. Visualize EMD-Corr explanations

To visualize correspondence-based explanations by EMD-Corr, just simply run:

cd EMD-Corr/
# Turn the visualization (v) option to True
sh run -d [DATASET] -v True -i [True/False]

For example, running on CUB-200 bird images:

sh run.sh -d cub200_test -v True -i True

then we get:

  • The first row is the exemplars retrieved by kNN while the second one shows the re-ranked exemplars by EMD-Corr classifier. The third row (query) and the fourth row (EMD-Corr exemplars) show how the query matches each of the exemplars given by comparing the same-color boxes (e.g. face to face, neck to neck). Both kNN and EMD-Corr correctly classified the bird.

If you want to visualize explanations for general images from ImageNet, run:

# Now turn the visualization (v) option to True and use torchvision ImageNet-pretrained ResNet-50 feature (i - False)
sh run.sh -d imagenet1k-val -v True -i False

  • EMD-Corr matches these panda pairs by looking at facial features.

2.3.2. Visualize CHM-Corr explanations (CHM-Corr interactive demo)

We provide a notebook to generate a visualization of the CHM-Corr classifier's output. Please first run CHM-Corr using the guide provided in CHM-Corr/README.md, then use CHM-Corr/src/visualization/visualization.ipynb to generate the visualizations.

2.4. Try it yourself

2.4.1. Instructions for EMD-Corr

  • Step 1: Run kNN to get the shortlisted exemplars.
  • Step 2: Re-rank the exemplars using EMD patch-wise comparison.
# EMD-Corr distance calculation between query vs. K exemplars
# fb = fb_center = tensor containing query (first row) + K exemplar embeddings. e.g. 51x2048x7x7 where conv4_dim=2048x7x7.
# q2q_att and g2q_att is the correlation maps of the query (q) to the exemplars (g) or vice versa. 
# opt_plan is the optimal transport plan used for visualization.
from emd_utils import EMDFunctions
emd_distance, q2g_att, g2q_att, opt_plan = EMDFunctions.compute_emd_distance(K=50, fb_center, fb, use_uniform=False, num_patch=5)
  • Step 3: Perform majority vote on the re-ranked exemplars to get the top-1 label.

2.4.2. Instructions for CHM-Corr

For the CHM-Corr classifier, a detailed description is available in CHM-Corr/README.md.

3. Human study (XAI human evaluation)

3.1. ImageNet clean data for human study

We filtered out ImageNet validation images

  • having no labels based on ImageNetReaL labels.

  • having duplicates with the ImageNet training set.

  • having grayscale color or low resolution (i.e. H or W < 224).

to get 44,424 clean images as described in Sec. 2.3.2 of our paper. We share the IDs of these clean images in a text file.

3.2. Human study interface

We recorded a video to walk you through the human study interface (Introduction → Training → Validation → Test) — described in Sec. 2.3.3. You may also notice the tricks we applied in the experiments to improve crowdsourcing data quality as mentioned by BeOnline.

We hope sharing all screens we carefully designed could help future research perform human studies easier.

If you wanna try out the UI on your device or get more materials to replicate the experiment pipeline, please contact us.

We also share the training screens and test trials for both human studies on Google Drive.

3.3. Human-study Huggingface demo for pilot studies

We also made an experimental UI for internal testing, which can be accessed on the Huggingface spaces.

Hugging Face Spaces Hugging Face Spaces

4. Acknowledgment

  • The CHM-Corr classifier relies on CHMNet to find correspondence points between two images.
  • The code for feature extraction using iNaturalist pretraind ResNet-50 was kindly provided by Jon Donnelly

5. License

MIT

visual-correspondence-xai's People

Contributors

anguyen8 avatar giangnguyen2412 avatar taesiri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ngthanhtin

visual-correspondence-xai's Issues

Generating adversarial patch dataset

cd datasets/adversarial-patch/
python make_patch.py --cuda --epochs 1 --patch_size 0.05 --max_count 500 --netClassifier resnet50 --patch_type circle --train_size 50000 --test_size 0 --image_size 240 --outf output_imgs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.