SkinGuard is an end-to-end machine learning project for classifying skin lesions as benign or malignant using deep learning.
The system includes model training, API-based inference, and a web dashboard for uploading images and viewing results.
This project was developed as part of my Project (University of London, 2023) and is intended for educational and research purposes only.
The application consists of:
- A MEAN stack web application (Angular + Node.js + MongoDB)
- A FastAPI service for model inference
- Multiple fine-tuned CNN models, including:
- EfficientNetB7
- Inceptionv3
- MobileNetV3
- ResNet50
- VGG19
- Xception
- Custom CNN
- A dashboard to visualize predictions and stored results
- Other User Modules
The MEAN_STACK_MODULE folder contains:
- Angular frontend
- Node.js backend
All required dependencies are listed in: MEAN_STACK_MODULE/package.json
Install the dependencies and start the backend and frontend as per your local setup.
The FAST_API_MODULE folder contains the FastAPI backend used for model inference.
Follow the official FastAPI documentation to set up and run the API: https://fastapi.tiangolo.com/tutorial/first-steps/
The MongoDB connection is configured in the Node.js backend (app.js) using Mongoose.
The password is read from an environment variable (MONGO_ATLAS_PW) for security.
- Download a skin lesion dataset (ISIC / Kaggle or equivalent)
- Organize the dataset into:
benignmalignantfolders
- Run the notebooks provided in the
Notebooks/folder - Fine-tune the models using transfer learning
- Save or download all fine-tuned models
- Copy the model files into: FAST_API_MODULE/models/
The folder below contains the JSON version of the custom CNN model: MEAN_STACK_MODULE/backend/ml_models/sg_model_1/
This model file will be made available on request.
Create the following folders:
- FAST_API_MODULE/images/
- MEAN_STACK_MODULE/backend/patient_images
These folder is used to store uploaded images.
For testing, add a few unseen images to:
- FAST_API_MODULE/skin_images/test/malignant/
- FAST_API_MODULE/skin_images/test/benign/
These images can be used to validate predictions via the API.
- Upload a skin lesion image
- Run inference using a trained CNN model
- Store predictions and metadata (persistence)
- Display results on the dashboard for later review
- Provides role-based access through separate user modules
The application includes separate modules for different user roles:
- Manages users
- Controls system settings
- Monitors overall system activity
- Manages consultations
- Reviews patient cases
- Reviews model predictions
- Book consultations
- Upload skin lesion images
- View prediction results
- Handle lab results
- Manage test-related data
This project is shared for learning, academic, and portfolio purposes only.
It is not approved for clinical or commercial use.