About the project

I am decidely not a software engineer or a web developer. That said, I am endlessly curious and a little too tenatious for my own good. By trade I am an aerospace engineer, by passion I am an artist. As an artist I am deeply interested in the intersection of visuals and music. When I paint, the vibes of my paintings often are reflected in what I am listening to and vice versa. I created this project as an attempt to combine music and images in a fun way. Truthfully, the algorithm probably isn't the most elegant in the world, but this project gave me a chance to practice thinking about developing applications for scale, how to build a UI, integrate APIs, think about costing (no this not free to run) and play around with machine learning. If you are curious about what I build in my free time, follow what I'm up to :). If not, eh that's ok, hope you have fun with this project nonetheless.

High - Level Build Flow


Step 1: Authentication

First step in the user flow. User authentication and then redirect to the main page for uploading photos

Step 2: Image Analysis

User is then sent to page to upload a photo. When they submit the photo image processing determines the vibes of the picture either based on color or facial expression. This outputs requirements for seeds from the user’s listening habits. Those seeds are used to generate recommendations for the user.

Step 3: Poster Output

Once the image is processed it generates a poster for the mixtape with the image and the recommended songs. These songs create

Poster Example

If users choose to download their poster they will get something like this in their downloads. This is generated by python previous to download (so it renders a little differently than the HTML file (bug fixes will get the two closer to each other but that’s a nice to have)

Facial Recognition API

Summary

A FastAPI application provides an endpoint for detecting emotions in images. It downloads an image from a provided URL, processes the image to detect emotions using the fer library, and returns the detected emotions in a JSON response. The application is also set up to be deployable as an AWS Lambda function using Mangum. Originally this was done with the google cloud vision API but this was determined to be too expensive at scale.

Original Model Repository

https://github.com/JustinShenk/fer