Awesome
The code here is to reproduce the analysis and experiments of the paper:
Ashkan Khakzar, Soroosh Baselizadeh, Saurabh Khanduja, Christian Rupprecht, Seong Tae Kim, Nassir Navab; Neural Response Interpretation Through the Lens of Critical Pathways; Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2021, pp. 13528-13538
Paper
The paper and its supplementary materials are both available on CVPR2021 Open Access and on arXiv.
Website
You can visit The Project's Website for more details and materials.
Citation
Please cite the work using the below BibTeX (also available on the Open Access link above)
@InProceedings{Khakzar_2021_CVPR,
author = {Khakzar, Ashkan and Baselizadeh, Soroosh and Khanduja, Saurabh and Rupprecht, Christian and Kim, Seong Tae and Navab, Nassir},
title = {Neural Response Interpretation Through the Lens of Critical Pathways},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2021},
pages = {13528-13538}
}
or this one (available on arXiv):
@article{Khakzar2021NeuralRI,
title={Neural Response Interpretation through the Lens of Critical Pathways},
author={Ashkan Khakzar and Soroosh Baselizadeh and Saurabh Khanduja and C. Rupprecht and Seong Tae Kim and N. Navab},
journal={ArXiv},
year={2021},
volume={abs/2103.16886}
}
Critical Pathways Analysis
The explained critical pathways extraction methods [NeuronIntGrad, NeuronMCT, Greedy, Random, DGR] are implemented in the src/Pruner.py
file.
You can find examples of how to use them in path_analysis.py
file.
For example, to get the critical pathways by NeuronMCT method:
pruner = Pruner.Pruner(model, data, device)
pruner.prune_neuron_mct(model_sparsity_threshold, debug=False)
path = pruner.pruned_activations_mask
pruner.remove_handles()
The path_analysis.py
contains all the analyses for the experiments done to analyze different methods by which we derive critical pathways in the paper.
For Pathway Decoding experiments see path_decoding/path_decoding.py
. The implementation is based on the Lucent package.
Saliency Map Generation (Feature Attribution) via PathwayGrad
Getting saliency maps by using different methods in the paper is mostly alike getting the paths (prev section). For example, to get the saliency map of an input based on the NeuronMCT method:
pruner = Pruner.Pruner(model, data, device)
pruner.prune_neuron_mct(model_sparsity_threshold, debug=False)
saliency = pruner.generate_saliency(make_single_channel=make_single_channel)
pruner.remove_handles()
Sanity Checks
The sanity checks have been implemented in PyTorch in the sanity_checks
folder. See sanity_checks/sanity_checks.py
for the details. To run, just use this file.
ROAR and LeRF
For our implementation of these benchmarks please see ROAR and LeRF. We believe our PyTorch implementation of ROAR can highly benefit the community.
Questions
Please kindly raise an issue or contact us via email.