- Create a CNN using Concrete ML to identify if there is a human in a picture.
- Identify the performance limits of a model for this problem using Concrete ML.
- Create benchmarks for different sizes of the input.
- You will need to have a Kaggle account in order to download the dataset, we recommend using Google Login.
- After creating an account you will need to download a
kaggle.json
file as the API key. - You can find that file by going to Your Profile and scrolling down to
the
API
section. - Then create a new token and you will download the
kaggle.json
. - Create a new hidden dictory called
.kaggle
in the home directory. - Move
kaggle.json
to.kaggle
- Required Python version: 3.10 < 3.11
- This project uses Poetry. If you don't already have Poetry installed,
make deps
will install it for you.- Make sure to have installed
curl
before running the command.
- Make sure to have installed
- To install dependencies you will need to run:
make deps
- To download the dataset you will need to run:
make data
- To run the project only once you'll need to run:
make run
- To run the benchmarks you'll need to run:
make benchmark
- This will run the benchmarks for the following input sizes:
- 32x32
- 64x64
- 96x96
- 128x128
- Brace yourself, this will take a while.
- The webapp is a proof of concept heavily inspired by Zama's encrypted image filtering example found on hugging face.
- To run the webapp locally the following command is needed:
make webapp
- A more detailed explanation can be found in the webapps README file.
- Introduction to homomorphic encryption
- Zama Whitepaper.
- Homomorphic Encryption 101.
- Fully Homomorphic Encryption Using Ideal Lattices.
- Concrete ML from Zama.
- Encrypted Image Filtering Using Homomorphic Encryption Blog Post
- MNIST Concrete ML example.
- Convolutional Neural Network advanced example.
human-vs-non-human
dataset used for training.