UPDATE: We won 2nd place at this Hackathon!
De-identifing patient faces for facilitating protected health information (PHI) exchange among relevant stakeholders.
- Abhi Sharma
- Jasim Alazzawi
- Josh Matz
- Prathamesh Prabhudesai
This repository contains an implementation of AnonNet, our submission to the School of AI Hackathon on March 31st, 2019. AnonNet detects key identifying features on a person's face, i.e., the eyes, eyebrows, and mouth. Using this information, accurate pixelation and/or censor bar placement can de-identify an individual. This has several benefits, including but not limited to:
- Reducing the risk of protected patient information from being leaked
- Reducing the administrative burden of manually de-identifying patient information
- Increasing the availability and access to anonymized information, leading to innovation in the Healthcare space
In order to replicate the AnonNet Jupyter Notebook, you'll need to install fastai and PyTorch. The best resource for this is the following website. The actual Jupyter Notebook contains any other information you might need to fully replicate our approach to facial keypoint detection. Note that this is a transfer learning approach which utilizes a pretrained ResNet34 deep neural network model as the backbone to a custom Anon head which fine-tunes the overall network for our particular dataset.
In order to run the realtime_anon.py script, you will need to install dlib, cv2, imutils, sklearn, and numpy. All of these except cv2 are relatively easy to install. Please create a conda or virtualenv environment and install all dependencies using either conda or pip. You will need to install cv2 using $ pip install opencv-python. Once this is done, simply clone this repository, and execute python realtime_anon.py to de-identify your face in real-time.
While further instructions are included in the AnonNet Jupyter Notebook, for your reference, we developed AnonNet with the help of the "Helen" open source dataset available at this location. In this dataset, you'll find 2330 high resolution images of faces with annotated key features, including eyes, eyebrows, nose, mouth, and jawline, of which, we only utilized the eyes, eyebrows, and mouth, since these are most important for patient identification.
In addition to realtime_anon.py we also have another proof-of-concept for an de-identifying on-demand service at the following GitHub repository.
Thank you to the School of AI and Accenture for hosting this hackathon!
