├── .gitignore ├── LICENSE ├── README.md ├── docs ├── 0-densenet201-deconvnet-bull_mastiff.png ├── 0-densenet201-deconvnet-tabby.png ├── 0-densenet201-deconvnet-tiger_cat.png ├── 0-densenet201-gradcam-features-bull_mastiff.png ├── 0-densenet201-gradcam-features-tabby.png ├── 0-densenet201-gradcam-features-tiger_cat.png ├── 0-densenet201-guided-bull_mastiff.png ├── 0-densenet201-guided-tabby.png ├── 0-densenet201-guided-tiger_cat.png ├── 0-densenet201-guided_gradcam-features-bull_mastiff.png ├── 0-densenet201-guided_gradcam-features-tabby.png ├── 0-densenet201-guided_gradcam-features-tiger_cat.png ├── 0-densenet201-vanilla-bull_mastiff.png ├── 0-densenet201-vanilla-tabby.png ├── 0-densenet201-vanilla-tiger_cat.png ├── 0-resnet152-deconvnet-boxer.png ├── 0-resnet152-deconvnet-bull_mastiff.png ├── 0-resnet152-deconvnet-tiger_cat.png ├── 0-resnet152-gradcam-layer1-bull_mastiff.png ├── 0-resnet152-gradcam-layer2-bull_mastiff.png ├── 0-resnet152-gradcam-layer3-bull_mastiff.png ├── 0-resnet152-gradcam-layer4-boxer.png ├── 0-resnet152-gradcam-layer4-bull_mastiff.png ├── 0-resnet152-gradcam-layer4-tiger_cat.png ├── 0-resnet152-gradcam-relu-bull_mastiff.png ├── 0-resnet152-guided-boxer.png ├── 0-resnet152-guided-bull_mastiff.png ├── 0-resnet152-guided-tiger_cat.png ├── 0-resnet152-guided_gradcam-layer4-boxer.png ├── 0-resnet152-guided_gradcam-layer4-bull_mastiff.png ├── 0-resnet152-guided_gradcam-layer4-tiger_cat.png ├── 0-resnet152-sensitivity-10-boxer.png ├── 0-resnet152-sensitivity-10-bull_mastiff.png ├── 0-resnet152-sensitivity-10-tiger_cat.png ├── 0-resnet152-sensitivity-15-boxer.png ├── 0-resnet152-sensitivity-15-bull_mastiff.png ├── 0-resnet152-sensitivity-15-tiger_cat.png ├── 0-resnet152-sensitivity-25-boxer.png ├── 0-resnet152-sensitivity-25-bull_mastiff.png ├── 0-resnet152-sensitivity-25-tiger_cat.png ├── 0-resnet152-sensitivity-35-boxer.png ├── 0-resnet152-sensitivity-35-bull_mastiff.png ├── 0-resnet152-sensitivity-35-tiger_cat.png ├── 0-resnet152-sensitivity-45-boxer.png ├── 0-resnet152-sensitivity-45-bull_mastiff.png ├── 0-resnet152-sensitivity-45-tiger_cat.png ├── 0-resnet152-sensitivity-90-boxer.png ├── 0-resnet152-sensitivity-90-bull_mastiff.png ├── 0-resnet152-sensitivity-90-tiger_cat.png ├── 0-resnet152-vanilla-boxer.png ├── 0-resnet152-vanilla-bull_mastiff.png ├── 0-resnet152-vanilla-tiger_cat.png ├── 0-squeezenet1_1-deconvnet-Great_Dane.png ├── 0-squeezenet1_1-deconvnet-boxer.png ├── 0-squeezenet1_1-deconvnet-bull_mastiff.png ├── 0-squeezenet1_1-gradcam-features-Great_Dane.png ├── 0-squeezenet1_1-gradcam-features-boxer.png ├── 0-squeezenet1_1-gradcam-features-bull_mastiff.png ├── 0-squeezenet1_1-guided-Great_Dane.png ├── 0-squeezenet1_1-guided-boxer.png ├── 0-squeezenet1_1-guided-bull_mastiff.png ├── 0-squeezenet1_1-guided_gradcam-features-Great_Dane.png ├── 0-squeezenet1_1-guided_gradcam-features-boxer.png ├── 0-squeezenet1_1-guided_gradcam-features-bull_mastiff.png ├── 0-squeezenet1_1-vanilla-Great_Dane.png ├── 0-squeezenet1_1-vanilla-boxer.png ├── 0-squeezenet1_1-vanilla-bull_mastiff.png ├── 0-vgg19-deconvnet-French_bulldog.png ├── 0-vgg19-deconvnet-bull_mastiff.png ├── 0-vgg19-deconvnet-pug.png ├── 0-vgg19-gradcam-features-French_bulldog.png ├── 0-vgg19-gradcam-features-bull_mastiff.png ├── 0-vgg19-gradcam-features-pug.png ├── 0-vgg19-guided-French_bulldog.png ├── 0-vgg19-guided-bull_mastiff.png ├── 0-vgg19-guided-pug.png ├── 0-vgg19-guided_gradcam-features-French_bulldog.png ├── 0-vgg19-guided_gradcam-features-bull_mastiff.png ├── 0-vgg19-guided_gradcam-features-pug.png ├── 0-vgg19-vanilla-French_bulldog.png ├── 0-vgg19-vanilla-bull_mastiff.png ├── 0-vgg19-vanilla-pug.png ├── 0-vgg19_bn-deconvnet-boxer.png ├── 0-vgg19_bn-deconvnet-bull_mastiff.png ├── 0-vgg19_bn-deconvnet-tabby.png ├── 0-vgg19_bn-gradcam-features-boxer.png ├── 0-vgg19_bn-gradcam-features-bull_mastiff.png ├── 0-vgg19_bn-gradcam-features-tabby.png ├── 0-vgg19_bn-guided-boxer.png ├── 0-vgg19_bn-guided-bull_mastiff.png ├── 0-vgg19_bn-guided-tabby.png ├── 0-vgg19_bn-guided_gradcam-features-boxer.png ├── 0-vgg19_bn-guided_gradcam-features-bull_mastiff.png ├── 0-vgg19_bn-guided_gradcam-features-tabby.png ├── 0-vgg19_bn-vanilla-boxer.png ├── 0-vgg19_bn-vanilla-bull_mastiff.png ├── 0-vgg19_bn-vanilla-tabby.png ├── 0-xception_v1-gradcam-exit_flow.conv4-boxer.png ├── 0-xception_v1-gradcam-exit_flow.conv4-bull_mastiff.png └── 0-xception_v1-gradcam-exit_flow.conv4-tiger_cat.png ├── grad_cam.py ├── main.py ├── results └── .gitignore └── samples ├── cat_dog.png ├── cat_dog_original.jpg ├── synset_words.txt └── vegetables.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | 103 | .vscode 104 | .DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Kazuto Nakashima 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Grad-CAM with PyTorch 2 | 3 | PyTorch implementation of Grad-CAM (Gradient-weighted Class Activation Mapping) [[1](##references)] in image classification. This repository also contains implementations of vanilla backpropagation, guided backpropagation [[2](##references)], deconvnet [[2](##references)], and guided Grad-CAM [[1](##references)], occlusion sensitivity maps [[3](##references)]. 4 | 5 | ## Requirements 6 | 7 | Python 2.7 / 3.+ 8 | 9 | ```bash 10 | $ pip install click opencv-python matplotlib tqdm numpy 11 | $ pip install "torch>=0.4.1" torchvision 12 | ``` 13 | 14 | ## Basic usage 15 | 16 | ```sh 17 | python main.py [DEMO_ID] [OPTIONS] 18 | ``` 19 | 20 | Demo ID: 21 | 22 | * [`demo1`](#demo-1) 23 | * [`demo2`](#demo-2) 24 | * [`demo3`](#demo-3) 25 | 26 | Options: 27 | 28 | * ```-i```, ```--image-paths```: image path, which can be provided multiple times (required) 29 | * ```-a```, ```--arch```: a model name from ```torchvision.models```, e.g. "resnet152" (required) 30 | * ```-t```, ```--target-layer```: a module name to be visualized, e.g. "layer4.2" (required) 31 | * ```-k```, ```--topk```: the number of classes to generate (default: 3) 32 | * ```-o```, ```--output-dir```: a directory to store results (default: ./results) 33 | * ```--cuda/--cpu```: GPU or CPU 34 | 35 | The command above generates, for top *k* classes: 36 | 37 | * Gradients by vanilla backpropagation 38 | * Gradients by guided backpropagation [[2](##references)] 39 | * Gradients by deconvnet [[2](##references)] 40 | * Grad-CAM [[1](##references)] 41 | * Guided Grad-CAM [[1](##references)] 42 | 43 | The guided-* do not support `F.relu` but only `nn.ReLU` in this codes. 44 | For instance, off-the-shelf `inception_v3` cannot cut off negative gradients during backward operation (issue #2). 45 | 46 | ## Demo 1 47 | 48 | ![](samples/cat_dog.png) 49 | 50 | Generate all kinds of visualization maps given a torchvision model, a target layer, and images. 51 | 52 | ```bash 53 | python main.py demo1 -a resnet152 -t layer4 \ 54 | -i samples/cat_dog.png -i samples/vegetables.jpg # You can add more images 55 | ``` 56 | 57 | | Predicted class | #1 boxer | #2 bull mastiff | #3 tiger cat | 58 | | :----------------------------------------: | :---------------------------------------------------: | :----------------------------------------------------------: | :-------------------------------------------------------: | 59 | | Grad-CAM [[1](##references)] | ![](docs/0-resnet152-gradcam-layer4-boxer.png) | ![](docs/0-resnet152-gradcam-layer4-bull_mastiff.png) | ![](docs/0-resnet152-gradcam-layer4-tiger_cat.png) | 60 | | Vanilla backpropagation | ![](docs/0-resnet152-vanilla-boxer.png) | ![](docs/0-resnet152-vanilla-bull_mastiff.png) | ![](docs/0-resnet152-vanilla-tiger_cat.png) | 61 | | "Deconvnet" [[2](##references)] | ![](docs/0-resnet152-deconvnet-boxer.png) | ![](docs/0-resnet152-deconvnet-bull_mastiff.png) | ![](docs/0-resnet152-deconvnet-tiger_cat.png) | 62 | | Guided backpropagation [[2](##references)] | ![](docs/0-resnet152-guided-boxer.png) | ![](docs/0-resnet152-guided-bull_mastiff.png) | ![](docs/0-resnet152-guided-tiger_cat.png) | 63 | | Guided Grad-CAM [[1](##references)] | ![](docs/0-resnet152-guided_gradcam-layer4-boxer.png) | ![](docs/0-resnet152-guided_gradcam-layer4-bull_mastiff.png) | ![](docs/0-resnet152-guided_gradcam-layer4-tiger_cat.png) | 64 | 65 | Grad-CAM with different models for "bull mastiff" class 66 | 67 | | Model | ```resnet152``` | ```vgg19``` | ```vgg19_bn``` | ```densenet201``` | ```squeezenet1_1``` | 68 | | :--------------------------: | :---------------------------------------------------: | :-------------------------------------------------: | :----------------------------------------------------: | :-------------------------------------------------------: | :---------------------------------------------------------: | 69 | | Layer | ```layer4``` | ```features``` | ```features``` | ```features``` | ```features``` | 70 | | Grad-CAM [[1](##references)] | ![](docs/0-resnet152-gradcam-layer4-bull_mastiff.png) | ![](docs/0-vgg19-gradcam-features-bull_mastiff.png) | ![](docs/0-vgg19_bn-gradcam-features-bull_mastiff.png) | ![](docs/0-densenet201-gradcam-features-bull_mastiff.png) | ![](docs/0-squeezenet1_1-gradcam-features-bull_mastiff.png) | 71 | 72 | ## Demo 2 73 | 74 | Generate Grad-CAM maps for "bull mastiff" class, at different layers of ResNet-152 (hardcoded). 75 | 76 | ```bash 77 | python main.py demo2 -i samples/cat_dog.png 78 | ``` 79 | 80 | | Layer | ```relu``` | ```layer1``` | ```layer2``` | ```layer3``` | ```layer4``` | 81 | | :--------------------------: | :-------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | 82 | | Grad-CAM [[1](##references)] | ![](docs/0-resnet152-gradcam-relu-bull_mastiff.png) | ![](docs/0-resnet152-gradcam-layer1-bull_mastiff.png) | ![](docs/0-resnet152-gradcam-layer2-bull_mastiff.png) | ![](docs/0-resnet152-gradcam-layer3-bull_mastiff.png) | ![](docs/0-resnet152-gradcam-layer4-bull_mastiff.png) | 83 | 84 | ## Demo 3 85 | 86 | Generate the occlusion sensitivity map [[1](##references), [3](##references)] based on logit scores. 87 | The red and blue regions indicate a relative increase and decrease from non-occluded scores respectively: the blue regions are critical! 88 | 89 | ```bash 90 | python main.py demo3 -a resnet152 -i samples/cat_dog.png 91 | ``` 92 | 93 | | Patch size | 10x10 | 15x15 | 25x25 | 35x35 | 45x45 | 90x90 | 94 | | :----------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | :---------------------------------------------------: | 95 | | **"boxer"** sensitivity | ![](docs/0-resnet152-sensitivity-10-boxer.png) | ![](docs/0-resnet152-sensitivity-15-boxer.png) | ![](docs/0-resnet152-sensitivity-25-boxer.png) | ![](docs/0-resnet152-sensitivity-35-boxer.png) | ![](docs/0-resnet152-sensitivity-45-boxer.png) | ![](docs/0-resnet152-sensitivity-90-boxer.png) | 96 | | **"bull mastiff"** sensitivity | ![](docs/0-resnet152-sensitivity-10-bull_mastiff.png) | ![](docs/0-resnet152-sensitivity-15-bull_mastiff.png) | ![](docs/0-resnet152-sensitivity-25-bull_mastiff.png) | ![](docs/0-resnet152-sensitivity-35-bull_mastiff.png) | ![](docs/0-resnet152-sensitivity-45-bull_mastiff.png) | ![](docs/0-resnet152-sensitivity-90-bull_mastiff.png) | 97 | | **"tiger cat"** sensitivity | ![](docs/0-resnet152-sensitivity-10-tiger_cat.png) | ![](docs/0-resnet152-sensitivity-15-tiger_cat.png) | ![](docs/0-resnet152-sensitivity-25-tiger_cat.png) | ![](docs/0-resnet152-sensitivity-35-tiger_cat.png) | ![](docs/0-resnet152-sensitivity-45-tiger_cat.png) | ![](docs/0-resnet152-sensitivity-90-tiger_cat.png) | 98 | 99 | This demo takes much time to compute per-pixel logits. 100 | You can control the resolution by changing sampling stride (`--stride`), or increasing batch size as to fit on your GPUs (`--n-batches`). The model is wrapped with `torch.nn.DataParallel` so that runs on multiple GPUs by default. 101 | 102 | ## References 103 | 104 | 1. R. R. Selvaraju, A. Das, R. Vedantam, M. Cogswell, D. Parikh, and D. Batra. Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization. In *ICCV*, 2017 105 | 2. J. T. Springenberg, A. Dosovitskiy, T. Brox, and M. Riedmiller. Striving for Simplicity: The All Convolutional Net. arXiv, 2014 106 | 3. M. D. Zeiler, R. Fergus. Visualizing and Understanding Convolutional Networks. In *ECCV*, 2013 107 | -------------------------------------------------------------------------------- /docs/0-densenet201-deconvnet-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-deconvnet-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-densenet201-deconvnet-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-deconvnet-tabby.png -------------------------------------------------------------------------------- /docs/0-densenet201-deconvnet-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-deconvnet-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-densenet201-gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-densenet201-gradcam-features-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-gradcam-features-tabby.png -------------------------------------------------------------------------------- /docs/0-densenet201-gradcam-features-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-gradcam-features-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided-tabby.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided_gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided_gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided_gradcam-features-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided_gradcam-features-tabby.png -------------------------------------------------------------------------------- /docs/0-densenet201-guided_gradcam-features-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-guided_gradcam-features-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-densenet201-vanilla-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-vanilla-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-densenet201-vanilla-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-vanilla-tabby.png -------------------------------------------------------------------------------- /docs/0-densenet201-vanilla-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-densenet201-vanilla-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-deconvnet-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-deconvnet-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-deconvnet-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-deconvnet-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-deconvnet-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-deconvnet-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer1-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer1-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer2-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer2-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer3-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer3-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer4-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer4-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer4-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer4-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-layer4-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-layer4-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-gradcam-relu-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-gradcam-relu-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided_gradcam-layer4-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided_gradcam-layer4-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided_gradcam-layer4-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided_gradcam-layer4-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-guided_gradcam-layer4-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-guided_gradcam-layer4-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-10-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-10-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-10-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-10-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-10-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-10-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-15-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-15-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-15-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-15-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-15-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-15-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-25-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-25-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-25-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-25-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-25-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-25-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-35-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-35-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-35-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-35-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-35-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-35-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-45-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-45-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-45-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-45-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-45-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-45-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-90-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-90-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-90-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-90-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-sensitivity-90-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-sensitivity-90-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-resnet152-vanilla-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-vanilla-boxer.png -------------------------------------------------------------------------------- /docs/0-resnet152-vanilla-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-vanilla-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-resnet152-vanilla-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-resnet152-vanilla-tiger_cat.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-deconvnet-Great_Dane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-deconvnet-Great_Dane.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-deconvnet-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-deconvnet-boxer.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-deconvnet-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-deconvnet-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-gradcam-features-Great_Dane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-gradcam-features-Great_Dane.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-gradcam-features-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-gradcam-features-boxer.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided-Great_Dane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided-Great_Dane.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided-boxer.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided_gradcam-features-Great_Dane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided_gradcam-features-Great_Dane.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided_gradcam-features-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided_gradcam-features-boxer.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-guided_gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-guided_gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-vanilla-Great_Dane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-vanilla-Great_Dane.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-vanilla-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-vanilla-boxer.png -------------------------------------------------------------------------------- /docs/0-squeezenet1_1-vanilla-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-squeezenet1_1-vanilla-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-deconvnet-French_bulldog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-deconvnet-French_bulldog.png -------------------------------------------------------------------------------- /docs/0-vgg19-deconvnet-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-deconvnet-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-deconvnet-pug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-deconvnet-pug.png -------------------------------------------------------------------------------- /docs/0-vgg19-gradcam-features-French_bulldog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-gradcam-features-French_bulldog.png -------------------------------------------------------------------------------- /docs/0-vgg19-gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-gradcam-features-pug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-gradcam-features-pug.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided-French_bulldog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided-French_bulldog.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided-pug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided-pug.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided_gradcam-features-French_bulldog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided_gradcam-features-French_bulldog.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided_gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided_gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-guided_gradcam-features-pug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-guided_gradcam-features-pug.png -------------------------------------------------------------------------------- /docs/0-vgg19-vanilla-French_bulldog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-vanilla-French_bulldog.png -------------------------------------------------------------------------------- /docs/0-vgg19-vanilla-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-vanilla-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19-vanilla-pug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19-vanilla-pug.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-deconvnet-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-deconvnet-boxer.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-deconvnet-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-deconvnet-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-deconvnet-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-deconvnet-tabby.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-gradcam-features-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-gradcam-features-boxer.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-gradcam-features-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-gradcam-features-tabby.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided-boxer.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided-tabby.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided_gradcam-features-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided_gradcam-features-boxer.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided_gradcam-features-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided_gradcam-features-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-guided_gradcam-features-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-guided_gradcam-features-tabby.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-vanilla-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-vanilla-boxer.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-vanilla-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-vanilla-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-vgg19_bn-vanilla-tabby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-vgg19_bn-vanilla-tabby.png -------------------------------------------------------------------------------- /docs/0-xception_v1-gradcam-exit_flow.conv4-boxer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-xception_v1-gradcam-exit_flow.conv4-boxer.png -------------------------------------------------------------------------------- /docs/0-xception_v1-gradcam-exit_flow.conv4-bull_mastiff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-xception_v1-gradcam-exit_flow.conv4-bull_mastiff.png -------------------------------------------------------------------------------- /docs/0-xception_v1-gradcam-exit_flow.conv4-tiger_cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/docs/0-xception_v1-gradcam-exit_flow.conv4-tiger_cat.png -------------------------------------------------------------------------------- /grad_cam.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | # 4 | # Author: Kazuto Nakashima 5 | # URL: http://kazuto1011.github.io 6 | # Created: 2017-05-26 7 | 8 | from collections import Sequence 9 | 10 | import numpy as np 11 | import torch 12 | import torch.nn as nn 13 | from torch.nn import functional as F 14 | from tqdm import tqdm 15 | 16 | 17 | class _BaseWrapper(object): 18 | def __init__(self, model): 19 | super(_BaseWrapper, self).__init__() 20 | self.device = next(model.parameters()).device 21 | self.model = model 22 | self.handlers = [] # a set of hook function handlers 23 | 24 | def _encode_one_hot(self, ids): 25 | one_hot = torch.zeros_like(self.logits).to(self.device) 26 | one_hot.scatter_(1, ids, 1.0) 27 | return one_hot 28 | 29 | def forward(self, image): 30 | self.image_shape = image.shape[2:] 31 | self.logits = self.model(image) 32 | self.probs = F.softmax(self.logits, dim=1) 33 | return self.probs.sort(dim=1, descending=True) # ordered results 34 | 35 | def backward(self, ids): 36 | """ 37 | Class-specific backpropagation 38 | """ 39 | one_hot = self._encode_one_hot(ids) 40 | self.model.zero_grad() 41 | self.logits.backward(gradient=one_hot, retain_graph=True) 42 | 43 | def generate(self): 44 | raise NotImplementedError 45 | 46 | def remove_hook(self): 47 | """ 48 | Remove all the forward/backward hook functions 49 | """ 50 | for handle in self.handlers: 51 | handle.remove() 52 | 53 | 54 | class BackPropagation(_BaseWrapper): 55 | def forward(self, image): 56 | self.image = image.requires_grad_() 57 | return super(BackPropagation, self).forward(self.image) 58 | 59 | def generate(self): 60 | gradient = self.image.grad.clone() 61 | self.image.grad.zero_() 62 | return gradient 63 | 64 | 65 | class GuidedBackPropagation(BackPropagation): 66 | """ 67 | "Striving for Simplicity: the All Convolutional Net" 68 | https://arxiv.org/pdf/1412.6806.pdf 69 | Look at Figure 1 on page 8. 70 | """ 71 | 72 | def __init__(self, model): 73 | super(GuidedBackPropagation, self).__init__(model) 74 | 75 | def backward_hook(module, grad_in, grad_out): 76 | # Cut off negative gradients 77 | if isinstance(module, nn.ReLU): 78 | return (F.relu(grad_in[0]),) 79 | 80 | for module in self.model.named_modules(): 81 | self.handlers.append(module[1].register_backward_hook(backward_hook)) 82 | 83 | 84 | class Deconvnet(BackPropagation): 85 | """ 86 | "Striving for Simplicity: the All Convolutional Net" 87 | https://arxiv.org/pdf/1412.6806.pdf 88 | Look at Figure 1 on page 8. 89 | """ 90 | 91 | def __init__(self, model): 92 | super(Deconvnet, self).__init__(model) 93 | 94 | def backward_hook(module, grad_in, grad_out): 95 | # Cut off negative gradients and ignore ReLU 96 | if isinstance(module, nn.ReLU): 97 | return (F.relu(grad_out[0]),) 98 | 99 | for module in self.model.named_modules(): 100 | self.handlers.append(module[1].register_backward_hook(backward_hook)) 101 | 102 | 103 | class GradCAM(_BaseWrapper): 104 | """ 105 | "Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization" 106 | https://arxiv.org/pdf/1610.02391.pdf 107 | Look at Figure 2 on page 4 108 | """ 109 | 110 | def __init__(self, model, candidate_layers=None): 111 | super(GradCAM, self).__init__(model) 112 | self.fmap_pool = {} 113 | self.grad_pool = {} 114 | self.candidate_layers = candidate_layers # list 115 | 116 | def save_fmaps(key): 117 | def forward_hook(module, input, output): 118 | self.fmap_pool[key] = output.detach() 119 | 120 | return forward_hook 121 | 122 | def save_grads(key): 123 | def backward_hook(module, grad_in, grad_out): 124 | self.grad_pool[key] = grad_out[0].detach() 125 | 126 | return backward_hook 127 | 128 | # If any candidates are not specified, the hook is registered to all the layers. 129 | for name, module in self.model.named_modules(): 130 | if self.candidate_layers is None or name in self.candidate_layers: 131 | self.handlers.append(module.register_forward_hook(save_fmaps(name))) 132 | self.handlers.append(module.register_backward_hook(save_grads(name))) 133 | 134 | def _find(self, pool, target_layer): 135 | if target_layer in pool.keys(): 136 | return pool[target_layer] 137 | else: 138 | raise ValueError("Invalid layer name: {}".format(target_layer)) 139 | 140 | def generate(self, target_layer): 141 | fmaps = self._find(self.fmap_pool, target_layer) 142 | grads = self._find(self.grad_pool, target_layer) 143 | weights = F.adaptive_avg_pool2d(grads, 1) 144 | 145 | gcam = torch.mul(fmaps, weights).sum(dim=1, keepdim=True) 146 | gcam = F.relu(gcam) 147 | gcam = F.interpolate( 148 | gcam, self.image_shape, mode="bilinear", align_corners=False 149 | ) 150 | 151 | B, C, H, W = gcam.shape 152 | gcam = gcam.view(B, -1) 153 | gcam -= gcam.min(dim=1, keepdim=True)[0] 154 | gcam /= gcam.max(dim=1, keepdim=True)[0] 155 | gcam = gcam.view(B, C, H, W) 156 | 157 | return gcam 158 | 159 | 160 | def occlusion_sensitivity( 161 | model, images, ids, mean=None, patch=35, stride=1, n_batches=128 162 | ): 163 | """ 164 | "Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization" 165 | https://arxiv.org/pdf/1610.02391.pdf 166 | Look at Figure A5 on page 17 167 | 168 | Originally proposed in: 169 | "Visualizing and Understanding Convolutional Networks" 170 | https://arxiv.org/abs/1311.2901 171 | """ 172 | 173 | torch.set_grad_enabled(False) 174 | model.eval() 175 | mean = mean if mean else 0 176 | patch_H, patch_W = patch if isinstance(patch, Sequence) else (patch, patch) 177 | pad_H, pad_W = patch_H // 2, patch_W // 2 178 | 179 | # Padded image 180 | images = F.pad(images, (pad_W, pad_W, pad_H, pad_H), value=mean) 181 | B, _, H, W = images.shape 182 | new_H = (H - patch_H) // stride + 1 183 | new_W = (W - patch_W) // stride + 1 184 | 185 | # Prepare sampling grids 186 | anchors = [] 187 | grid_h = 0 188 | while grid_h <= H - patch_H: 189 | grid_w = 0 190 | while grid_w <= W - patch_W: 191 | grid_w += stride 192 | anchors.append((grid_h, grid_w)) 193 | grid_h += stride 194 | 195 | # Baseline score without occlusion 196 | baseline = model(images).detach().gather(1, ids) 197 | 198 | # Compute per-pixel logits 199 | scoremaps = [] 200 | for i in tqdm(range(0, len(anchors), n_batches), leave=False): 201 | batch_images = [] 202 | batch_ids = [] 203 | for grid_h, grid_w in anchors[i : i + n_batches]: 204 | images_ = images.clone() 205 | images_[..., grid_h : grid_h + patch_H, grid_w : grid_w + patch_W] = mean 206 | batch_images.append(images_) 207 | batch_ids.append(ids) 208 | batch_images = torch.cat(batch_images, dim=0) 209 | batch_ids = torch.cat(batch_ids, dim=0) 210 | scores = model(batch_images).detach().gather(1, batch_ids) 211 | scoremaps += list(torch.split(scores, B)) 212 | 213 | diffmaps = torch.cat(scoremaps, dim=1) - baseline 214 | diffmaps = diffmaps.view(B, new_H, new_W) 215 | 216 | return diffmaps 217 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | # 4 | # Author: Kazuto Nakashima 5 | # URL: http://kazuto1011.github.io 6 | # Created: 2017-05-18 7 | 8 | from __future__ import print_function 9 | 10 | import copy 11 | import os.path as osp 12 | 13 | import click 14 | import cv2 15 | import matplotlib.cm as cm 16 | import numpy as np 17 | import torch 18 | import torch.nn.functional as F 19 | from torchvision import models, transforms 20 | 21 | from grad_cam import ( 22 | BackPropagation, 23 | Deconvnet, 24 | GradCAM, 25 | GuidedBackPropagation, 26 | occlusion_sensitivity, 27 | ) 28 | 29 | # if a model includes LSTM, such as in image captioning, 30 | # torch.backends.cudnn.enabled = False 31 | 32 | 33 | def get_device(cuda): 34 | cuda = cuda and torch.cuda.is_available() 35 | device = torch.device("cuda" if cuda else "cpu") 36 | if cuda: 37 | current_device = torch.cuda.current_device() 38 | print("Device:", torch.cuda.get_device_name(current_device)) 39 | else: 40 | print("Device: CPU") 41 | return device 42 | 43 | 44 | def load_images(image_paths): 45 | images = [] 46 | raw_images = [] 47 | print("Images:") 48 | for i, image_path in enumerate(image_paths): 49 | print("\t#{}: {}".format(i, image_path)) 50 | image, raw_image = preprocess(image_path) 51 | images.append(image) 52 | raw_images.append(raw_image) 53 | return images, raw_images 54 | 55 | 56 | def get_classtable(): 57 | classes = [] 58 | with open("samples/synset_words.txt") as lines: 59 | for line in lines: 60 | line = line.strip().split(" ", 1)[1] 61 | line = line.split(", ", 1)[0].replace(" ", "_") 62 | classes.append(line) 63 | return classes 64 | 65 | 66 | def preprocess(image_path): 67 | raw_image = cv2.imread(image_path) 68 | raw_image = cv2.resize(raw_image, (224,) * 2) 69 | image = transforms.Compose( 70 | [ 71 | transforms.ToTensor(), 72 | transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), 73 | ] 74 | )(raw_image[..., ::-1].copy()) 75 | return image, raw_image 76 | 77 | 78 | def save_gradient(filename, gradient): 79 | gradient = gradient.cpu().numpy().transpose(1, 2, 0) 80 | gradient -= gradient.min() 81 | gradient /= gradient.max() 82 | gradient *= 255.0 83 | cv2.imwrite(filename, np.uint8(gradient)) 84 | 85 | 86 | def save_gradcam(filename, gcam, raw_image, paper_cmap=False): 87 | gcam = gcam.cpu().numpy() 88 | cmap = cm.jet_r(gcam)[..., :3] * 255.0 89 | if paper_cmap: 90 | alpha = gcam[..., None] 91 | gcam = alpha * cmap + (1 - alpha) * raw_image 92 | else: 93 | gcam = (cmap.astype(np.float) + raw_image.astype(np.float)) / 2 94 | cv2.imwrite(filename, np.uint8(gcam)) 95 | 96 | 97 | def save_sensitivity(filename, maps): 98 | maps = maps.cpu().numpy() 99 | scale = max(maps[maps > 0].max(), -maps[maps <= 0].min()) 100 | maps = maps / scale * 0.5 101 | maps += 0.5 102 | maps = cm.bwr_r(maps)[..., :3] 103 | maps = np.uint8(maps * 255.0) 104 | maps = cv2.resize(maps, (224, 224), interpolation=cv2.INTER_NEAREST) 105 | cv2.imwrite(filename, maps) 106 | 107 | 108 | # torchvision models 109 | model_names = sorted( 110 | name 111 | for name in models.__dict__ 112 | if name.islower() and not name.startswith("__") and callable(models.__dict__[name]) 113 | ) 114 | 115 | 116 | @click.group() 117 | @click.pass_context 118 | def main(ctx): 119 | print("Mode:", ctx.invoked_subcommand) 120 | 121 | 122 | @main.command() 123 | @click.option("-i", "--image-paths", type=str, multiple=True, required=True) 124 | @click.option("-a", "--arch", type=click.Choice(model_names), required=True) 125 | @click.option("-t", "--target-layer", type=str, required=True) 126 | @click.option("-k", "--topk", type=int, default=3) 127 | @click.option("-o", "--output-dir", type=str, default="./results") 128 | @click.option("--cuda/--cpu", default=True) 129 | def demo1(image_paths, target_layer, arch, topk, output_dir, cuda): 130 | """ 131 | Visualize model responses given multiple images 132 | """ 133 | 134 | device = get_device(cuda) 135 | 136 | # Synset words 137 | classes = get_classtable() 138 | 139 | # Model from torchvision 140 | model = models.__dict__[arch](pretrained=True) 141 | model.to(device) 142 | model.eval() 143 | 144 | # Images 145 | images, raw_images = load_images(image_paths) 146 | images = torch.stack(images).to(device) 147 | 148 | """ 149 | Common usage: 150 | 1. Wrap your model with visualization classes defined in grad_cam.py 151 | 2. Run forward() with images 152 | 3. Run backward() with a list of specific classes 153 | 4. Run generate() to export results 154 | """ 155 | 156 | # ========================================================================= 157 | print("Vanilla Backpropagation:") 158 | 159 | bp = BackPropagation(model=model) 160 | probs, ids = bp.forward(images) # sorted 161 | 162 | for i in range(topk): 163 | bp.backward(ids=ids[:, [i]]) 164 | gradients = bp.generate() 165 | 166 | # Save results as image files 167 | for j in range(len(images)): 168 | print("\t#{}: {} ({:.5f})".format(j, classes[ids[j, i]], probs[j, i])) 169 | 170 | save_gradient( 171 | filename=osp.join( 172 | output_dir, 173 | "{}-{}-vanilla-{}.png".format(j, arch, classes[ids[j, i]]), 174 | ), 175 | gradient=gradients[j], 176 | ) 177 | 178 | # Remove all the hook function in the "model" 179 | bp.remove_hook() 180 | 181 | # ========================================================================= 182 | print("Deconvolution:") 183 | 184 | deconv = Deconvnet(model=model) 185 | _ = deconv.forward(images) 186 | 187 | for i in range(topk): 188 | deconv.backward(ids=ids[:, [i]]) 189 | gradients = deconv.generate() 190 | 191 | for j in range(len(images)): 192 | print("\t#{}: {} ({:.5f})".format(j, classes[ids[j, i]], probs[j, i])) 193 | 194 | save_gradient( 195 | filename=osp.join( 196 | output_dir, 197 | "{}-{}-deconvnet-{}.png".format(j, arch, classes[ids[j, i]]), 198 | ), 199 | gradient=gradients[j], 200 | ) 201 | 202 | deconv.remove_hook() 203 | 204 | # ========================================================================= 205 | print("Grad-CAM/Guided Backpropagation/Guided Grad-CAM:") 206 | 207 | gcam = GradCAM(model=model) 208 | _ = gcam.forward(images) 209 | 210 | gbp = GuidedBackPropagation(model=model) 211 | _ = gbp.forward(images) 212 | 213 | for i in range(topk): 214 | # Guided Backpropagation 215 | gbp.backward(ids=ids[:, [i]]) 216 | gradients = gbp.generate() 217 | 218 | # Grad-CAM 219 | gcam.backward(ids=ids[:, [i]]) 220 | regions = gcam.generate(target_layer=target_layer) 221 | 222 | for j in range(len(images)): 223 | print("\t#{}: {} ({:.5f})".format(j, classes[ids[j, i]], probs[j, i])) 224 | 225 | # Guided Backpropagation 226 | save_gradient( 227 | filename=osp.join( 228 | output_dir, 229 | "{}-{}-guided-{}.png".format(j, arch, classes[ids[j, i]]), 230 | ), 231 | gradient=gradients[j], 232 | ) 233 | 234 | # Grad-CAM 235 | save_gradcam( 236 | filename=osp.join( 237 | output_dir, 238 | "{}-{}-gradcam-{}-{}.png".format( 239 | j, arch, target_layer, classes[ids[j, i]] 240 | ), 241 | ), 242 | gcam=regions[j, 0], 243 | raw_image=raw_images[j], 244 | ) 245 | 246 | # Guided Grad-CAM 247 | save_gradient( 248 | filename=osp.join( 249 | output_dir, 250 | "{}-{}-guided_gradcam-{}-{}.png".format( 251 | j, arch, target_layer, classes[ids[j, i]] 252 | ), 253 | ), 254 | gradient=torch.mul(regions, gradients)[j], 255 | ) 256 | 257 | 258 | @main.command() 259 | @click.option("-i", "--image-paths", type=str, multiple=True, required=True) 260 | @click.option("-o", "--output-dir", type=str, default="./results") 261 | @click.option("--cuda/--cpu", default=True) 262 | def demo2(image_paths, output_dir, cuda): 263 | """ 264 | Generate Grad-CAM at different layers of ResNet-152 265 | """ 266 | 267 | device = get_device(cuda) 268 | 269 | # Synset words 270 | classes = get_classtable() 271 | 272 | # Model 273 | model = models.resnet152(pretrained=True) 274 | model.to(device) 275 | model.eval() 276 | 277 | # The four residual layers 278 | target_layers = ["relu", "layer1", "layer2", "layer3", "layer4"] 279 | target_class = 243 # "bull mastif" 280 | 281 | # Images 282 | images, raw_images = load_images(image_paths) 283 | images = torch.stack(images).to(device) 284 | 285 | gcam = GradCAM(model=model) 286 | probs, ids = gcam.forward(images) 287 | ids_ = torch.LongTensor([[target_class]] * len(images)).to(device) 288 | gcam.backward(ids=ids_) 289 | 290 | for target_layer in target_layers: 291 | print("Generating Grad-CAM @{}".format(target_layer)) 292 | 293 | # Grad-CAM 294 | regions = gcam.generate(target_layer=target_layer) 295 | 296 | for j in range(len(images)): 297 | print( 298 | "\t#{}: {} ({:.5f})".format( 299 | j, classes[target_class], float(probs[ids == target_class]) 300 | ) 301 | ) 302 | 303 | save_gradcam( 304 | filename=osp.join( 305 | output_dir, 306 | "{}-{}-gradcam-{}-{}.png".format( 307 | j, "resnet152", target_layer, classes[target_class] 308 | ), 309 | ), 310 | gcam=regions[j, 0], 311 | raw_image=raw_images[j], 312 | ) 313 | 314 | 315 | @main.command() 316 | @click.option("-i", "--image-paths", type=str, multiple=True, required=True) 317 | @click.option("-a", "--arch", type=click.Choice(model_names), required=True) 318 | @click.option("-k", "--topk", type=int, default=3) 319 | @click.option("-s", "--stride", type=int, default=1) 320 | @click.option("-b", "--n-batches", type=int, default=128) 321 | @click.option("-o", "--output-dir", type=str, default="./results") 322 | @click.option("--cuda/--cpu", default=True) 323 | def demo3(image_paths, arch, topk, stride, n_batches, output_dir, cuda): 324 | """ 325 | Generate occlusion sensitivity maps 326 | """ 327 | 328 | device = get_device(cuda) 329 | 330 | # Synset words 331 | classes = get_classtable() 332 | 333 | # Model from torchvision 334 | model = models.__dict__[arch](pretrained=True) 335 | model = torch.nn.DataParallel(model) 336 | model.to(device) 337 | model.eval() 338 | 339 | # Images 340 | images, _ = load_images(image_paths) 341 | images = torch.stack(images).to(device) 342 | 343 | print("Occlusion Sensitivity:") 344 | 345 | patche_sizes = [10, 15, 25, 35, 45, 90] 346 | 347 | logits = model(images) 348 | probs = F.softmax(logits, dim=1) 349 | probs, ids = probs.sort(dim=1, descending=True) 350 | 351 | for i in range(topk): 352 | for p in patche_sizes: 353 | print("Patch:", p) 354 | sensitivity = occlusion_sensitivity( 355 | model, images, ids[:, [i]], patch=p, stride=stride, n_batches=n_batches 356 | ) 357 | 358 | # Save results as image files 359 | for j in range(len(images)): 360 | print("\t#{}: {} ({:.5f})".format(j, classes[ids[j, i]], probs[j, i])) 361 | 362 | save_sensitivity( 363 | filename=osp.join( 364 | output_dir, 365 | "{}-{}-sensitivity-{}-{}.png".format( 366 | j, arch, p, classes[ids[j, i]] 367 | ), 368 | ), 369 | maps=sensitivity[j], 370 | ) 371 | 372 | 373 | if __name__ == "__main__": 374 | main() 375 | -------------------------------------------------------------------------------- /results/.gitignore: -------------------------------------------------------------------------------- 1 | *.png -------------------------------------------------------------------------------- /samples/cat_dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/samples/cat_dog.png -------------------------------------------------------------------------------- /samples/cat_dog_original.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/samples/cat_dog_original.jpg -------------------------------------------------------------------------------- /samples/synset_words.txt: -------------------------------------------------------------------------------- 1 | n01440764 tench, Tinca tinca 2 | n01443537 goldfish, Carassius auratus 3 | n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias 4 | n01491361 tiger shark, Galeocerdo cuvieri 5 | n01494475 hammerhead, hammerhead shark 6 | n01496331 electric ray, crampfish, numbfish, torpedo 7 | n01498041 stingray 8 | n01514668 cock 9 | n01514859 hen 10 | n01518878 ostrich, Struthio camelus 11 | n01530575 brambling, Fringilla montifringilla 12 | n01531178 goldfinch, Carduelis carduelis 13 | n01532829 house finch, linnet, Carpodacus mexicanus 14 | n01534433 junco, snowbird 15 | n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea 16 | n01558993 robin, American robin, Turdus migratorius 17 | n01560419 bulbul 18 | n01580077 jay 19 | n01582220 magpie 20 | n01592084 chickadee 21 | n01601694 water ouzel, dipper 22 | n01608432 kite 23 | n01614925 bald eagle, American eagle, Haliaeetus leucocephalus 24 | n01616318 vulture 25 | n01622779 great grey owl, great gray owl, Strix nebulosa 26 | n01629819 European fire salamander, Salamandra salamandra 27 | n01630670 common newt, Triturus vulgaris 28 | n01631663 eft 29 | n01632458 spotted salamander, Ambystoma maculatum 30 | n01632777 axolotl, mud puppy, Ambystoma mexicanum 31 | n01641577 bullfrog, Rana catesbeiana 32 | n01644373 tree frog, tree-frog 33 | n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui 34 | n01664065 loggerhead, loggerhead turtle, Caretta caretta 35 | n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea 36 | n01667114 mud turtle 37 | n01667778 terrapin 38 | n01669191 box turtle, box tortoise 39 | n01675722 banded gecko 40 | n01677366 common iguana, iguana, Iguana iguana 41 | n01682714 American chameleon, anole, Anolis carolinensis 42 | n01685808 whiptail, whiptail lizard 43 | n01687978 agama 44 | n01688243 frilled lizard, Chlamydosaurus kingi 45 | n01689811 alligator lizard 46 | n01692333 Gila monster, Heloderma suspectum 47 | n01693334 green lizard, Lacerta viridis 48 | n01694178 African chameleon, Chamaeleo chamaeleon 49 | n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis 50 | n01697457 African crocodile, Nile crocodile, Crocodylus niloticus 51 | n01698640 American alligator, Alligator mississipiensis 52 | n01704323 triceratops 53 | n01728572 thunder snake, worm snake, Carphophis amoenus 54 | n01728920 ringneck snake, ring-necked snake, ring snake 55 | n01729322 hognose snake, puff adder, sand viper 56 | n01729977 green snake, grass snake 57 | n01734418 king snake, kingsnake 58 | n01735189 garter snake, grass snake 59 | n01737021 water snake 60 | n01739381 vine snake 61 | n01740131 night snake, Hypsiglena torquata 62 | n01742172 boa constrictor, Constrictor constrictor 63 | n01744401 rock python, rock snake, Python sebae 64 | n01748264 Indian cobra, Naja naja 65 | n01749939 green mamba 66 | n01751748 sea snake 67 | n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus 68 | n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus 69 | n01756291 sidewinder, horned rattlesnake, Crotalus cerastes 70 | n01768244 trilobite 71 | n01770081 harvestman, daddy longlegs, Phalangium opilio 72 | n01770393 scorpion 73 | n01773157 black and gold garden spider, Argiope aurantia 74 | n01773549 barn spider, Araneus cavaticus 75 | n01773797 garden spider, Aranea diademata 76 | n01774384 black widow, Latrodectus mactans 77 | n01774750 tarantula 78 | n01775062 wolf spider, hunting spider 79 | n01776313 tick 80 | n01784675 centipede 81 | n01795545 black grouse 82 | n01796340 ptarmigan 83 | n01797886 ruffed grouse, partridge, Bonasa umbellus 84 | n01798484 prairie chicken, prairie grouse, prairie fowl 85 | n01806143 peacock 86 | n01806567 quail 87 | n01807496 partridge 88 | n01817953 African grey, African gray, Psittacus erithacus 89 | n01818515 macaw 90 | n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita 91 | n01820546 lorikeet 92 | n01824575 coucal 93 | n01828970 bee eater 94 | n01829413 hornbill 95 | n01833805 hummingbird 96 | n01843065 jacamar 97 | n01843383 toucan 98 | n01847000 drake 99 | n01855032 red-breasted merganser, Mergus serrator 100 | n01855672 goose 101 | n01860187 black swan, Cygnus atratus 102 | n01871265 tusker 103 | n01872401 echidna, spiny anteater, anteater 104 | n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus 105 | n01877812 wallaby, brush kangaroo 106 | n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus 107 | n01883070 wombat 108 | n01910747 jellyfish 109 | n01914609 sea anemone, anemone 110 | n01917289 brain coral 111 | n01924916 flatworm, platyhelminth 112 | n01930112 nematode, nematode worm, roundworm 113 | n01943899 conch 114 | n01944390 snail 115 | n01945685 slug 116 | n01950731 sea slug, nudibranch 117 | n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore 118 | n01968897 chambered nautilus, pearly nautilus, nautilus 119 | n01978287 Dungeness crab, Cancer magister 120 | n01978455 rock crab, Cancer irroratus 121 | n01980166 fiddler crab 122 | n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica 123 | n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus 124 | n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish 125 | n01985128 crayfish, crawfish, crawdad, crawdaddy 126 | n01986214 hermit crab 127 | n01990800 isopod 128 | n02002556 white stork, Ciconia ciconia 129 | n02002724 black stork, Ciconia nigra 130 | n02006656 spoonbill 131 | n02007558 flamingo 132 | n02009229 little blue heron, Egretta caerulea 133 | n02009912 American egret, great white heron, Egretta albus 134 | n02011460 bittern 135 | n02012849 crane 136 | n02013706 limpkin, Aramus pictus 137 | n02017213 European gallinule, Porphyrio porphyrio 138 | n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana 139 | n02018795 bustard 140 | n02025239 ruddy turnstone, Arenaria interpres 141 | n02027492 red-backed sandpiper, dunlin, Erolia alpina 142 | n02028035 redshank, Tringa totanus 143 | n02033041 dowitcher 144 | n02037110 oystercatcher, oyster catcher 145 | n02051845 pelican 146 | n02056570 king penguin, Aptenodytes patagonica 147 | n02058221 albatross, mollymawk 148 | n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus 149 | n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca 150 | n02074367 dugong, Dugong dugon 151 | n02077923 sea lion 152 | n02085620 Chihuahua 153 | n02085782 Japanese spaniel 154 | n02085936 Maltese dog, Maltese terrier, Maltese 155 | n02086079 Pekinese, Pekingese, Peke 156 | n02086240 Shih-Tzu 157 | n02086646 Blenheim spaniel 158 | n02086910 papillon 159 | n02087046 toy terrier 160 | n02087394 Rhodesian ridgeback 161 | n02088094 Afghan hound, Afghan 162 | n02088238 basset, basset hound 163 | n02088364 beagle 164 | n02088466 bloodhound, sleuthhound 165 | n02088632 bluetick 166 | n02089078 black-and-tan coonhound 167 | n02089867 Walker hound, Walker foxhound 168 | n02089973 English foxhound 169 | n02090379 redbone 170 | n02090622 borzoi, Russian wolfhound 171 | n02090721 Irish wolfhound 172 | n02091032 Italian greyhound 173 | n02091134 whippet 174 | n02091244 Ibizan hound, Ibizan Podenco 175 | n02091467 Norwegian elkhound, elkhound 176 | n02091635 otterhound, otter hound 177 | n02091831 Saluki, gazelle hound 178 | n02092002 Scottish deerhound, deerhound 179 | n02092339 Weimaraner 180 | n02093256 Staffordshire bullterrier, Staffordshire bull terrier 181 | n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier 182 | n02093647 Bedlington terrier 183 | n02093754 Border terrier 184 | n02093859 Kerry blue terrier 185 | n02093991 Irish terrier 186 | n02094114 Norfolk terrier 187 | n02094258 Norwich terrier 188 | n02094433 Yorkshire terrier 189 | n02095314 wire-haired fox terrier 190 | n02095570 Lakeland terrier 191 | n02095889 Sealyham terrier, Sealyham 192 | n02096051 Airedale, Airedale terrier 193 | n02096177 cairn, cairn terrier 194 | n02096294 Australian terrier 195 | n02096437 Dandie Dinmont, Dandie Dinmont terrier 196 | n02096585 Boston bull, Boston terrier 197 | n02097047 miniature schnauzer 198 | n02097130 giant schnauzer 199 | n02097209 standard schnauzer 200 | n02097298 Scotch terrier, Scottish terrier, Scottie 201 | n02097474 Tibetan terrier, chrysanthemum dog 202 | n02097658 silky terrier, Sydney silky 203 | n02098105 soft-coated wheaten terrier 204 | n02098286 West Highland white terrier 205 | n02098413 Lhasa, Lhasa apso 206 | n02099267 flat-coated retriever 207 | n02099429 curly-coated retriever 208 | n02099601 golden retriever 209 | n02099712 Labrador retriever 210 | n02099849 Chesapeake Bay retriever 211 | n02100236 German short-haired pointer 212 | n02100583 vizsla, Hungarian pointer 213 | n02100735 English setter 214 | n02100877 Irish setter, red setter 215 | n02101006 Gordon setter 216 | n02101388 Brittany spaniel 217 | n02101556 clumber, clumber spaniel 218 | n02102040 English springer, English springer spaniel 219 | n02102177 Welsh springer spaniel 220 | n02102318 cocker spaniel, English cocker spaniel, cocker 221 | n02102480 Sussex spaniel 222 | n02102973 Irish water spaniel 223 | n02104029 kuvasz 224 | n02104365 schipperke 225 | n02105056 groenendael 226 | n02105162 malinois 227 | n02105251 briard 228 | n02105412 kelpie 229 | n02105505 komondor 230 | n02105641 Old English sheepdog, bobtail 231 | n02105855 Shetland sheepdog, Shetland sheep dog, Shetland 232 | n02106030 collie 233 | n02106166 Border collie 234 | n02106382 Bouvier des Flandres, Bouviers des Flandres 235 | n02106550 Rottweiler 236 | n02106662 German shepherd, German shepherd dog, German police dog, alsatian 237 | n02107142 Doberman, Doberman pinscher 238 | n02107312 miniature pinscher 239 | n02107574 Greater Swiss Mountain dog 240 | n02107683 Bernese mountain dog 241 | n02107908 Appenzeller 242 | n02108000 EntleBucher 243 | n02108089 boxer 244 | n02108422 bull mastiff 245 | n02108551 Tibetan mastiff 246 | n02108915 French bulldog 247 | n02109047 Great Dane 248 | n02109525 Saint Bernard, St Bernard 249 | n02109961 Eskimo dog, husky 250 | n02110063 malamute, malemute, Alaskan malamute 251 | n02110185 Siberian husky 252 | n02110341 dalmatian, coach dog, carriage dog 253 | n02110627 affenpinscher, monkey pinscher, monkey dog 254 | n02110806 basenji 255 | n02110958 pug, pug-dog 256 | n02111129 Leonberg 257 | n02111277 Newfoundland, Newfoundland dog 258 | n02111500 Great Pyrenees 259 | n02111889 Samoyed, Samoyede 260 | n02112018 Pomeranian 261 | n02112137 chow, chow chow 262 | n02112350 keeshond 263 | n02112706 Brabancon griffon 264 | n02113023 Pembroke, Pembroke Welsh corgi 265 | n02113186 Cardigan, Cardigan Welsh corgi 266 | n02113624 toy poodle 267 | n02113712 miniature poodle 268 | n02113799 standard poodle 269 | n02113978 Mexican hairless 270 | n02114367 timber wolf, grey wolf, gray wolf, Canis lupus 271 | n02114548 white wolf, Arctic wolf, Canis lupus tundrarum 272 | n02114712 red wolf, maned wolf, Canis rufus, Canis niger 273 | n02114855 coyote, prairie wolf, brush wolf, Canis latrans 274 | n02115641 dingo, warrigal, warragal, Canis dingo 275 | n02115913 dhole, Cuon alpinus 276 | n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus 277 | n02117135 hyena, hyaena 278 | n02119022 red fox, Vulpes vulpes 279 | n02119789 kit fox, Vulpes macrotis 280 | n02120079 Arctic fox, white fox, Alopex lagopus 281 | n02120505 grey fox, gray fox, Urocyon cinereoargenteus 282 | n02123045 tabby, tabby cat 283 | n02123159 tiger cat 284 | n02123394 Persian cat 285 | n02123597 Siamese cat, Siamese 286 | n02124075 Egyptian cat 287 | n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor 288 | n02127052 lynx, catamount 289 | n02128385 leopard, Panthera pardus 290 | n02128757 snow leopard, ounce, Panthera uncia 291 | n02128925 jaguar, panther, Panthera onca, Felis onca 292 | n02129165 lion, king of beasts, Panthera leo 293 | n02129604 tiger, Panthera tigris 294 | n02130308 cheetah, chetah, Acinonyx jubatus 295 | n02132136 brown bear, bruin, Ursus arctos 296 | n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus 297 | n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus 298 | n02134418 sloth bear, Melursus ursinus, Ursus ursinus 299 | n02137549 mongoose 300 | n02138441 meerkat, mierkat 301 | n02165105 tiger beetle 302 | n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle 303 | n02167151 ground beetle, carabid beetle 304 | n02168699 long-horned beetle, longicorn, longicorn beetle 305 | n02169497 leaf beetle, chrysomelid 306 | n02172182 dung beetle 307 | n02174001 rhinoceros beetle 308 | n02177972 weevil 309 | n02190166 fly 310 | n02206856 bee 311 | n02219486 ant, emmet, pismire 312 | n02226429 grasshopper, hopper 313 | n02229544 cricket 314 | n02231487 walking stick, walkingstick, stick insect 315 | n02233338 cockroach, roach 316 | n02236044 mantis, mantid 317 | n02256656 cicada, cicala 318 | n02259212 leafhopper 319 | n02264363 lacewing, lacewing fly 320 | n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk 321 | n02268853 damselfly 322 | n02276258 admiral 323 | n02277742 ringlet, ringlet butterfly 324 | n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus 325 | n02280649 cabbage butterfly 326 | n02281406 sulphur butterfly, sulfur butterfly 327 | n02281787 lycaenid, lycaenid butterfly 328 | n02317335 starfish, sea star 329 | n02319095 sea urchin 330 | n02321529 sea cucumber, holothurian 331 | n02325366 wood rabbit, cottontail, cottontail rabbit 332 | n02326432 hare 333 | n02328150 Angora, Angora rabbit 334 | n02342885 hamster 335 | n02346627 porcupine, hedgehog 336 | n02356798 fox squirrel, eastern fox squirrel, Sciurus niger 337 | n02361337 marmot 338 | n02363005 beaver 339 | n02364673 guinea pig, Cavia cobaya 340 | n02389026 sorrel 341 | n02391049 zebra 342 | n02395406 hog, pig, grunter, squealer, Sus scrofa 343 | n02396427 wild boar, boar, Sus scrofa 344 | n02397096 warthog 345 | n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius 346 | n02403003 ox 347 | n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis 348 | n02410509 bison 349 | n02412080 ram, tup 350 | n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis 351 | n02417914 ibex, Capra ibex 352 | n02422106 hartebeest 353 | n02422699 impala, Aepyceros melampus 354 | n02423022 gazelle 355 | n02437312 Arabian camel, dromedary, Camelus dromedarius 356 | n02437616 llama 357 | n02441942 weasel 358 | n02442845 mink 359 | n02443114 polecat, fitch, foulmart, foumart, Mustela putorius 360 | n02443484 black-footed ferret, ferret, Mustela nigripes 361 | n02444819 otter 362 | n02445715 skunk, polecat, wood pussy 363 | n02447366 badger 364 | n02454379 armadillo 365 | n02457408 three-toed sloth, ai, Bradypus tridactylus 366 | n02480495 orangutan, orang, orangutang, Pongo pygmaeus 367 | n02480855 gorilla, Gorilla gorilla 368 | n02481823 chimpanzee, chimp, Pan troglodytes 369 | n02483362 gibbon, Hylobates lar 370 | n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus 371 | n02484975 guenon, guenon monkey 372 | n02486261 patas, hussar monkey, Erythrocebus patas 373 | n02486410 baboon 374 | n02487347 macaque 375 | n02488291 langur 376 | n02488702 colobus, colobus monkey 377 | n02489166 proboscis monkey, Nasalis larvatus 378 | n02490219 marmoset 379 | n02492035 capuchin, ringtail, Cebus capucinus 380 | n02492660 howler monkey, howler 381 | n02493509 titi, titi monkey 382 | n02493793 spider monkey, Ateles geoffroyi 383 | n02494079 squirrel monkey, Saimiri sciureus 384 | n02497673 Madagascar cat, ring-tailed lemur, Lemur catta 385 | n02500267 indri, indris, Indri indri, Indri brevicaudatus 386 | n02504013 Indian elephant, Elephas maximus 387 | n02504458 African elephant, Loxodonta africana 388 | n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens 389 | n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca 390 | n02514041 barracouta, snoek 391 | n02526121 eel 392 | n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch 393 | n02606052 rock beauty, Holocanthus tricolor 394 | n02607072 anemone fish 395 | n02640242 sturgeon 396 | n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus 397 | n02643566 lionfish 398 | n02655020 puffer, pufferfish, blowfish, globefish 399 | n02666196 abacus 400 | n02667093 abaya 401 | n02669723 academic gown, academic robe, judge's robe 402 | n02672831 accordion, piano accordion, squeeze box 403 | n02676566 acoustic guitar 404 | n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier 405 | n02690373 airliner 406 | n02692877 airship, dirigible 407 | n02699494 altar 408 | n02701002 ambulance 409 | n02704792 amphibian, amphibious vehicle 410 | n02708093 analog clock 411 | n02727426 apiary, bee house 412 | n02730930 apron 413 | n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin 414 | n02749479 assault rifle, assault gun 415 | n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack 416 | n02776631 bakery, bakeshop, bakehouse 417 | n02777292 balance beam, beam 418 | n02782093 balloon 419 | n02783161 ballpoint, ballpoint pen, ballpen, Biro 420 | n02786058 Band Aid 421 | n02787622 banjo 422 | n02788148 bannister, banister, balustrade, balusters, handrail 423 | n02790996 barbell 424 | n02791124 barber chair 425 | n02791270 barbershop 426 | n02793495 barn 427 | n02794156 barometer 428 | n02795169 barrel, cask 429 | n02797295 barrow, garden cart, lawn cart, wheelbarrow 430 | n02799071 baseball 431 | n02802426 basketball 432 | n02804414 bassinet 433 | n02804610 bassoon 434 | n02807133 bathing cap, swimming cap 435 | n02808304 bath towel 436 | n02808440 bathtub, bathing tub, bath, tub 437 | n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon 438 | n02814860 beacon, lighthouse, beacon light, pharos 439 | n02815834 beaker 440 | n02817516 bearskin, busby, shako 441 | n02823428 beer bottle 442 | n02823750 beer glass 443 | n02825657 bell cote, bell cot 444 | n02834397 bib 445 | n02835271 bicycle-built-for-two, tandem bicycle, tandem 446 | n02837789 bikini, two-piece 447 | n02840245 binder, ring-binder 448 | n02841315 binoculars, field glasses, opera glasses 449 | n02843684 birdhouse 450 | n02859443 boathouse 451 | n02860847 bobsled, bobsleigh, bob 452 | n02865351 bolo tie, bolo, bola tie, bola 453 | n02869837 bonnet, poke bonnet 454 | n02870880 bookcase 455 | n02871525 bookshop, bookstore, bookstall 456 | n02877765 bottlecap 457 | n02879718 bow 458 | n02883205 bow tie, bow-tie, bowtie 459 | n02892201 brass, memorial tablet, plaque 460 | n02892767 brassiere, bra, bandeau 461 | n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty 462 | n02895154 breastplate, aegis, egis 463 | n02906734 broom 464 | n02909870 bucket, pail 465 | n02910353 buckle 466 | n02916936 bulletproof vest 467 | n02917067 bullet train, bullet 468 | n02927161 butcher shop, meat market 469 | n02930766 cab, hack, taxi, taxicab 470 | n02939185 caldron, cauldron 471 | n02948072 candle, taper, wax light 472 | n02950826 cannon 473 | n02951358 canoe 474 | n02951585 can opener, tin opener 475 | n02963159 cardigan 476 | n02965783 car mirror 477 | n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig 478 | n02966687 carpenter's kit, tool kit 479 | n02971356 carton 480 | n02974003 car wheel 481 | n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM 482 | n02978881 cassette 483 | n02979186 cassette player 484 | n02980441 castle 485 | n02981792 catamaran 486 | n02988304 CD player 487 | n02992211 cello, violoncello 488 | n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone 489 | n02999410 chain 490 | n03000134 chainlink fence 491 | n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour 492 | n03000684 chain saw, chainsaw 493 | n03014705 chest 494 | n03016953 chiffonier, commode 495 | n03017168 chime, bell, gong 496 | n03018349 china cabinet, china closet 497 | n03026506 Christmas stocking 498 | n03028079 church, church building 499 | n03032252 cinema, movie theater, movie theatre, movie house, picture palace 500 | n03041632 cleaver, meat cleaver, chopper 501 | n03042490 cliff dwelling 502 | n03045698 cloak 503 | n03047690 clog, geta, patten, sabot 504 | n03062245 cocktail shaker 505 | n03063599 coffee mug 506 | n03063689 coffeepot 507 | n03065424 coil, spiral, volute, whorl, helix 508 | n03075370 combination lock 509 | n03085013 computer keyboard, keypad 510 | n03089624 confectionery, confectionary, candy store 511 | n03095699 container ship, containership, container vessel 512 | n03100240 convertible 513 | n03109150 corkscrew, bottle screw 514 | n03110669 cornet, horn, trumpet, trump 515 | n03124043 cowboy boot 516 | n03124170 cowboy hat, ten-gallon hat 517 | n03125729 cradle 518 | n03126707 crane 519 | n03127747 crash helmet 520 | n03127925 crate 521 | n03131574 crib, cot 522 | n03133878 Crock Pot 523 | n03134739 croquet ball 524 | n03141823 crutch 525 | n03146219 cuirass 526 | n03160309 dam, dike, dyke 527 | n03179701 desk 528 | n03180011 desktop computer 529 | n03187595 dial telephone, dial phone 530 | n03188531 diaper, nappy, napkin 531 | n03196217 digital clock 532 | n03197337 digital watch 533 | n03201208 dining table, board 534 | n03207743 dishrag, dishcloth 535 | n03207941 dishwasher, dish washer, dishwashing machine 536 | n03208938 disk brake, disc brake 537 | n03216828 dock, dockage, docking facility 538 | n03218198 dogsled, dog sled, dog sleigh 539 | n03220513 dome 540 | n03223299 doormat, welcome mat 541 | n03240683 drilling platform, offshore rig 542 | n03249569 drum, membranophone, tympan 543 | n03250847 drumstick 544 | n03255030 dumbbell 545 | n03259280 Dutch oven 546 | n03271574 electric fan, blower 547 | n03272010 electric guitar 548 | n03272562 electric locomotive 549 | n03290653 entertainment center 550 | n03291819 envelope 551 | n03297495 espresso maker 552 | n03314780 face powder 553 | n03325584 feather boa, boa 554 | n03337140 file, file cabinet, filing cabinet 555 | n03344393 fireboat 556 | n03345487 fire engine, fire truck 557 | n03347037 fire screen, fireguard 558 | n03355925 flagpole, flagstaff 559 | n03372029 flute, transverse flute 560 | n03376595 folding chair 561 | n03379051 football helmet 562 | n03384352 forklift 563 | n03388043 fountain 564 | n03388183 fountain pen 565 | n03388549 four-poster 566 | n03393912 freight car 567 | n03394916 French horn, horn 568 | n03400231 frying pan, frypan, skillet 569 | n03404251 fur coat 570 | n03417042 garbage truck, dustcart 571 | n03424325 gasmask, respirator, gas helmet 572 | n03425413 gas pump, gasoline pump, petrol pump, island dispenser 573 | n03443371 goblet 574 | n03444034 go-kart 575 | n03445777 golf ball 576 | n03445924 golfcart, golf cart 577 | n03447447 gondola 578 | n03447721 gong, tam-tam 579 | n03450230 gown 580 | n03452741 grand piano, grand 581 | n03457902 greenhouse, nursery, glasshouse 582 | n03459775 grille, radiator grille 583 | n03461385 grocery store, grocery, food market, market 584 | n03467068 guillotine 585 | n03476684 hair slide 586 | n03476991 hair spray 587 | n03478589 half track 588 | n03481172 hammer 589 | n03482405 hamper 590 | n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier 591 | n03485407 hand-held computer, hand-held microcomputer 592 | n03485794 handkerchief, hankie, hanky, hankey 593 | n03492542 hard disc, hard disk, fixed disk 594 | n03494278 harmonica, mouth organ, harp, mouth harp 595 | n03495258 harp 596 | n03496892 harvester, reaper 597 | n03498962 hatchet 598 | n03527444 holster 599 | n03529860 home theater, home theatre 600 | n03530642 honeycomb 601 | n03532672 hook, claw 602 | n03534580 hoopskirt, crinoline 603 | n03535780 horizontal bar, high bar 604 | n03538406 horse cart, horse-cart 605 | n03544143 hourglass 606 | n03584254 iPod 607 | n03584829 iron, smoothing iron 608 | n03590841 jack-o'-lantern 609 | n03594734 jean, blue jean, denim 610 | n03594945 jeep, landrover 611 | n03595614 jersey, T-shirt, tee shirt 612 | n03598930 jigsaw puzzle 613 | n03599486 jinrikisha, ricksha, rickshaw 614 | n03602883 joystick 615 | n03617480 kimono 616 | n03623198 knee pad 617 | n03627232 knot 618 | n03630383 lab coat, laboratory coat 619 | n03633091 ladle 620 | n03637318 lampshade, lamp shade 621 | n03642806 laptop, laptop computer 622 | n03649909 lawn mower, mower 623 | n03657121 lens cap, lens cover 624 | n03658185 letter opener, paper knife, paperknife 625 | n03661043 library 626 | n03662601 lifeboat 627 | n03666591 lighter, light, igniter, ignitor 628 | n03670208 limousine, limo 629 | n03673027 liner, ocean liner 630 | n03676483 lipstick, lip rouge 631 | n03680355 Loafer 632 | n03690938 lotion 633 | n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system 634 | n03692522 loupe, jeweler's loupe 635 | n03697007 lumbermill, sawmill 636 | n03706229 magnetic compass 637 | n03709823 mailbag, postbag 638 | n03710193 mailbox, letter box 639 | n03710637 maillot 640 | n03710721 maillot, tank suit 641 | n03717622 manhole cover 642 | n03720891 maraca 643 | n03721384 marimba, xylophone 644 | n03724870 mask 645 | n03729826 matchstick 646 | n03733131 maypole 647 | n03733281 maze, labyrinth 648 | n03733805 measuring cup 649 | n03742115 medicine chest, medicine cabinet 650 | n03743016 megalith, megalithic structure 651 | n03759954 microphone, mike 652 | n03761084 microwave, microwave oven 653 | n03763968 military uniform 654 | n03764736 milk can 655 | n03769881 minibus 656 | n03770439 miniskirt, mini 657 | n03770679 minivan 658 | n03773504 missile 659 | n03775071 mitten 660 | n03775546 mixing bowl 661 | n03776460 mobile home, manufactured home 662 | n03777568 Model T 663 | n03777754 modem 664 | n03781244 monastery 665 | n03782006 monitor 666 | n03785016 moped 667 | n03786901 mortar 668 | n03787032 mortarboard 669 | n03788195 mosque 670 | n03788365 mosquito net 671 | n03791053 motor scooter, scooter 672 | n03792782 mountain bike, all-terrain bike, off-roader 673 | n03792972 mountain tent 674 | n03793489 mouse, computer mouse 675 | n03794056 mousetrap 676 | n03796401 moving van 677 | n03803284 muzzle 678 | n03804744 nail 679 | n03814639 neck brace 680 | n03814906 necklace 681 | n03825788 nipple 682 | n03832673 notebook, notebook computer 683 | n03837869 obelisk 684 | n03838899 oboe, hautboy, hautbois 685 | n03840681 ocarina, sweet potato 686 | n03841143 odometer, hodometer, mileometer, milometer 687 | n03843555 oil filter 688 | n03854065 organ, pipe organ 689 | n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO 690 | n03866082 overskirt 691 | n03868242 oxcart 692 | n03868863 oxygen mask 693 | n03871628 packet 694 | n03873416 paddle, boat paddle 695 | n03874293 paddlewheel, paddle wheel 696 | n03874599 padlock 697 | n03876231 paintbrush 698 | n03877472 pajama, pyjama, pj's, jammies 699 | n03877845 palace 700 | n03884397 panpipe, pandean pipe, syrinx 701 | n03887697 paper towel 702 | n03888257 parachute, chute 703 | n03888605 parallel bars, bars 704 | n03891251 park bench 705 | n03891332 parking meter 706 | n03895866 passenger car, coach, carriage 707 | n03899768 patio, terrace 708 | n03902125 pay-phone, pay-station 709 | n03903868 pedestal, plinth, footstall 710 | n03908618 pencil box, pencil case 711 | n03908714 pencil sharpener 712 | n03916031 perfume, essence 713 | n03920288 Petri dish 714 | n03924679 photocopier 715 | n03929660 pick, plectrum, plectron 716 | n03929855 pickelhaube 717 | n03930313 picket fence, paling 718 | n03930630 pickup, pickup truck 719 | n03933933 pier 720 | n03935335 piggy bank, penny bank 721 | n03937543 pill bottle 722 | n03938244 pillow 723 | n03942813 ping-pong ball 724 | n03944341 pinwheel 725 | n03947888 pirate, pirate ship 726 | n03950228 pitcher, ewer 727 | n03954731 plane, carpenter's plane, woodworking plane 728 | n03956157 planetarium 729 | n03958227 plastic bag 730 | n03961711 plate rack 731 | n03967562 plow, plough 732 | n03970156 plunger, plumber's helper 733 | n03976467 Polaroid camera, Polaroid Land camera 734 | n03976657 pole 735 | n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria 736 | n03980874 poncho 737 | n03982430 pool table, billiard table, snooker table 738 | n03983396 pop bottle, soda bottle 739 | n03991062 pot, flowerpot 740 | n03992509 potter's wheel 741 | n03995372 power drill 742 | n03998194 prayer rug, prayer mat 743 | n04004767 printer 744 | n04005630 prison, prison house 745 | n04008634 projectile, missile 746 | n04009552 projector 747 | n04019541 puck, hockey puck 748 | n04023962 punching bag, punch bag, punching ball, punchball 749 | n04026417 purse 750 | n04033901 quill, quill pen 751 | n04033995 quilt, comforter, comfort, puff 752 | n04037443 racer, race car, racing car 753 | n04039381 racket, racquet 754 | n04040759 radiator 755 | n04041544 radio, wireless 756 | n04044716 radio telescope, radio reflector 757 | n04049303 rain barrel 758 | n04065272 recreational vehicle, RV, R.V. 759 | n04067472 reel 760 | n04069434 reflex camera 761 | n04070727 refrigerator, icebox 762 | n04074963 remote control, remote 763 | n04081281 restaurant, eating house, eating place, eatery 764 | n04086273 revolver, six-gun, six-shooter 765 | n04090263 rifle 766 | n04099969 rocking chair, rocker 767 | n04111531 rotisserie 768 | n04116512 rubber eraser, rubber, pencil eraser 769 | n04118538 rugby ball 770 | n04118776 rule, ruler 771 | n04120489 running shoe 772 | n04125021 safe 773 | n04127249 safety pin 774 | n04131690 saltshaker, salt shaker 775 | n04133789 sandal 776 | n04136333 sarong 777 | n04141076 sax, saxophone 778 | n04141327 scabbard 779 | n04141975 scale, weighing machine 780 | n04146614 school bus 781 | n04147183 schooner 782 | n04149813 scoreboard 783 | n04152593 screen, CRT screen 784 | n04153751 screw 785 | n04154565 screwdriver 786 | n04162706 seat belt, seatbelt 787 | n04179913 sewing machine 788 | n04192698 shield, buckler 789 | n04200800 shoe shop, shoe-shop, shoe store 790 | n04201297 shoji 791 | n04204238 shopping basket 792 | n04204347 shopping cart 793 | n04208210 shovel 794 | n04209133 shower cap 795 | n04209239 shower curtain 796 | n04228054 ski 797 | n04229816 ski mask 798 | n04235860 sleeping bag 799 | n04238763 slide rule, slipstick 800 | n04239074 sliding door 801 | n04243546 slot, one-armed bandit 802 | n04251144 snorkel 803 | n04252077 snowmobile 804 | n04252225 snowplow, snowplough 805 | n04254120 soap dispenser 806 | n04254680 soccer ball 807 | n04254777 sock 808 | n04258138 solar dish, solar collector, solar furnace 809 | n04259630 sombrero 810 | n04263257 soup bowl 811 | n04264628 space bar 812 | n04265275 space heater 813 | n04266014 space shuttle 814 | n04270147 spatula 815 | n04273569 speedboat 816 | n04275548 spider web, spider's web 817 | n04277352 spindle 818 | n04285008 sports car, sport car 819 | n04286575 spotlight, spot 820 | n04296562 stage 821 | n04310018 steam locomotive 822 | n04311004 steel arch bridge 823 | n04311174 steel drum 824 | n04317175 stethoscope 825 | n04325704 stole 826 | n04326547 stone wall 827 | n04328186 stopwatch, stop watch 828 | n04330267 stove 829 | n04332243 strainer 830 | n04335435 streetcar, tram, tramcar, trolley, trolley car 831 | n04336792 stretcher 832 | n04344873 studio couch, day bed 833 | n04346328 stupa, tope 834 | n04347754 submarine, pigboat, sub, U-boat 835 | n04350905 suit, suit of clothes 836 | n04355338 sundial 837 | n04355933 sunglass 838 | n04356056 sunglasses, dark glasses, shades 839 | n04357314 sunscreen, sunblock, sun blocker 840 | n04366367 suspension bridge 841 | n04367480 swab, swob, mop 842 | n04370456 sweatshirt 843 | n04371430 swimming trunks, bathing trunks 844 | n04371774 swing 845 | n04372370 switch, electric switch, electrical switch 846 | n04376876 syringe 847 | n04380533 table lamp 848 | n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle 849 | n04392985 tape player 850 | n04398044 teapot 851 | n04399382 teddy, teddy bear 852 | n04404412 television, television system 853 | n04409515 tennis ball 854 | n04417672 thatch, thatched roof 855 | n04418357 theater curtain, theatre curtain 856 | n04423845 thimble 857 | n04428191 thresher, thrasher, threshing machine 858 | n04429376 throne 859 | n04435653 tile roof 860 | n04442312 toaster 861 | n04443257 tobacco shop, tobacconist shop, tobacconist 862 | n04447861 toilet seat 863 | n04456115 torch 864 | n04458633 totem pole 865 | n04461696 tow truck, tow car, wrecker 866 | n04462240 toyshop 867 | n04465501 tractor 868 | n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi 869 | n04476259 tray 870 | n04479046 trench coat 871 | n04482393 tricycle, trike, velocipede 872 | n04483307 trimaran 873 | n04485082 tripod 874 | n04486054 triumphal arch 875 | n04487081 trolleybus, trolley coach, trackless trolley 876 | n04487394 trombone 877 | n04493381 tub, vat 878 | n04501370 turnstile 879 | n04505470 typewriter keyboard 880 | n04507155 umbrella 881 | n04509417 unicycle, monocycle 882 | n04515003 upright, upright piano 883 | n04517823 vacuum, vacuum cleaner 884 | n04522168 vase 885 | n04523525 vault 886 | n04525038 velvet 887 | n04525305 vending machine 888 | n04532106 vestment 889 | n04532670 viaduct 890 | n04536866 violin, fiddle 891 | n04540053 volleyball 892 | n04542943 waffle iron 893 | n04548280 wall clock 894 | n04548362 wallet, billfold, notecase, pocketbook 895 | n04550184 wardrobe, closet, press 896 | n04552348 warplane, military plane 897 | n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin 898 | n04554684 washer, automatic washer, washing machine 899 | n04557648 water bottle 900 | n04560804 water jug 901 | n04562935 water tower 902 | n04579145 whiskey jug 903 | n04579432 whistle 904 | n04584207 wig 905 | n04589890 window screen 906 | n04590129 window shade 907 | n04591157 Windsor tie 908 | n04591713 wine bottle 909 | n04592741 wing 910 | n04596742 wok 911 | n04597913 wooden spoon 912 | n04599235 wool, woolen, woollen 913 | n04604644 worm fence, snake fence, snake-rail fence, Virginia fence 914 | n04606251 wreck 915 | n04612504 yawl 916 | n04613696 yurt 917 | n06359193 web site, website, internet site, site 918 | n06596364 comic book 919 | n06785654 crossword puzzle, crossword 920 | n06794110 street sign 921 | n06874185 traffic light, traffic signal, stoplight 922 | n07248320 book jacket, dust cover, dust jacket, dust wrapper 923 | n07565083 menu 924 | n07579787 plate 925 | n07583066 guacamole 926 | n07584110 consomme 927 | n07590611 hot pot, hotpot 928 | n07613480 trifle 929 | n07614500 ice cream, icecream 930 | n07615774 ice lolly, lolly, lollipop, popsicle 931 | n07684084 French loaf 932 | n07693725 bagel, beigel 933 | n07695742 pretzel 934 | n07697313 cheeseburger 935 | n07697537 hotdog, hot dog, red hot 936 | n07711569 mashed potato 937 | n07714571 head cabbage 938 | n07714990 broccoli 939 | n07715103 cauliflower 940 | n07716358 zucchini, courgette 941 | n07716906 spaghetti squash 942 | n07717410 acorn squash 943 | n07717556 butternut squash 944 | n07718472 cucumber, cuke 945 | n07718747 artichoke, globe artichoke 946 | n07720875 bell pepper 947 | n07730033 cardoon 948 | n07734744 mushroom 949 | n07742313 Granny Smith 950 | n07745940 strawberry 951 | n07747607 orange 952 | n07749582 lemon 953 | n07753113 fig 954 | n07753275 pineapple, ananas 955 | n07753592 banana 956 | n07754684 jackfruit, jak, jack 957 | n07760859 custard apple 958 | n07768694 pomegranate 959 | n07802026 hay 960 | n07831146 carbonara 961 | n07836838 chocolate sauce, chocolate syrup 962 | n07860988 dough 963 | n07871810 meat loaf, meatloaf 964 | n07873807 pizza, pizza pie 965 | n07875152 potpie 966 | n07880968 burrito 967 | n07892512 red wine 968 | n07920052 espresso 969 | n07930864 cup 970 | n07932039 eggnog 971 | n09193705 alp 972 | n09229709 bubble 973 | n09246464 cliff, drop, drop-off 974 | n09256479 coral reef 975 | n09288635 geyser 976 | n09332890 lakeside, lakeshore 977 | n09399592 promontory, headland, head, foreland 978 | n09421951 sandbar, sand bar 979 | n09428293 seashore, coast, seacoast, sea-coast 980 | n09468604 valley, vale 981 | n09472597 volcano 982 | n09835506 ballplayer, baseball player 983 | n10148035 groom, bridegroom 984 | n10565667 scuba diver 985 | n11879895 rapeseed 986 | n11939491 daisy 987 | n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum 988 | n12144580 corn 989 | n12267677 acorn 990 | n12620546 hip, rose hip, rosehip 991 | n12768682 buckeye, horse chestnut, conker 992 | n12985857 coral fungus 993 | n12998815 agaric 994 | n13037406 gyromitra 995 | n13040303 stinkhorn, carrion fungus 996 | n13044778 earthstar 997 | n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa 998 | n13054560 bolete 999 | n13133613 ear, spike, capitulum 1000 | n15075141 toilet tissue, toilet paper, bathroom tissue 1001 | -------------------------------------------------------------------------------- /samples/vegetables.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kazuto1011/grad-cam-pytorch/fd10ff7fc85ae064938531235a5dd3889ca46fed/samples/vegetables.jpg --------------------------------------------------------------------------------