team14: image filtering version working on local PC
Browse files- README.md +4 -4
- requirements.txt +1 -0
- server.py +8 -5
README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
emoji: 📸 🌄
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: purple
|
|
@@ -9,14 +9,14 @@ app_file: app.py
|
|
| 9 |
pinned: true
|
| 10 |
tags: [FHE, PPML, privacy, privacy preserving machine learning, image processing,
|
| 11 |
homomorphic encryption, security]
|
| 12 |
-
python_version: 3.
|
| 13 |
---
|
| 14 |
|
| 15 |
-
#
|
| 16 |
|
| 17 |
## Run the application on your machine
|
| 18 |
|
| 19 |
-
In this directory, ie `
|
| 20 |
|
| 21 |
### Install dependencies
|
| 22 |
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Biometric-image matching On Encrypted Data Using Fully Homomorphic Encryption
|
| 3 |
emoji: 📸 🌄
|
| 4 |
colorFrom: purple
|
| 5 |
colorTo: purple
|
|
|
|
| 9 |
pinned: true
|
| 10 |
tags: [FHE, PPML, privacy, privacy preserving machine learning, image processing,
|
| 11 |
homomorphic encryption, security]
|
| 12 |
+
python_version: 3.10.13
|
| 13 |
---
|
| 14 |
|
| 15 |
+
# Biometric image matching using FHE
|
| 16 |
|
| 17 |
## Run the application on your machine
|
| 18 |
|
| 19 |
+
In this directory, ie `team14`, you can do the following steps.
|
| 20 |
|
| 21 |
### Install dependencies
|
| 22 |
|
requirements.txt
CHANGED
|
@@ -1,2 +1,3 @@
|
|
| 1 |
concrete-ml==1.1.0
|
| 2 |
gradio
|
|
|
|
|
|
| 1 |
concrete-ml==1.1.0
|
| 2 |
gradio
|
| 3 |
+
more_itertools
|
server.py
CHANGED
|
@@ -10,9 +10,11 @@ from client_server_interface import FHEServer
|
|
| 10 |
|
| 11 |
# Load the server objects related to all currently available filters once and for all
|
| 12 |
FHE_SERVERS = {
|
| 13 |
-
filter: FHEServer(FILTERS_PATH / f"{filter}/deployment")
|
|
|
|
| 14 |
}
|
| 15 |
|
|
|
|
| 16 |
def get_server_file_path(name, user_id, filter_name):
|
| 17 |
"""Get the correct temporary file path for the server.
|
| 18 |
|
|
@@ -30,10 +32,11 @@ def get_server_file_path(name, user_id, filter_name):
|
|
| 30 |
# Initialize an instance of FastAPI
|
| 31 |
app = FastAPI()
|
| 32 |
|
|
|
|
| 33 |
# Define the default route
|
| 34 |
@app.get("/")
|
| 35 |
def root():
|
| 36 |
-
return {"message": "Welcome to Your
|
| 37 |
|
| 38 |
|
| 39 |
@app.post("/send_input")
|
|
@@ -46,7 +49,7 @@ def send_input(
|
|
| 46 |
# Retrieve the encrypted input image and the evaluation key paths
|
| 47 |
encrypted_image_path = get_server_file_path("encrypted_image", user_id, filter)
|
| 48 |
evaluation_key_path = get_server_file_path("evaluation_key", user_id, filter)
|
| 49 |
-
|
| 50 |
# Write the files using the above paths
|
| 51 |
with encrypted_image_path.open("wb") as encrypted_image, evaluation_key_path.open(
|
| 52 |
"wb"
|
|
@@ -66,9 +69,9 @@ def run_fhe(
|
|
| 66 |
evaluation_key_path = get_server_file_path("evaluation_key", user_id, filter)
|
| 67 |
|
| 68 |
# Read the files using the above paths
|
| 69 |
-
with encrypted_image_path.open(
|
| 70 |
"rb"
|
| 71 |
-
) as evaluation_key_file:
|
| 72 |
encrypted_image = encrypted_image_file.read()
|
| 73 |
evaluation_key = evaluation_key_file.read()
|
| 74 |
|
|
|
|
| 10 |
|
| 11 |
# Load the server objects related to all currently available filters once and for all
|
| 12 |
FHE_SERVERS = {
|
| 13 |
+
filter: FHEServer(FILTERS_PATH / f"{filter}/deployment")
|
| 14 |
+
for filter in AVAILABLE_FILTERS
|
| 15 |
}
|
| 16 |
|
| 17 |
+
|
| 18 |
def get_server_file_path(name, user_id, filter_name):
|
| 19 |
"""Get the correct temporary file path for the server.
|
| 20 |
|
|
|
|
| 32 |
# Initialize an instance of FastAPI
|
| 33 |
app = FastAPI()
|
| 34 |
|
| 35 |
+
|
| 36 |
# Define the default route
|
| 37 |
@app.get("/")
|
| 38 |
def root():
|
| 39 |
+
return {"message": "Welcome to Your biometric image matching!"}
|
| 40 |
|
| 41 |
|
| 42 |
@app.post("/send_input")
|
|
|
|
| 49 |
# Retrieve the encrypted input image and the evaluation key paths
|
| 50 |
encrypted_image_path = get_server_file_path("encrypted_image", user_id, filter)
|
| 51 |
evaluation_key_path = get_server_file_path("evaluation_key", user_id, filter)
|
| 52 |
+
|
| 53 |
# Write the files using the above paths
|
| 54 |
with encrypted_image_path.open("wb") as encrypted_image, evaluation_key_path.open(
|
| 55 |
"wb"
|
|
|
|
| 69 |
evaluation_key_path = get_server_file_path("evaluation_key", user_id, filter)
|
| 70 |
|
| 71 |
# Read the files using the above paths
|
| 72 |
+
with encrypted_image_path.open(
|
| 73 |
"rb"
|
| 74 |
+
) as encrypted_image_file, evaluation_key_path.open("rb") as evaluation_key_file:
|
| 75 |
encrypted_image = encrypted_image_file.read()
|
| 76 |
evaluation_key = evaluation_key_file.read()
|
| 77 |
|