Final year project · NailHealth

Early-Stage Disease Detection via Computer Vision

NailHealth is a non-invasive diagnostic system that analyses fingernail images to detect early-stage systemic diseases. An ensemble of 7 pre-trained CNNs with XGBoost refinement reaches 93% classification accuracy across 17 disease classes.

  • Python
  • PyTorch
  • TensorFlow
  • Keras
  • XGBoost
  • OpenCV
  • Flask
  • React
  • Ensemble Averaging
classification accuracy
93%
pre-trained CNNs
7
disease classes
17
development methodology
RAD

The problem

Many systemic conditions leave visible signs in the nails, but checking for them usually means a blood draw, an invasive procedure or a clinic visit.

The solution

Upload one fingernail photo. It is resized, normalised and augmented, then an ensemble of seven CNNs refined by XGBoost predicts the condition, logs it to your private history and surfaces relevant health articles.

NailHealth computer vision disease detection application preview

Architecture

Press play to follow a request.

request path

Swipe sideways to explore the diagram →

Nail Disease Detection architectureImage uploadfingernail photoPreprocessresize · normalizeaugmentDenseNet121DenseNet169MobileNetMobileNetV2ResNet50V2ResNet101V2VGG16Ensemble averagemean of 7 outputsXGBoostprediction tuningPrediction17 nail conditions93% accuracy
OVERVIEW

One photo, seven CNNs voting, then XGBoost sharpening the call across 17 nail conditions.

Classification

17 conditions it can recognise.

The five primary classes are filled in. Tap any condition to read what it looks like.

Terry's Nail

Ground-glass opacity covering most of the nail; associated with liver disease, heart failure and diabetes.

Primary class

Ensemble

Seven networks, one answer.

Each pre-trained CNN runs independently on the image. Their softmax outputs are averaged, then an XGBoost layer refines the final disease prediction.

  • DenseNet121

    Dense connectivity, feature reuse

  • DenseNet169

    Deeper dense network

  • MobileNet

    Lightweight depthwise separable convs

  • MobileNetV2

    Inverted residuals, linear bottlenecks

  • ResNet50V2

    50-layer residual network v2

  • ResNet101V2

    101-layer residual network v2

  • VGG16

    16-layer deep CNN baseline

  • Ensemble average

    Averaged softmax probabilities across all 7 models, refined by XGBoost.

Capabilities

What it does well.

  • 01

    Non-invasive diagnosis

    Analyse potential health conditions by uploading a photo of a fingernail: no blood draws, invasive procedures or clinic visits.

  • 02

    93% classification accuracy

    Ensemble averaging across 7 pre-trained convolutional neural networks reaches 93% accuracy, outperforming single-model baselines.

  • 03

    17 disease classes

    Classifies 17 nail conditions, including Terry's nail, Lindsay's nails, splinter haemorrhage and yellow nail, covering a broad range of systemic disease indicators.

  • 04

    Authentication & profiles

    Secure registration and login with personal profiles, so each user manages and revisits their health data privately.

  • 05

    Diagnosis history

    Every prediction is logged to the user's profile and sortable by latest or oldest, giving a longitudinal view of nail health.

  • 06

    Curated health articles

    After each diagnosis the system surfaces articles and advice tailored to the detected condition, promoting informed health decisions.

Stack

Built with.

Model
Python · PyTorch · TensorFlow · Keras · XGBoost · OpenCV
Backend
Python · Flask · REST API · JWT Auth
Frontend
React · JavaScript · Tailwind CSS
Data processing
NumPy · Pandas · Pillow · Scikit-learn
Model strategy
Ensemble averaging · Transfer learning · Data augmentation
Database
MySQL · SQLAlchemy
Next projectSemantic API Discovery Platform