fixing secure mode
Browse files
app.py
CHANGED
@@ -15,6 +15,7 @@ class_names = ['Fake', 'Real'] # Fix the incorrect mapping
|
|
15 |
|
16 |
# Load the trained model
|
17 |
def load_model(model_path, device):
|
|
|
18 |
model = resnet18_custom(weights=None)
|
19 |
num_ftrs = model.fc.in_features
|
20 |
model.fc = nn.Linear(num_ftrs, len(class_names)) # Assuming 2 classes: Fake and Real
|
@@ -36,6 +37,9 @@ def load_secure_model(model):
|
|
36 |
)
|
37 |
return secure_model
|
38 |
|
|
|
|
|
|
|
39 |
# Image preprocessing (match with the transforms used during training)
|
40 |
data_transform = transforms.Compose([
|
41 |
transforms.Resize((224, 224)),
|
@@ -44,17 +48,7 @@ data_transform = transforms.Compose([
|
|
44 |
|
45 |
# Prediction function
|
46 |
def predict(image, mode):
|
47 |
-
|
48 |
-
device = torch.device(
|
49 |
-
"cuda:0" if torch.cuda.is_available() else
|
50 |
-
"mps" if torch.backends.mps.is_available() else
|
51 |
-
"cpu"
|
52 |
-
)
|
53 |
-
|
54 |
-
print(f"Device: {device}")
|
55 |
-
# Load model
|
56 |
-
model_path = 'models/deepfake_detection_model.pth'
|
57 |
-
model = load_model(model_path, device)
|
58 |
|
59 |
# Apply transformations to the input image
|
60 |
image = Image.open(image).convert('RGB')
|
@@ -69,11 +63,9 @@ def predict(image, mode):
|
|
69 |
outputs = model(image)
|
70 |
elif mode == "Secure":
|
71 |
# Secure mode (e.g., running multiple times for higher confidence)
|
72 |
-
secure_model = load_secure_model(model)
|
73 |
detached_input = image.detach().numpy()
|
74 |
-
outputs = secure_model(detached_input, fhe="simulate")
|
75 |
|
76 |
-
print(outputs)
|
77 |
_, preds = torch.max(outputs, 1)
|
78 |
elapsed_time = time.time() - start_time
|
79 |
|
@@ -96,4 +88,4 @@ iface = gr.Interface(
|
|
96 |
)
|
97 |
|
98 |
if __name__ == "__main__":
|
99 |
-
iface.launch(share=True)
|
|
|
15 |
|
16 |
# Load the trained model
|
17 |
def load_model(model_path, device):
|
18 |
+
print("load_model")
|
19 |
model = resnet18_custom(weights=None)
|
20 |
num_ftrs = model.fc.in_features
|
21 |
model.fc = nn.Linear(num_ftrs, len(class_names)) # Assuming 2 classes: Fake and Real
|
|
|
37 |
)
|
38 |
return secure_model
|
39 |
|
40 |
+
model = load_model('models/deepfake_detection_model.pth', 'cpu')
|
41 |
+
secure_model = load_secure_model(model)
|
42 |
+
|
43 |
# Image preprocessing (match with the transforms used during training)
|
44 |
data_transform = transforms.Compose([
|
45 |
transforms.Resize((224, 224)),
|
|
|
48 |
|
49 |
# Prediction function
|
50 |
def predict(image, mode):
|
51 |
+
device = 'cpu'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
# Apply transformations to the input image
|
54 |
image = Image.open(image).convert('RGB')
|
|
|
63 |
outputs = model(image)
|
64 |
elif mode == "Secure":
|
65 |
# Secure mode (e.g., running multiple times for higher confidence)
|
|
|
66 |
detached_input = image.detach().numpy()
|
67 |
+
outputs = torch.from_numpy(secure_model.forward(detached_input, fhe="simulate"))
|
68 |
|
|
|
69 |
_, preds = torch.max(outputs, 1)
|
70 |
elapsed_time = time.time() - start_time
|
71 |
|
|
|
88 |
)
|
89 |
|
90 |
if __name__ == "__main__":
|
91 |
+
iface.launch(share=True)
|