spietras / makeup-recommendation

Makeup recommendation using machine learning and augmented reality ๐Ÿ’„๐Ÿ’…

Home Page:https://spietras.github.io/makeup-recommendation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

makeup-recommendation

Makeup recommendation using machine learning and augmented reality ๐Ÿ’„๐Ÿ’…

Let the app find the most suitable makeup for you and apply it on your face in real-time.

About

This repository provides the source code used in the paper Makeup Recommendation Using Machine Learning and Augmented Reality by S. Pietras and M. K. Kapuล›ciล„ski.

The paper was our Bachelor's thesis at the Faculty of Electronics and Information Technology of the Warsaw University of Technology. It was completed in early 2021 and was written originally in Polish.

You can view the translated, shortened version of the paper here

How it works

Now you don't have to worry about what lipstick to choose for a date ever again. Trust in statistics and let the computer be your makeup artist, sweetie.

Run the Android app, point the camera at your face and click a button. Picture of your face will be uploaded to the server, where a trained neural network will generate a makeup that suits you best*. After that, the results will be transferred back to the Android app and the generated makeup will be applied to your face in real-time.

* At least it will try, but beauty is subjective ๐Ÿ˜‰

Requirements

Regular targets (e.g. webmakeup, jupyter) requirements:

  • Bazel dependencies
  • Conda dependencies
  • rules_python dependencies
  • (Optional) CUDA compatible GPU if you want to use GPU processing

andromakeup runtime requirements:

  • Android device with API level 23 at minimum

Regular targets usage

Building only:

./bazelw build webmakeup

Running:

./bazelw run webmakeup -- --host 0.0.0.0

Testing:

./bazelw test webmakeup/...

If you are on Windows, use bazelw instead of ./bazelw.

andromakeup usage

From andromakeup directory run:

./gradlew TASK

Server IP is kept as a string resource, so make sure to change that to your server IP.

See here for more details or just use Android Studio.

Project structure

Main runnables:

  • webmakeup - server for makeup recommendation
  • andromakeup - main app for Android

Other runnables:

  • climakeup - command line interface for makeup recommendation
  • jupyter - jupyterlab with useful notebooks
  • preprocessing - data preprocessing pipeline

Libraries:

  • imagine - image processing library
  • modelutils - machine learning model utilities
  • ganette - main model used for recommendation
  • automakeup - makeup recommendation library

Other:

  • third_party - third-party code and environment definition
  • config - project configuration
  • tools - project tools

Citation

If you want to cite our work, you can use the following BibTeX entry:

@software{Pietras_Kapuscinski_Makeup_recommendation,
    author = {Pietras, Sebastian and Kapuล›ciล„ski, Maciej Konrad},
    title = {{Makeup recommendation using machine learning and augmented reality}},
    url = {https://github.com/spietras/makeup-recommendation}
}

About

Makeup recommendation using machine learning and augmented reality ๐Ÿ’„๐Ÿ’…

https://spietras.github.io/makeup-recommendation


Languages

Language:Python 48.6%Language:Java 45.7%Language:Kotlin 2.6%Language:Starlark 2.4%Language:Batchfile 0.4%Language:Shell 0.3%