⭐ 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
And then, you can get system print such as the following figure (left).
Suppose that you select(type) the features module (number 0) like as the figure (right).
Because you select the module, you get system print one more and should select a target layer in the module as described in below figure.
Once typing the 'number' or 'name' of a target class, 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