- Collected nail images from multiple sources (public datasets + clinical samples).
- Included 22 fine-grained categories (e.g., healthy, psoriasis, fungal infection).
- Cleaned data by removing duplicates, blurry images, and mislabeled samples.
- Unified datasets into a single standardized structure.
- Created a label mapping:
- 22 fine-grained → 10 coarse categories
- Train/val/test split: 70% / 15% / 15%
- Preprocessing:
- Resize images → 224×224
- Normalize pixel values
- Augment data (random flip, rotation, brightness adjustment)
- Framework: PyTorch
- CNN backbones: ResNet18, ResNet50, MobileNetV2, EfficientNet-B0
- Training setup:
- Optimizer: Adam (lr=1e-4)
- Loss: Cross-Entropy Loss
- Batch size: 32
- Epochs: 30–50
- Early stopping to avoid overfitting
- Metrics: Accuracy, Precision, Recall, F1-score
- Evaluation levels:
- Fine-grained (22 classes)
- Coarse (10 classes)
- Hierarchical refinement (Psoriasis vs Shape Deformities)
- Visualizations:
- Confusion matrix
- ROC curves
- Applied Grad-CAM to highlight disease-related nail regions.
- Generated heatmaps for each prediction.
- Compared model interpretability across different CNNs.
- Built FastAPI backend with endpoints for prediction & Grad-CAM.
- Frontend allows users to:
- Upload or capture an image
- View prediction results with probabilities
- Toggle Grad-CAM heatmap
- Tested latency and throughput under different settings.