Paddle Class Activation Mapping with PPMA
作者:XD / 发表: 2023年1月28日 02:38 / 更新: 2023年1月28日 02:44 / 编程笔记 / 阅读量:1177
Paddle Class Activation Mapping with PPMA.
Using Class Activation Mapping(CAM) to check the model explainability and draw the heatmap.
After trained the model with PaddleClas, the following code can be used to check the heatmap of the infer image.
import os
from ppma import cam # pip install ppma
from ppcls.arch import build_model
import cv2
def heatmap(img_path, config, label=None):
model = build_model(config)
# print(model) # check the model blocks and layers
target_layer = model.blocks6[-1] # last layer from last block
cam_extractor = cam.GradCAMPlusPlus(model, target_layer)
activation_map = cam_extractor(img_path, label=label)
cam_image = cam.overlay(img_path, activation_map)
cv2.imwrite("res_{}".format(os.path.basename(img_path)), cam_image)
print("Finished")
if __name__ == "__main__":
img_path = 'vw.jpg'
# config file YAML "Arch" part
config = {'Arch': {'name': 'PPLCNet_x1_0',
'pretrained': './output/v9c/PPLCNet_x1_0/latest',
'class_num': 110,
'use_ssld': True,
'lr_mult_list': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
'infer_add_softmax': False
}
}
label = 48 # image gound truth
heatmap(img_path, config, label)