Loading repository data…
Loading repository data…
equalais / repository
EqualAIs was a project that began as a part of the 2018 Assembly program at the Berkman Klein Center at Harvard University and the MIT Media Lab. This repository is provided open-source as a means for supporting continued work in empowering humans and thwarting machines. Additional cleaning up and documentation pending.
Please feel free to try out our tool and give us feedback on how it works for you.
An API for decoding the steganographic message is not yet available, but images that use equalAIs will have the following message:
I do not consent to use of face detection on this image or derivatives of this image.
We hope to make the decoding API available soon!
To get started you may want to use the associated docker image. To do this you'll need docker and nvidia-docker (for GPU use). If you've installed these you'll need to get the following image:
docker pull socraticdatum/adversarial_attack:latest
Alternatively, you could build the image from source using the Dockerfile provided in this repository.
Once you've cloned this repository, from the root of this repo run:
. ./docker_scripts/launch_adversarial-docker.sh 0 to launch the docker container with nvidia docker your first GPU.. ./docker_scripts/launch_jupyter to start a jupyter notebook.
<server-address>:6888.For more details see the bash scripts. If you add a data directory in the root of this directory it will be made available in the docker container since the root of this directory is mounted to the docker container.
A built version of the docker image is available at: https://hub.docker.com/r/socraticdatum/adversarial_attack/
dlib dependenciespipenv install to install all the required packagespipenv run python -m ipykernel install --user --name="<environment-name>". The <environment-name> is typically found in ~/.virtualenvs and will look something
like assembly_melt-zSdd0Kve.pipenv shell and run jupyter notebook inside the shell) or
just run pipenv run jupyter notebook<environment-name> kernel (this can always be
changed in Kernel -> Change Kernel)To build this dataset execute the following script from the root of this repository.
. ./data_scripts/LFW_CIFAR_V1.sh

We construct the dataset by cropping the border of every LFW image to naively remove black borders. Then, we scale each image to 32x32 to match the dimensions of the CIFAR-10 images.
Finally, we combine the two datasets, added an 11th "face" category to CIFAR-10, creating CIFAR-11. We randomly sample a holdout set from the face category so that the face category will match the other categories by having 6000 observations. The holdout set is also provided in ./data.
The code for our model that we present in the 2018 Assembly Showcase is available in this notebook. For the presentation slides and citation, please see here.
In a Jupyter notebook, we do the following: