Inspiration
StarFace started as an idea to promote learning about stars and constellations through a fusion of social media and education.
What it does
Upload your facial features, which are processed by a deep learning model to assign a unique star to your face. This means any picture of you will also be assigned to that same star! After uploading your photo, you are brough to a landing page for your star. Here, you can add messages for other people who may visit your star and create a graphic for social media that contains your star's facts and messages. Finally, you can visit other people stars and leave more messages for your fellow astronauts.
How we built it
The frontend is built in React, while the backend is a microservices architecture composed of two services. One hosts the deep learning model and gives a unique ID to clients that upload an image; it is written in Python using the Flask framework to serve as an API. To find a star based on a person's facial features, we first use a pre-trained VGG-Face model to generate an embedding of a face. We then use principal component analysis to generate a one-dimensional value from the high dimension embedding while preserving as much information as possible. This value is then mapped to an id space of the stars to find the person's star. The other microservice retrieves star data including facts and messages given a star's ID, and it is written in Java with the Spring Boot framework.
Challenges we ran into
Because our team split into working on microservices, communication about how data would be shared between services was always constantly necessary. This was challenging because we worked hard to find a balance between implementing our part before explaining how to interact with it and explaining our part and running the risk of needed to change it - which would lead to more confusion. Overall, we were able to keep things together through system context models that explained exactly how and what data was open to HTTP requests.
Accomplishments that we're proud of
We are especially proud of the deep learning model to assign each user a star based on their facial data. It helps demonstrate how AI can be incorporated into projects where it may seem like AI does not have a place. Additionally, we are proud of the aesthetically pleasing design of the web interface and social media graphics, which are generated by the Java microservice. Finally, seeing each component of the project come together was extra satisfying due to our architecture.
What we learned
Each person choose their aspect of the project (frontend, Python microservice, Java/Spring microservice) because we were already interested and wanted to learn more about our technology. However, more than learning nuances of a framework, we learned a lot about the design of a system and how important it is to keep open communication about the contract we expected each other to abide by when accessing our microservices.
What's next for StarFace
Some features we'd like to add to StarFace in the future include procedurally generated color accurate star gifs to display on a star's landing page in addition to automatically clearing messages after a certain time to prevent long chains of old messages. Additionally, we'd like to continue to expand our dataset so there are more unique stars to visit.

Log in or sign up for Devpost to join the conversation.