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()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|