Meme Me
Inspiration:
In the age of TikTok, Instagram and social media platforms, digital images have become one's personification of identity on the internet. With the advancement of machine learning technologies, such as generative adversarial networks (GAN), the possibilities of image processing are boundless.
Unlike the notorious deepfake technology, our team decided to put GAN to good use instead, by making innovative and sometimes wacky images using not a person's creativity, but through the magic of algorithm.
In popular internet culture of recent years, memes have become a creative outlet for people to express themselves, and we hope to make fun images with computers.
Meme Me is therefore created!
What it does:
Meme Me is a free-to-use web application which performs image manipulation and processing of user's input images, into various creative results through the use of machine learning, or more specifically, generative adversarial networks. This allows you to make 'memes' of yourself or others.
Some possible outputs from Meme Me includes:
- Wonder how the child of Elon Musk and Jeff Bezos would look like? Wait no further, just throw their pictures and we will generate it.
- A fusion of your favourite celebrities perhaps?
- Video transition of pictures taken 20 years apart
- Create a female/male version of yourself
How we built it:
Meme Me is written mainly in Python with:
- Anvil for its web front-end GUI
- cv2 for image processing
- dlib for facial recognition
- PIL for image processing
Challenges we ran into:
- Usage limits on Google Colab meant we could not use GPU processing for our tests for extended durations and had to balance the testing across different members' accounts
- We used Nodejs+Express as our backend originally, only to realise the tech stack does not gel well with what we want for our user experience.
- Figuring out how to implement a purely Python (Google Colab) Anvil GUI, which has close to zero documentation on what we were attempting to do. However this was worth the trouble and time, as users need not go through complicated techstack or setup, and can access on mobile!
- Dealing with multithreading issues as we had to have a functional GUI running simultaneously with many of our background processes for machine learning and image/video processing.
- Difficulties in understanding and applying machine learning, generative adversarial network black magic.
Accomplishments that we're proud of
- We created something amazing which is absolutely entertaining, we hope :P
- Being entirely new to Anvil and picking it up to create a viable solution in ~22 hours
- Designing some memes/logos/icons for the application so it doesn't look like hello world project 😁
- Project management - Given the huge amount of features our ambitious team have chosen, and the fact that we had to work online due to COVID-19, we did good in splitting and assigning tasks and meeting milestones throughout the day with our regular meetings
What we learned
- LOTS of Anvil, NodeJs, Python
- Generative adversarial network and ML magic
- Google Drive API for our backend file system/processing.
What's next for Meme Me
- Further support for more algorithms, allowing for cooler outputs/results
- Customizability for our algorithm, allow users to tune how crazy the ML goes. Want to have Goldfish eyes? ✅ Want to combine a dog and a fish? ✅ Want to turn yourself into an anime character? ✅
Built With
- anvil
- cv2
- machine-learning
- python
- tesseract
Log in or sign up for Devpost to join the conversation.