Update cnn_ela_test.py
Browse files- cnn_ela_test.py +12 -29
cnn_ela_test.py
CHANGED
@@ -25,6 +25,12 @@ import matplotlib.pyplot as plt
|
|
25 |
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
|
26 |
from copy import deepcopy
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
model = Sequential()
|
29 |
|
30 |
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'valid',
|
@@ -54,29 +60,24 @@ model.summary()
|
|
54 |
# Load saved weights
|
55 |
model.load_weights("ELA_CNN_ART_V2.h5")
|
56 |
|
|
|
57 |
optimizer = RMSprop(lr=0.0005, rho=0.9, epsilon=1e-08, decay=0.0)
|
58 |
model.compile(optimizer = optimizer , loss = "categorical_crossentropy", metrics=["accuracy"])
|
59 |
|
60 |
-
|
61 |
-
|
62 |
|
63 |
test_real_folder = 'datasets/test_set/real/'
|
64 |
test_fake_folder = 'datasets/test_set/fake/'
|
65 |
|
66 |
-
|
67 |
-
|
68 |
test_ela_output = 'datasets/training_set/ela_output/'
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
test_set = labeling(test_real_folder, test_fake_folder)
|
74 |
X_test = []
|
75 |
Y_test = []
|
76 |
|
77 |
|
78 |
-
|
79 |
-
# Preprocess test set
|
80 |
for index, row in test_set.iterrows():
|
81 |
X_test.append(array(convert_to_ela_image(row[0], 90, test_ela_output).resize((128, 128))).flatten() / 255.0)
|
82 |
Y_test.append(row[1])
|
@@ -127,7 +128,8 @@ def calculate_acc(y_true, y_pred):
|
|
127 |
plt.title('Confusion Matrix')
|
128 |
plt.show()
|
129 |
|
130 |
-
|
|
|
131 |
|
132 |
# Get predicted probabilities
|
133 |
Y_pred_prob = model.predict(X_test)
|
@@ -141,22 +143,3 @@ Y_true = np.argmax(Y_test, axis=1)
|
|
141 |
calculate_acc(Y_true, Y_pred)
|
142 |
|
143 |
model.summary()
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
|
|
25 |
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
|
26 |
from copy import deepcopy
|
27 |
|
28 |
+
|
29 |
+
|
30 |
+
##########################################
|
31 |
+
#define the Cnn network as it was in the training file
|
32 |
+
|
33 |
+
|
34 |
model = Sequential()
|
35 |
|
36 |
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'valid',
|
|
|
60 |
# Load saved weights
|
61 |
model.load_weights("ELA_CNN_ART_V2.h5")
|
62 |
|
63 |
+
#set the optimizer
|
64 |
optimizer = RMSprop(lr=0.0005, rho=0.9, epsilon=1e-08, decay=0.0)
|
65 |
model.compile(optimizer = optimizer , loss = "categorical_crossentropy", metrics=["accuracy"])
|
66 |
|
67 |
+
###########################################
|
68 |
+
#label and order the data
|
69 |
|
70 |
test_real_folder = 'datasets/test_set/real/'
|
71 |
test_fake_folder = 'datasets/test_set/fake/'
|
72 |
|
|
|
|
|
73 |
test_ela_output = 'datasets/training_set/ela_output/'
|
74 |
|
|
|
|
|
|
|
75 |
test_set = labeling(test_real_folder, test_fake_folder)
|
76 |
X_test = []
|
77 |
Y_test = []
|
78 |
|
79 |
|
80 |
+
# Preprocess test set using ELA and then store the output
|
|
|
81 |
for index, row in test_set.iterrows():
|
82 |
X_test.append(array(convert_to_ela_image(row[0], 90, test_ela_output).resize((128, 128))).flatten() / 255.0)
|
83 |
Y_test.append(row[1])
|
|
|
128 |
plt.title('Confusion Matrix')
|
129 |
plt.show()
|
130 |
|
131 |
+
############################################
|
132 |
+
# model preformance metrics and plots
|
133 |
|
134 |
# Get predicted probabilities
|
135 |
Y_pred_prob = model.predict(X_test)
|
|
|
143 |
calculate_acc(Y_true, Y_pred)
|
144 |
|
145 |
model.summary()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|