# CLIP Explainability This repo contains the code for the [CLIP Explainability project](CLIP_Explainability.pdf). In this project, we conduct an in-depth study of CLIP’s learned image and text representations using saliency map visualization. We propose a modification to the existing saliency visualization method that improves its performance as shown by our qualitative evaluations. We then use this method to study CLIP’s ability in capturing similarities and dissimilarities between an input image and targets belonging to different domains including image, text, and emotion. ## Setup To install the required libraries run the following command: ``` pip install -r requirements.txt ``` ## Organization [code](code) directory contains - the implementation of saliency visualization methods: for [ViT](code/vit_cam.py) and [ResNet](code/rn_cam.py)-based CLIP - [GradCAM](code/pytorch-grad-cam) implementation based on [pytorch-grad-cam](https://github.com/jacobgil/pytorch-grad-cam/tree/e93f41104e20134e5feac2a660b343437f601ad0) slightly modified to adapt to CLIP. - A re-implementation of CLIP taken from [Transformer-MM-Explainability](https://github.com/hila-chefer/Transformer-MM-Explainability) repo that keeps tack of attention maps and gradients: [clip_.py](code/clip_.py) - [Notebooks](code/notebooks/) for the experiments explained in the report [Images](Images) contains images used in the experiments. [results](results) contains the results obtained from the experiments. Any result generated by the notebooks will be stored in this directory. ## Experiments | Notebook Name | Experiment | Note | | ------------- | ------------- | ------------- | | [vit_block_vis](code/notebooks/vit_block_vis.ipynb) | Layer-wise Attention Visualization | - | | [saliency_method_compare](code/notebooks/saliency_method_compare.ipynb) | ViT Explainability Method Comparison | Qualitative comparison | | [affectnet_emotions](code/notebooks/affectnet_emotions.ipynb) | ViT Explainability Method Comparison | Bias comparison; you need to download a sample of the AffectNet dataset [here](https://drive.google.com/drive/u/1/folders/11RusPab71wGw6LTd9pUnY1Gz3JSH-N_N) and place it in [Images](Images). | | [pos_neg_vis](code/notebooks/pos_neg_vis.ipynb) | Positive vs Negative Saliency | - | | [artemis_emotions](code/notebooks/artemis_emotions.ipynb) | Emotion-Image Similarity | you need to download the pre-processed WikiArt images [here](https://drive.google.com/drive/u/1/folders/11RusPab71wGw6LTd9pUnY1Gz3JSH-N_N) and place it in [Images](Images). Note that this notebook chooses images randomly so the results may not be the same as the ones in the report. | | [perword_vis](code/notebooks/perword_vis.ipynb) | Word-Wise Saliency Visualization | | [global_vis](code/notebooks/global_vis.ipynb) | - | can be used to visualize saliency maps for ViT and ResNet-based CLIP.|