⭐ Star us on GitHub — it helps!!
PyTorch implementation for Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization
You will need a machine with a GPU and CUDA installed.
Then, you prepare runtime environment:
pip install -r requirements.txt
CUDA_VISIBLE_DEVICES=0 python main.py --model_path=resnet50 --img_path=examples/catdog.png --select_t_layer=False
Arguments:
model_path
- Choose a pretrained model in torchvision.models or saved model (.pt)- Examples of available list: ['alexnet', 'vgg19', 'resnet50', 'densenet169', 'mobilenet_v2' ,'wide_resnet50_2', ...]
img_path
- Image Pathselect_t_layer
- Choose a target layer manually?- If True, you can select a layer and get GradCAM for the layer.
- Elif False, you can get GradCAM automatically.
If you want to select a target layer manually, you run the following code:
CUDA_VISIBLE_DEVICES=0 python main.py --model_path=resnet50 --img_path=examples/catdog.png --select_t_layer=True
You can get system print such as the following figure (left).
Suppose that you select(type) 'number' or 'name' of a target layer like as the figure (middle).
And then, you can get GradCAM result.
If you want to use a customized model that has a data type 'OrderedDict', you shoud type a code that loads model object.
Search 'load model' function in utils.py and type a code such as:
from yourNetwork import yourNetwork())
model=yourNetwork()
✅ Check my blog!! GradCAM in da2so