project 01
RhinoAI
A mobile AI application that performs rhinoplasty and facial proportion analysis from a user's photo. Face landmark detection and deep learning inference run in real time, entirely on the device.
- Category
- Mobile
- Role
- End-to-end development
technologies used
- Kotlin
- Jetpack Compose
- Python
- TensorFlow Lite
- ML Kit
- ViT
problem
Problem
Facial proportion analysis before rhinoplasty normally requires an expert measurement in a clinical setting — something a person cannot do on their own. Existing mobile solutions upload the photo to a server, which creates a privacy problem and makes the app dependent on an internet connection.
solution
Solution
I built an Android application that runs both face landmark detection and deep learning inference entirely on the device. ML Kit Face Mesh detects 468 reference points, from which facial ratios and asymmetry values are calculated. The heavier classification models were converted to TensorFlow Lite and shrunk through quantisation.
outcome
Outcome
The photo never leaves the device, the analysis works without an internet connection, and server costs are zero.
key features
- 01Detection of 468 facial reference points via ML Kit Face Mesh, with asymmetry calculations.
- 02Low-latency on-device inference using models optimised and converted to TFLite.
- 03Modern, reactive Android architecture built on MVVM and Jetpack Compose.
why these choices
Why TensorFlow Lite?
The Vision Transformer based model was far too heavy to run directly on mobile. TFLite conversion and quantisation brought both the model size and the inference time down to an acceptable level.
Why Jetpack Compose?
The app had to draw landmarks over a live camera preview in real time. Compose's reactive model handles an interface that updates every frame far more cleanly than XML-based views.