def test_grad_cam(self): model = keras.applications.MobileNetV2() cam = grad_cam(model, layer_cut='Conv_1', inputs=np.random.random((3, 224, 224, 3)), target_class=0) self.assertEqual((3, 7, 7), cam.shape)
def test_grad_cam_pp(self): model = keras.applications.MobileNetV2() model = replace_layers(model, activation_mapping={'softmax': 'linear'}) cam = grad_cam(model, layer_cut='Conv_1', inputs=np.random.random((3, 224, 224, 3)), target_class=0, plus=True) self.assertEqual((3, 7, 7), cam.shape)
def process(target_class, cmap='jet', alpha=0.5): model = keras.applications.MobileNetV2() cam = grad_cam(model=model, layer_cut='Conv_1', inputs=inputs, target_class=target_class)[0] # Visualization heatmap = plt.get_cmap(cmap)(cam, bytes=True) heatmap = Image.fromarray(heatmap[..., :3], mode='RGB') heatmap = heatmap.resize((original_image.width, original_image.height), resample=Image.BILINEAR) return Image.blend(original_image, heatmap, alpha=alpha)