project 02
RhinoAI
Een mobiele AI-toepassing die gezichtsproporties vóór en na een rhinoplastiek objectief meet. Landmarkdetectie en deep learning-inferentie draaien in realtime, volledig op het apparaat zelf.
- Categorie
- Mobiel
- Rol
- Solo-ontwikkelaar — mobiel en edge-AI
- Jaar
- 2026
gebruikte technologieën
- Kotlin
- Jetpack Compose
- Python
- TensorFlow Lite
- ML Kit
- ViT
probleem
Probleem
Operatieplanning en asymmetriebeoordeling vóór en na een rhinoplastiek berusten grotendeels op de subjectieve waarneming van de arts. Er ontbrak een lichte mobiele tool die de patiënt zijn hoek- en millimeterverhoudingen direct laat zien. Bestaande mobiele oplossingen uploaden de foto naar een server, wat een privacyprobleem oplevert en de app afhankelijk maakt van een internetverbinding.
oplossing
Oplossing
Ik heb een native Android-architectuur gebouwd op Kotlin en Jetpack Compose. De ML Kit Face Mesh-integratie brengt gezichtspunten binnen milliseconden in kaart; voor beeldanalyse en berekening van neushoeken draaien TensorFlow Lite-modellen rechtstreeks op het apparaat. De zwaardere classificatiemodellen zijn omgezet naar TFLite en verkleind via kwantisatie.
resultaat
Resultaat
Het resultaat is een applicatie die volledig lokaal en zonder serverkosten draait en gezichtscontouren plus nasolabiale/dorsale hoeken met 30+ FPS op de live camerastream analyseert. Uitgebracht als open source.
belangrijkste functies
- 01Detectie van 468 gezichtsreferentiepunten via ML Kit Face Mesh, met berekening van asymmetriewaarden.
- 02Live analyse van nasolabiale en dorsale hoeken met 30+ FPS op de camerastream.
- 03On-device inferentie met lage latentie dankzij modellen die geoptimaliseerd en omgezet zijn naar TFLite.
- 04Moderne, reactieve Android-architectuur op basis van MVVM en Jetpack Compose.
- 05Uitgebracht als open source op GitHub.
waarom deze keuzes
Waarom inferentie op het apparaat?
In plaats van de camerastream naar een Python FastAPI-backend te sturen, heb ik alles op het apparaat laten draaien. In een zorgtoepassing is het feit dat de foto de telefoon nooit verlaat een sterkere privacygarantie dan welke servermaatregel dan ook. Dezelfde keuze leverde ook nul latentie en onafhankelijkheid van het netwerk op.
Waarom TensorFlow Lite?
Het op Vision Transformer gebaseerde model was veel te zwaar om rechtstreeks op mobiel te draaien. De TFLite-conversie en kwantisatie brachten zowel de modelgrootte als de inferentietijd terug tot een acceptabel niveau.
Waarom Jetpack Compose?
De app moest landmarks in realtime over een live camerabeeld tekenen. Het reactieve model van Compose gaat veel schoner om met een interface die elk frame ververst dan XML-gebaseerde views.