CNN visual


In [2]:
%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=2
%matplotlib inline


env: CUDA_DEVICE_ORDER=PCI_BUS_ID
env: CUDA_VISIBLE_DEVICES=2

In [3]:
from keras.models import load_model
from keras.applications.resnet50 import preprocess_input
import keras.backend as K

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import random
import os
import pandas as pd
import cv2
import scipy.misc
import re
from math import ceil

K.set_learning_phase(0)


Using TensorFlow backend.

In [4]:
test = pd.read_csv("../res_csv/kfold/test/testing_noballaug_cross_k1.csv")

fn = test[(test["y_true"] == 1) & (test["y_pred"] < 0.5)].sort_values("y_pred")
tn = test[(test["y_true"] == 0) & (test["y_pred"] < 0.5)].sort_values("y_pred")
fp = test[(test["y_true"] == 0) & (test["y_pred"] > 0.95)].sort_values("y_pred", ascending = False)
tp = test[(test["y_true"] == 1) & (test["y_pred"] > 0.95)].sort_values("y_pred", ascending = False)

In [5]:
model = load_model('/home/jimmy15923/Project_theta/Advantech/model/model_noballaug_cross_k1.h5')

In [6]:
model = model.get_layer("model_1")
model.summary()


____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_1 (InputLayer)             (None, 200, 200, 3)   0                                            
____________________________________________________________________________________________________
zero_padding2d_1 (ZeroPadding2D) (None, 206, 206, 3)   0           input_1[0][0]                    
____________________________________________________________________________________________________
conv1 (Conv2D)                   (None, 100, 100, 64)  9472        zero_padding2d_1[0][0]           
____________________________________________________________________________________________________
bn_conv1 (BatchNormalization)    (None, 100, 100, 64)  256         conv1[0][0]                      
____________________________________________________________________________________________________
activation_1 (Activation)        (None, 100, 100, 64)  0           bn_conv1[0][0]                   
____________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)   (None, 49, 49, 64)    0           activation_1[0][0]               
____________________________________________________________________________________________________
res2a_branch2a (Conv2D)          (None, 49, 49, 64)    4160        max_pooling2d_1[0][0]            
____________________________________________________________________________________________________
bn2a_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_2 (Activation)        (None, 49, 49, 64)    0           bn2a_branch2a[0][0]              
____________________________________________________________________________________________________
res2a_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_2[0][0]               
____________________________________________________________________________________________________
bn2a_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_3 (Activation)        (None, 49, 49, 64)    0           bn2a_branch2b[0][0]              
____________________________________________________________________________________________________
res2a_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_3[0][0]               
____________________________________________________________________________________________________
res2a_branch1 (Conv2D)           (None, 49, 49, 256)   16640       max_pooling2d_1[0][0]            
____________________________________________________________________________________________________
bn2a_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2a_branch2c[0][0]             
____________________________________________________________________________________________________
bn2a_branch1 (BatchNormalization (None, 49, 49, 256)   1024        res2a_branch1[0][0]              
____________________________________________________________________________________________________
add_1 (Add)                      (None, 49, 49, 256)   0           bn2a_branch2c[0][0]              
                                                                   bn2a_branch1[0][0]               
____________________________________________________________________________________________________
activation_4 (Activation)        (None, 49, 49, 256)   0           add_1[0][0]                      
____________________________________________________________________________________________________
res2b_branch2a (Conv2D)          (None, 49, 49, 64)    16448       activation_4[0][0]               
____________________________________________________________________________________________________
bn2b_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_5 (Activation)        (None, 49, 49, 64)    0           bn2b_branch2a[0][0]              
____________________________________________________________________________________________________
res2b_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_5[0][0]               
____________________________________________________________________________________________________
bn2b_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_6 (Activation)        (None, 49, 49, 64)    0           bn2b_branch2b[0][0]              
____________________________________________________________________________________________________
res2b_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_6[0][0]               
____________________________________________________________________________________________________
bn2b_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2b_branch2c[0][0]             
____________________________________________________________________________________________________
add_2 (Add)                      (None, 49, 49, 256)   0           bn2b_branch2c[0][0]              
                                                                   activation_4[0][0]               
____________________________________________________________________________________________________
activation_7 (Activation)        (None, 49, 49, 256)   0           add_2[0][0]                      
____________________________________________________________________________________________________
res2c_branch2a (Conv2D)          (None, 49, 49, 64)    16448       activation_7[0][0]               
____________________________________________________________________________________________________
bn2c_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_8 (Activation)        (None, 49, 49, 64)    0           bn2c_branch2a[0][0]              
____________________________________________________________________________________________________
res2c_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_8[0][0]               
____________________________________________________________________________________________________
bn2c_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_9 (Activation)        (None, 49, 49, 64)    0           bn2c_branch2b[0][0]              
____________________________________________________________________________________________________
res2c_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_9[0][0]               
____________________________________________________________________________________________________
bn2c_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2c_branch2c[0][0]             
____________________________________________________________________________________________________
add_3 (Add)                      (None, 49, 49, 256)   0           bn2c_branch2c[0][0]              
                                                                   activation_7[0][0]               
____________________________________________________________________________________________________
activation_10 (Activation)       (None, 49, 49, 256)   0           add_3[0][0]                      
____________________________________________________________________________________________________
res3a_branch2a (Conv2D)          (None, 25, 25, 128)   32896       activation_10[0][0]              
____________________________________________________________________________________________________
bn3a_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_11 (Activation)       (None, 25, 25, 128)   0           bn3a_branch2a[0][0]              
____________________________________________________________________________________________________
res3a_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_11[0][0]              
____________________________________________________________________________________________________
bn3a_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_12 (Activation)       (None, 25, 25, 128)   0           bn3a_branch2b[0][0]              
____________________________________________________________________________________________________
res3a_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_12[0][0]              
____________________________________________________________________________________________________
res3a_branch1 (Conv2D)           (None, 25, 25, 512)   131584      activation_10[0][0]              
____________________________________________________________________________________________________
bn3a_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3a_branch2c[0][0]             
____________________________________________________________________________________________________
bn3a_branch1 (BatchNormalization (None, 25, 25, 512)   2048        res3a_branch1[0][0]              
____________________________________________________________________________________________________
add_4 (Add)                      (None, 25, 25, 512)   0           bn3a_branch2c[0][0]              
                                                                   bn3a_branch1[0][0]               
____________________________________________________________________________________________________
activation_13 (Activation)       (None, 25, 25, 512)   0           add_4[0][0]                      
____________________________________________________________________________________________________
res3b_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_13[0][0]              
____________________________________________________________________________________________________
bn3b_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_14 (Activation)       (None, 25, 25, 128)   0           bn3b_branch2a[0][0]              
____________________________________________________________________________________________________
res3b_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_14[0][0]              
____________________________________________________________________________________________________
bn3b_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_15 (Activation)       (None, 25, 25, 128)   0           bn3b_branch2b[0][0]              
____________________________________________________________________________________________________
res3b_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_15[0][0]              
____________________________________________________________________________________________________
bn3b_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3b_branch2c[0][0]             
____________________________________________________________________________________________________
add_5 (Add)                      (None, 25, 25, 512)   0           bn3b_branch2c[0][0]              
                                                                   activation_13[0][0]              
____________________________________________________________________________________________________
activation_16 (Activation)       (None, 25, 25, 512)   0           add_5[0][0]                      
____________________________________________________________________________________________________
res3c_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_16[0][0]              
____________________________________________________________________________________________________
bn3c_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_17 (Activation)       (None, 25, 25, 128)   0           bn3c_branch2a[0][0]              
____________________________________________________________________________________________________
res3c_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_17[0][0]              
____________________________________________________________________________________________________
bn3c_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_18 (Activation)       (None, 25, 25, 128)   0           bn3c_branch2b[0][0]              
____________________________________________________________________________________________________
res3c_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_18[0][0]              
____________________________________________________________________________________________________
bn3c_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3c_branch2c[0][0]             
____________________________________________________________________________________________________
add_6 (Add)                      (None, 25, 25, 512)   0           bn3c_branch2c[0][0]              
                                                                   activation_16[0][0]              
____________________________________________________________________________________________________
activation_19 (Activation)       (None, 25, 25, 512)   0           add_6[0][0]                      
____________________________________________________________________________________________________
res3d_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_19[0][0]              
____________________________________________________________________________________________________
bn3d_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3d_branch2a[0][0]             
____________________________________________________________________________________________________
activation_20 (Activation)       (None, 25, 25, 128)   0           bn3d_branch2a[0][0]              
____________________________________________________________________________________________________
res3d_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_20[0][0]              
____________________________________________________________________________________________________
bn3d_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3d_branch2b[0][0]             
____________________________________________________________________________________________________
activation_21 (Activation)       (None, 25, 25, 128)   0           bn3d_branch2b[0][0]              
____________________________________________________________________________________________________
res3d_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_21[0][0]              
____________________________________________________________________________________________________
bn3d_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3d_branch2c[0][0]             
____________________________________________________________________________________________________
add_7 (Add)                      (None, 25, 25, 512)   0           bn3d_branch2c[0][0]              
                                                                   activation_19[0][0]              
____________________________________________________________________________________________________
activation_22 (Activation)       (None, 25, 25, 512)   0           add_7[0][0]                      
____________________________________________________________________________________________________
res4a_branch2a (Conv2D)          (None, 13, 13, 256)   131328      activation_22[0][0]              
____________________________________________________________________________________________________
bn4a_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_23 (Activation)       (None, 13, 13, 256)   0           bn4a_branch2a[0][0]              
____________________________________________________________________________________________________
res4a_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_23[0][0]              
____________________________________________________________________________________________________
bn4a_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_24 (Activation)       (None, 13, 13, 256)   0           bn4a_branch2b[0][0]              
____________________________________________________________________________________________________
res4a_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_24[0][0]              
____________________________________________________________________________________________________
res4a_branch1 (Conv2D)           (None, 13, 13, 1024)  525312      activation_22[0][0]              
____________________________________________________________________________________________________
bn4a_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4a_branch2c[0][0]             
____________________________________________________________________________________________________
bn4a_branch1 (BatchNormalization (None, 13, 13, 1024)  4096        res4a_branch1[0][0]              
____________________________________________________________________________________________________
add_8 (Add)                      (None, 13, 13, 1024)  0           bn4a_branch2c[0][0]              
                                                                   bn4a_branch1[0][0]               
____________________________________________________________________________________________________
activation_25 (Activation)       (None, 13, 13, 1024)  0           add_8[0][0]                      
____________________________________________________________________________________________________
res4b_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_25[0][0]              
____________________________________________________________________________________________________
bn4b_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_26 (Activation)       (None, 13, 13, 256)   0           bn4b_branch2a[0][0]              
____________________________________________________________________________________________________
res4b_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_26[0][0]              
____________________________________________________________________________________________________
bn4b_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_27 (Activation)       (None, 13, 13, 256)   0           bn4b_branch2b[0][0]              
____________________________________________________________________________________________________
res4b_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_27[0][0]              
____________________________________________________________________________________________________
bn4b_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4b_branch2c[0][0]             
____________________________________________________________________________________________________
add_9 (Add)                      (None, 13, 13, 1024)  0           bn4b_branch2c[0][0]              
                                                                   activation_25[0][0]              
____________________________________________________________________________________________________
activation_28 (Activation)       (None, 13, 13, 1024)  0           add_9[0][0]                      
____________________________________________________________________________________________________
res4c_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_28[0][0]              
____________________________________________________________________________________________________
bn4c_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_29 (Activation)       (None, 13, 13, 256)   0           bn4c_branch2a[0][0]              
____________________________________________________________________________________________________
res4c_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_29[0][0]              
____________________________________________________________________________________________________
bn4c_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_30 (Activation)       (None, 13, 13, 256)   0           bn4c_branch2b[0][0]              
____________________________________________________________________________________________________
res4c_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_30[0][0]              
____________________________________________________________________________________________________
bn4c_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4c_branch2c[0][0]             
____________________________________________________________________________________________________
add_10 (Add)                     (None, 13, 13, 1024)  0           bn4c_branch2c[0][0]              
                                                                   activation_28[0][0]              
____________________________________________________________________________________________________
activation_31 (Activation)       (None, 13, 13, 1024)  0           add_10[0][0]                     
____________________________________________________________________________________________________
res4d_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_31[0][0]              
____________________________________________________________________________________________________
bn4d_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4d_branch2a[0][0]             
____________________________________________________________________________________________________
activation_32 (Activation)       (None, 13, 13, 256)   0           bn4d_branch2a[0][0]              
____________________________________________________________________________________________________
res4d_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_32[0][0]              
____________________________________________________________________________________________________
bn4d_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4d_branch2b[0][0]             
____________________________________________________________________________________________________
activation_33 (Activation)       (None, 13, 13, 256)   0           bn4d_branch2b[0][0]              
____________________________________________________________________________________________________
res4d_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_33[0][0]              
____________________________________________________________________________________________________
bn4d_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4d_branch2c[0][0]             
____________________________________________________________________________________________________
add_11 (Add)                     (None, 13, 13, 1024)  0           bn4d_branch2c[0][0]              
                                                                   activation_31[0][0]              
____________________________________________________________________________________________________
activation_34 (Activation)       (None, 13, 13, 1024)  0           add_11[0][0]                     
____________________________________________________________________________________________________
res4e_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_34[0][0]              
____________________________________________________________________________________________________
bn4e_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4e_branch2a[0][0]             
____________________________________________________________________________________________________
activation_35 (Activation)       (None, 13, 13, 256)   0           bn4e_branch2a[0][0]              
____________________________________________________________________________________________________
res4e_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_35[0][0]              
____________________________________________________________________________________________________
bn4e_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4e_branch2b[0][0]             
____________________________________________________________________________________________________
activation_36 (Activation)       (None, 13, 13, 256)   0           bn4e_branch2b[0][0]              
____________________________________________________________________________________________________
res4e_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_36[0][0]              
____________________________________________________________________________________________________
bn4e_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4e_branch2c[0][0]             
____________________________________________________________________________________________________
add_12 (Add)                     (None, 13, 13, 1024)  0           bn4e_branch2c[0][0]              
                                                                   activation_34[0][0]              
____________________________________________________________________________________________________
activation_37 (Activation)       (None, 13, 13, 1024)  0           add_12[0][0]                     
____________________________________________________________________________________________________
res4f_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_37[0][0]              
____________________________________________________________________________________________________
bn4f_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4f_branch2a[0][0]             
____________________________________________________________________________________________________
activation_38 (Activation)       (None, 13, 13, 256)   0           bn4f_branch2a[0][0]              
____________________________________________________________________________________________________
res4f_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_38[0][0]              
____________________________________________________________________________________________________
bn4f_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4f_branch2b[0][0]             
____________________________________________________________________________________________________
activation_39 (Activation)       (None, 13, 13, 256)   0           bn4f_branch2b[0][0]              
____________________________________________________________________________________________________
res4f_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_39[0][0]              
____________________________________________________________________________________________________
bn4f_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4f_branch2c[0][0]             
____________________________________________________________________________________________________
add_13 (Add)                     (None, 13, 13, 1024)  0           bn4f_branch2c[0][0]              
                                                                   activation_37[0][0]              
____________________________________________________________________________________________________
activation_40 (Activation)       (None, 13, 13, 1024)  0           add_13[0][0]                     
____________________________________________________________________________________________________
global_average_pooling2d_2 (Glob (None, 1024)          0           activation_40[0][0]              
____________________________________________________________________________________________________
output (Dense)                   (None, 2)             2050        global_average_pooling2d_2[0][0] 
====================================================================================================
Total params: 8,591,234
Trainable params: 8,560,642
Non-trainable params: 30,592
____________________________________________________________________________________________________

In [7]:
file = list(tp.png_name)[0]
img = np.array(Image.open(file))   
img = np.expand_dims(img, axis=0) 
in_img = preprocess_input(img.astype("float32"))
print(in_img.shape)


(1, 200, 200, 3)

In [8]:
plt.imshow(img[0])
plt.show()



In [9]:
last_conv_layer = model.get_layer('activation_40').output

relu_out = K.function([model.get_layer('input_1').input], 
                      [model.get_layer('output').output, last_conv_layer])

In [10]:
#get filter output and score
output, last_convlayer_value = relu_out([in_img])

In [27]:
dense_weight = model.get_layer('output').get_weights()[0]
print(last_convlayer_value.shape)
print(dense_weight.shape)


(1, 13, 13, 1024)
(1024, 2)

In [28]:
last_convlayer_value1 = last_convlayer_value[0]
for i in range(1024):
    last_convlayer_value1[:,:,i] *= dense_weight[:, 0][i]
print(last_convlayer_value1.shape)


(13, 13, 1024)

In [29]:
cam = np.sum(last_convlayer_value1, axis = 2)
print(cam.shape)


(13, 13)

In [26]:
cam2 = np.dot(last_convlayer_value[0], dense_weight[:, 0])

In [15]:
plt.subplot(121)
plt.imshow(cam)
plt.subplot(122)
plt.imshow(cam2)


Out[15]:
<matplotlib.image.AxesImage at 0x7f0fccf659e8>

In [30]:
cam_big = cv2.resize(cam, (img[0].shape[0], img[0].shape[1]), interpolation = cv2.INTER_LINEAR)

# show img
print(os.path.basename(file))
print("score: "+str(output[0]))
print("img")
plt.subplot(121)
plt.title("Image")
plt.imshow(img[0])

plt.subplot(122)
plt.title("CAM")
plt.imshow(cam_big, cmap='rainbow')
plt.show()


A056_3_13_1111_81Bri.png
score: [  2.98492964e-08   1.00000000e+00]
img

Grad-CAM


In [17]:
model = load_model('/home/jimmy15923/Project_theta/Advantech/model/model_noballaug_cross_k1.h5')

In [18]:
model = model.get_layer("model_1")
model.summary()


____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_1 (InputLayer)             (None, 200, 200, 3)   0                                            
____________________________________________________________________________________________________
zero_padding2d_1 (ZeroPadding2D) (None, 206, 206, 3)   0           input_1[0][0]                    
____________________________________________________________________________________________________
conv1 (Conv2D)                   (None, 100, 100, 64)  9472        zero_padding2d_1[0][0]           
____________________________________________________________________________________________________
bn_conv1 (BatchNormalization)    (None, 100, 100, 64)  256         conv1[0][0]                      
____________________________________________________________________________________________________
activation_1 (Activation)        (None, 100, 100, 64)  0           bn_conv1[0][0]                   
____________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)   (None, 49, 49, 64)    0           activation_1[0][0]               
____________________________________________________________________________________________________
res2a_branch2a (Conv2D)          (None, 49, 49, 64)    4160        max_pooling2d_1[0][0]            
____________________________________________________________________________________________________
bn2a_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_2 (Activation)        (None, 49, 49, 64)    0           bn2a_branch2a[0][0]              
____________________________________________________________________________________________________
res2a_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_2[0][0]               
____________________________________________________________________________________________________
bn2a_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_3 (Activation)        (None, 49, 49, 64)    0           bn2a_branch2b[0][0]              
____________________________________________________________________________________________________
res2a_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_3[0][0]               
____________________________________________________________________________________________________
res2a_branch1 (Conv2D)           (None, 49, 49, 256)   16640       max_pooling2d_1[0][0]            
____________________________________________________________________________________________________
bn2a_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2a_branch2c[0][0]             
____________________________________________________________________________________________________
bn2a_branch1 (BatchNormalization (None, 49, 49, 256)   1024        res2a_branch1[0][0]              
____________________________________________________________________________________________________
add_1 (Add)                      (None, 49, 49, 256)   0           bn2a_branch2c[0][0]              
                                                                   bn2a_branch1[0][0]               
____________________________________________________________________________________________________
activation_4 (Activation)        (None, 49, 49, 256)   0           add_1[0][0]                      
____________________________________________________________________________________________________
res2b_branch2a (Conv2D)          (None, 49, 49, 64)    16448       activation_4[0][0]               
____________________________________________________________________________________________________
bn2b_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_5 (Activation)        (None, 49, 49, 64)    0           bn2b_branch2a[0][0]              
____________________________________________________________________________________________________
res2b_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_5[0][0]               
____________________________________________________________________________________________________
bn2b_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_6 (Activation)        (None, 49, 49, 64)    0           bn2b_branch2b[0][0]              
____________________________________________________________________________________________________
res2b_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_6[0][0]               
____________________________________________________________________________________________________
bn2b_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2b_branch2c[0][0]             
____________________________________________________________________________________________________
add_2 (Add)                      (None, 49, 49, 256)   0           bn2b_branch2c[0][0]              
                                                                   activation_4[0][0]               
____________________________________________________________________________________________________
activation_7 (Activation)        (None, 49, 49, 256)   0           add_2[0][0]                      
____________________________________________________________________________________________________
res2c_branch2a (Conv2D)          (None, 49, 49, 64)    16448       activation_7[0][0]               
____________________________________________________________________________________________________
bn2c_branch2a (BatchNormalizatio (None, 49, 49, 64)    256         res2c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_8 (Activation)        (None, 49, 49, 64)    0           bn2c_branch2a[0][0]              
____________________________________________________________________________________________________
res2c_branch2b (Conv2D)          (None, 49, 49, 64)    36928       activation_8[0][0]               
____________________________________________________________________________________________________
bn2c_branch2b (BatchNormalizatio (None, 49, 49, 64)    256         res2c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_9 (Activation)        (None, 49, 49, 64)    0           bn2c_branch2b[0][0]              
____________________________________________________________________________________________________
res2c_branch2c (Conv2D)          (None, 49, 49, 256)   16640       activation_9[0][0]               
____________________________________________________________________________________________________
bn2c_branch2c (BatchNormalizatio (None, 49, 49, 256)   1024        res2c_branch2c[0][0]             
____________________________________________________________________________________________________
add_3 (Add)                      (None, 49, 49, 256)   0           bn2c_branch2c[0][0]              
                                                                   activation_7[0][0]               
____________________________________________________________________________________________________
activation_10 (Activation)       (None, 49, 49, 256)   0           add_3[0][0]                      
____________________________________________________________________________________________________
res3a_branch2a (Conv2D)          (None, 25, 25, 128)   32896       activation_10[0][0]              
____________________________________________________________________________________________________
bn3a_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_11 (Activation)       (None, 25, 25, 128)   0           bn3a_branch2a[0][0]              
____________________________________________________________________________________________________
res3a_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_11[0][0]              
____________________________________________________________________________________________________
bn3a_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_12 (Activation)       (None, 25, 25, 128)   0           bn3a_branch2b[0][0]              
____________________________________________________________________________________________________
res3a_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_12[0][0]              
____________________________________________________________________________________________________
res3a_branch1 (Conv2D)           (None, 25, 25, 512)   131584      activation_10[0][0]              
____________________________________________________________________________________________________
bn3a_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3a_branch2c[0][0]             
____________________________________________________________________________________________________
bn3a_branch1 (BatchNormalization (None, 25, 25, 512)   2048        res3a_branch1[0][0]              
____________________________________________________________________________________________________
add_4 (Add)                      (None, 25, 25, 512)   0           bn3a_branch2c[0][0]              
                                                                   bn3a_branch1[0][0]               
____________________________________________________________________________________________________
activation_13 (Activation)       (None, 25, 25, 512)   0           add_4[0][0]                      
____________________________________________________________________________________________________
res3b_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_13[0][0]              
____________________________________________________________________________________________________
bn3b_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_14 (Activation)       (None, 25, 25, 128)   0           bn3b_branch2a[0][0]              
____________________________________________________________________________________________________
res3b_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_14[0][0]              
____________________________________________________________________________________________________
bn3b_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_15 (Activation)       (None, 25, 25, 128)   0           bn3b_branch2b[0][0]              
____________________________________________________________________________________________________
res3b_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_15[0][0]              
____________________________________________________________________________________________________
bn3b_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3b_branch2c[0][0]             
____________________________________________________________________________________________________
add_5 (Add)                      (None, 25, 25, 512)   0           bn3b_branch2c[0][0]              
                                                                   activation_13[0][0]              
____________________________________________________________________________________________________
activation_16 (Activation)       (None, 25, 25, 512)   0           add_5[0][0]                      
____________________________________________________________________________________________________
res3c_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_16[0][0]              
____________________________________________________________________________________________________
bn3c_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_17 (Activation)       (None, 25, 25, 128)   0           bn3c_branch2a[0][0]              
____________________________________________________________________________________________________
res3c_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_17[0][0]              
____________________________________________________________________________________________________
bn3c_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_18 (Activation)       (None, 25, 25, 128)   0           bn3c_branch2b[0][0]              
____________________________________________________________________________________________________
res3c_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_18[0][0]              
____________________________________________________________________________________________________
bn3c_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3c_branch2c[0][0]             
____________________________________________________________________________________________________
add_6 (Add)                      (None, 25, 25, 512)   0           bn3c_branch2c[0][0]              
                                                                   activation_16[0][0]              
____________________________________________________________________________________________________
activation_19 (Activation)       (None, 25, 25, 512)   0           add_6[0][0]                      
____________________________________________________________________________________________________
res3d_branch2a (Conv2D)          (None, 25, 25, 128)   65664       activation_19[0][0]              
____________________________________________________________________________________________________
bn3d_branch2a (BatchNormalizatio (None, 25, 25, 128)   512         res3d_branch2a[0][0]             
____________________________________________________________________________________________________
activation_20 (Activation)       (None, 25, 25, 128)   0           bn3d_branch2a[0][0]              
____________________________________________________________________________________________________
res3d_branch2b (Conv2D)          (None, 25, 25, 128)   147584      activation_20[0][0]              
____________________________________________________________________________________________________
bn3d_branch2b (BatchNormalizatio (None, 25, 25, 128)   512         res3d_branch2b[0][0]             
____________________________________________________________________________________________________
activation_21 (Activation)       (None, 25, 25, 128)   0           bn3d_branch2b[0][0]              
____________________________________________________________________________________________________
res3d_branch2c (Conv2D)          (None, 25, 25, 512)   66048       activation_21[0][0]              
____________________________________________________________________________________________________
bn3d_branch2c (BatchNormalizatio (None, 25, 25, 512)   2048        res3d_branch2c[0][0]             
____________________________________________________________________________________________________
add_7 (Add)                      (None, 25, 25, 512)   0           bn3d_branch2c[0][0]              
                                                                   activation_19[0][0]              
____________________________________________________________________________________________________
activation_22 (Activation)       (None, 25, 25, 512)   0           add_7[0][0]                      
____________________________________________________________________________________________________
res4a_branch2a (Conv2D)          (None, 13, 13, 256)   131328      activation_22[0][0]              
____________________________________________________________________________________________________
bn4a_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4a_branch2a[0][0]             
____________________________________________________________________________________________________
activation_23 (Activation)       (None, 13, 13, 256)   0           bn4a_branch2a[0][0]              
____________________________________________________________________________________________________
res4a_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_23[0][0]              
____________________________________________________________________________________________________
bn4a_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4a_branch2b[0][0]             
____________________________________________________________________________________________________
activation_24 (Activation)       (None, 13, 13, 256)   0           bn4a_branch2b[0][0]              
____________________________________________________________________________________________________
res4a_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_24[0][0]              
____________________________________________________________________________________________________
res4a_branch1 (Conv2D)           (None, 13, 13, 1024)  525312      activation_22[0][0]              
____________________________________________________________________________________________________
bn4a_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4a_branch2c[0][0]             
____________________________________________________________________________________________________
bn4a_branch1 (BatchNormalization (None, 13, 13, 1024)  4096        res4a_branch1[0][0]              
____________________________________________________________________________________________________
add_8 (Add)                      (None, 13, 13, 1024)  0           bn4a_branch2c[0][0]              
                                                                   bn4a_branch1[0][0]               
____________________________________________________________________________________________________
activation_25 (Activation)       (None, 13, 13, 1024)  0           add_8[0][0]                      
____________________________________________________________________________________________________
res4b_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_25[0][0]              
____________________________________________________________________________________________________
bn4b_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4b_branch2a[0][0]             
____________________________________________________________________________________________________
activation_26 (Activation)       (None, 13, 13, 256)   0           bn4b_branch2a[0][0]              
____________________________________________________________________________________________________
res4b_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_26[0][0]              
____________________________________________________________________________________________________
bn4b_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4b_branch2b[0][0]             
____________________________________________________________________________________________________
activation_27 (Activation)       (None, 13, 13, 256)   0           bn4b_branch2b[0][0]              
____________________________________________________________________________________________________
res4b_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_27[0][0]              
____________________________________________________________________________________________________
bn4b_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4b_branch2c[0][0]             
____________________________________________________________________________________________________
add_9 (Add)                      (None, 13, 13, 1024)  0           bn4b_branch2c[0][0]              
                                                                   activation_25[0][0]              
____________________________________________________________________________________________________
activation_28 (Activation)       (None, 13, 13, 1024)  0           add_9[0][0]                      
____________________________________________________________________________________________________
res4c_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_28[0][0]              
____________________________________________________________________________________________________
bn4c_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4c_branch2a[0][0]             
____________________________________________________________________________________________________
activation_29 (Activation)       (None, 13, 13, 256)   0           bn4c_branch2a[0][0]              
____________________________________________________________________________________________________
res4c_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_29[0][0]              
____________________________________________________________________________________________________
bn4c_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4c_branch2b[0][0]             
____________________________________________________________________________________________________
activation_30 (Activation)       (None, 13, 13, 256)   0           bn4c_branch2b[0][0]              
____________________________________________________________________________________________________
res4c_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_30[0][0]              
____________________________________________________________________________________________________
bn4c_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4c_branch2c[0][0]             
____________________________________________________________________________________________________
add_10 (Add)                     (None, 13, 13, 1024)  0           bn4c_branch2c[0][0]              
                                                                   activation_28[0][0]              
____________________________________________________________________________________________________
activation_31 (Activation)       (None, 13, 13, 1024)  0           add_10[0][0]                     
____________________________________________________________________________________________________
res4d_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_31[0][0]              
____________________________________________________________________________________________________
bn4d_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4d_branch2a[0][0]             
____________________________________________________________________________________________________
activation_32 (Activation)       (None, 13, 13, 256)   0           bn4d_branch2a[0][0]              
____________________________________________________________________________________________________
res4d_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_32[0][0]              
____________________________________________________________________________________________________
bn4d_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4d_branch2b[0][0]             
____________________________________________________________________________________________________
activation_33 (Activation)       (None, 13, 13, 256)   0           bn4d_branch2b[0][0]              
____________________________________________________________________________________________________
res4d_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_33[0][0]              
____________________________________________________________________________________________________
bn4d_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4d_branch2c[0][0]             
____________________________________________________________________________________________________
add_11 (Add)                     (None, 13, 13, 1024)  0           bn4d_branch2c[0][0]              
                                                                   activation_31[0][0]              
____________________________________________________________________________________________________
activation_34 (Activation)       (None, 13, 13, 1024)  0           add_11[0][0]                     
____________________________________________________________________________________________________
res4e_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_34[0][0]              
____________________________________________________________________________________________________
bn4e_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4e_branch2a[0][0]             
____________________________________________________________________________________________________
activation_35 (Activation)       (None, 13, 13, 256)   0           bn4e_branch2a[0][0]              
____________________________________________________________________________________________________
res4e_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_35[0][0]              
____________________________________________________________________________________________________
bn4e_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4e_branch2b[0][0]             
____________________________________________________________________________________________________
activation_36 (Activation)       (None, 13, 13, 256)   0           bn4e_branch2b[0][0]              
____________________________________________________________________________________________________
res4e_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_36[0][0]              
____________________________________________________________________________________________________
bn4e_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4e_branch2c[0][0]             
____________________________________________________________________________________________________
add_12 (Add)                     (None, 13, 13, 1024)  0           bn4e_branch2c[0][0]              
                                                                   activation_34[0][0]              
____________________________________________________________________________________________________
activation_37 (Activation)       (None, 13, 13, 1024)  0           add_12[0][0]                     
____________________________________________________________________________________________________
res4f_branch2a (Conv2D)          (None, 13, 13, 256)   262400      activation_37[0][0]              
____________________________________________________________________________________________________
bn4f_branch2a (BatchNormalizatio (None, 13, 13, 256)   1024        res4f_branch2a[0][0]             
____________________________________________________________________________________________________
activation_38 (Activation)       (None, 13, 13, 256)   0           bn4f_branch2a[0][0]              
____________________________________________________________________________________________________
res4f_branch2b (Conv2D)          (None, 13, 13, 256)   590080      activation_38[0][0]              
____________________________________________________________________________________________________
bn4f_branch2b (BatchNormalizatio (None, 13, 13, 256)   1024        res4f_branch2b[0][0]             
____________________________________________________________________________________________________
activation_39 (Activation)       (None, 13, 13, 256)   0           bn4f_branch2b[0][0]              
____________________________________________________________________________________________________
res4f_branch2c (Conv2D)          (None, 13, 13, 1024)  263168      activation_39[0][0]              
____________________________________________________________________________________________________
bn4f_branch2c (BatchNormalizatio (None, 13, 13, 1024)  4096        res4f_branch2c[0][0]             
____________________________________________________________________________________________________
add_13 (Add)                     (None, 13, 13, 1024)  0           bn4f_branch2c[0][0]              
                                                                   activation_37[0][0]              
____________________________________________________________________________________________________
activation_40 (Activation)       (None, 13, 13, 1024)  0           add_13[0][0]                     
____________________________________________________________________________________________________
global_average_pooling2d_2 (Glob (None, 1024)          0           activation_40[0][0]              
____________________________________________________________________________________________________
output (Dense)                   (None, 2)             2050        global_average_pooling2d_2[0][0] 
====================================================================================================
Total params: 8,591,234
Trainable params: 8,560,642
Non-trainable params: 30,592
____________________________________________________________________________________________________

In [38]:
file = list(tp.png_name)[1]
img = np.array(Image.open(file))   
img = np.expand_dims(img, axis=0) 
in_img = preprocess_input(img.astype("float32"))
print(in_img.shape)


(1, 200, 200, 3)

In [49]:
last_conv_layer = model.get_layer('activation_40').output

grads = K.gradients(model.get_layer('output').output[:,1], last_conv_layer)[0]
pooled_grads = K.mean(grads, axis=(0, 1, 2))


iterate = K.function([model.get_layer("input_1").input], 
                    [grads, last_conv_layer])

In [47]:
grads


Out[47]:
<tf.Tensor 'gradients_5/global_average_pooling2d_2_1/Mean_grad/truediv:0' shape=(?, 13, 13, 1024) dtype=float32>

In [46]:
pooled_grads_value, conv_layer_output_value = iterate([in_img])

print(conv_layer_output_value.shape)
print(pooled_grads_value.shape)


(1, 13, 13, 1024)
(1, 13, 13, 1024)

In [51]:
a  = conv_layer_output_value * pooled_grads_value

In [41]:
conv_layer_output_value = conv_layer_output_value[0]
for i in range(1024):
    conv_layer_output_value[:,:,i] *= pooled_grads_value[i]
    
gradcam = np.sum(a[0], axis=2)
print(gradcam.shape)


(13, 13)

In [59]:
gradcam = np.sum(a[0], axis=2)
print(gradcam.shape)


(13, 13)

In [60]:
gradcam = np.maximum(gradcam, 0)
gradcam /= np.max(gradcam)
gradcam =cv2.resize(gradcam, (img[0].shape[0], img[0].shape[1]))

In [61]:
a.shape


Out[61]:
(1, 13, 13, 1024)

In [62]:
plt.imshow(gradcam)


Out[62]:
<matplotlib.image.AxesImage at 0x7f0f867993c8>

In [52]:
# show img
print(os.path.basename(file))
print("score: "+str(output[0]))
print("img")
plt.subplot(121)
plt.title("Image")
plt.imshow(img[0])

plt.subplot(122)
plt.title("Grad-CAM")
plt.imshow(gradcam, cmap='rainbow')
plt.show()
plt.subplo(133)
plt.imshow(a)


A038_2_20_0560_41Bri.png
score: [  2.98492964e-08   1.00000000e+00]
img
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-52-1dea399853d6> in <module>()
     11 plt.imshow(gradcam, cmap='rainbow')
     12 plt.show()
---> 13 plt.subplo(133)
     14 plt.imshow(a)

AttributeError: module 'matplotlib.pyplot' has no attribute 'subplo'

In [44]:
plt.subplot(121)
plt.title("CAM")
plt.imshow(cam_big, cmap='rainbow')

plt.subplot(122)
plt.title("Grad-CAM")
plt.imshow(gradcam, cmap='rainbow')
plt.show()



In [ ]: