Skip to content

vishal27shetty/-Quantum-Machine-Learning-for-Dermatological-Health-Risk-Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hybrid Quantum-Classical Model for Health Risk Assessment from Skin Images

Python Qiskit PyTorch License


πŸ“‹ Table of Contents


πŸ”¬ Overview

This project demonstrates a Hybrid Quantum-Classical Machine Learning system for assessing skin health risks. It combines classical deep learning (CNN) for feature extraction with quantum computing (Variational Quantum Classifier) for classification, creating a novel approach to non-invasive health screening.

The system analyzes skin images and classifies them into two risk categories:

  • Low Risk: Healthy skin
  • High Risk: Signs of vitamin C deficiency on skin

🎯 Background

Severe Vitamin C deficiency (scurvy) manifests on skin in various ways, including:

  • Skin discoloration
  • Rough, dry, scaly skin
  • Corkscrew hairs
  • Red or blue spots on the skin
  • Poor wound healing
  • Skin lesions

This project explores advanced computational models for health screening by leveraging:

  1. Classical CNNs for extracting visual patterns from skin images
  2. Quantum Machine Learning for enhanced classification capabilities

πŸ—οΈ Technical Architecture

The system implements a hybrid quantum-classical pipeline with the following workflow:

Step 1: Image Input & Preprocessing

  • Accepts skin images in standard formats (JPEG, PNG, WEBP)
  • Standardizes images to 224Γ—224 pixels
  • Applies normalization using ImageNet statistics

Step 2: Classical Feature Extraction

  • ResNet18 backbone (pretrained on ImageNet) extracts high-level visual features
  • Custom reduction layers compress 512 features β†’ 8-dimensional feature vector
  • Output features normalized to [-1, 1] range using Tanh activation

Step 3: Quantum Classification

  • ZZ Feature Map encodes classical features into quantum states
  • Variational Quantum Circuit with parameterized gates processes the quantum state
  • Uses 8 qubits with 2 variational layers
  • Entanglement pattern: full connectivity for maximum expressiveness

Step 4: Measurement & Output

  • Quantum expectation values measured from circuit
  • Post-processing layer maps quantum output to binary classification
  • Softmax produces final risk probabilities
Input Image β†’ CNN Feature Extractor β†’ Quantum Classifier β†’ Risk Assessment
  (224Γ—224)      (512 β†’ 8 features)      (8 qubits)        (Low/High Risk)

πŸ“Š Dataset Specification

The model is trained on two distinct categories:

Folder 1: healthy images skin

  • Contains images of healthy skin
  • Represents the negative class (Low Risk)
  • ~100+ images

Folder 2: unhealthy skin

  • Contains images of unhealthy skin associated with vitamin C deficiency
  • Represents the positive class (High Risk)
  • ~100+ images

Note: Images should show clear skin views for best results.


πŸ”§ Installation

Prerequisites

  • Python 3.8 or higher
  • pip package manager
  • 8GB+ RAM recommended
  • CPU-based (quantum circuits run on CPU)

Step 1: Clone or Download the Repository

cd "Vitamin Project"

Step 2: Create a Virtual Environment (Recommended)

Windows:

python -m venv venv
venv\Scripts\activate

macOS/Linux:

python3 -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

pip install -r requirements.txt

This will install:

  • Qiskit 1.0+ (Quantum computing framework)
  • PyTorch 2.2+ (Deep learning)
  • Torchvision (Computer vision utilities)
  • Pillow, OpenCV (Image processing)
  • NumPy, scikit-learn (Data science)
  • Matplotlib (Visualization)

Step 4: Verify Installation

python -c "import qiskit; import torch; print('Installation successful!')"

πŸ“ Project Structure

Vitamin Project/
β”œβ”€β”€ README.md                      # This file
β”œβ”€β”€ requirements.txt               # Python dependencies
β”œβ”€β”€ train.py                       # Training script
β”œβ”€β”€ predict.py                     # Inference script
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ __init__.py               # Package initialization
β”‚   β”œβ”€β”€ data_loader.py            # Data loading & preprocessing
β”‚   β”œβ”€β”€ classical_cnn.py          # CNN feature extractor
β”‚   β”œβ”€β”€ quantum_classifier.py     # Variational Quantum Classifier
β”‚   └── hybrid_model.py           # Complete hybrid model
β”œβ”€β”€ healthy images skin/          # Training data (healthy skin)
β”‚   └── [100+ image files]
β”œβ”€β”€ unhealthy skin/               # Training data (deficiency)
β”‚   └── [100+ image files]
└── output/                       # Created during training
    β”œβ”€β”€ checkpoints/
    β”‚   β”œβ”€β”€ best_model.pth        # Best model weights
    β”‚   └── latest_model.pth      # Latest checkpoint
    β”œβ”€β”€ final_model.pth           # Final trained model
    └── training_history.png      # Training plots

πŸš€ Usage

Training the Model

Train the hybrid quantum-classical model on your skin health dataset:

Basic Training

python train.py

This uses default settings:

  • Feature dimension: 8 qubits
  • Quantum layers: 2
  • Batch size: 4
  • Epochs: 20
  • Learning rate: 0.001

Advanced Training Options

python train.py \
    --healthy_dir "healthy images skin" \
    --deficiency_dir "unhealthy skin" \
    --feature_dim 8 \
    --num_layers 2 \
    --batch_size 4 \
    --epochs 20 \
    --lr 0.001 \
    --pretrained \
    --output_dir output

Key Arguments:

Argument Description Default
--healthy_dir Path to healthy skin images healthy images skin
--deficiency_dir Path to deficiency images unhealthy skin
--feature_dim Number of qubits/features 8
--num_layers Quantum variational layers 2
--batch_size Training batch size 4
--epochs Number of training epochs 20
--lr Learning rate 0.001
--pretrained Use pretrained CNN backbone False
--test_split Validation split ratio 0.2
--output_dir Output directory output

Training Output

During training, you'll see:

  • Real-time progress bars with loss and accuracy
  • Epoch summaries
  • Best model checkpoints saved automatically
  • Training history plots

Example Output:

============================================================
SKIN HEALTH QUANTUM ML TRAINING
============================================================
Loaded 100 healthy images
Loaded 100 deficiency images

Train set: 160 images
Validation set: 40 images

Quantum Circuit created with 8 qubits and 2 layers
Total parameters: 40

Epoch 1/20
Train Loss: 0.6234 | Train Acc: 68.50%
Val Loss:   0.5891 | Val Acc:   72.50%
βœ“ New best model saved!

Making Predictions

Once trained, use the model to classify new skin images:

Single Image Prediction

python predict.py "path/to/skin_image.jpg" --visualize

Example:

python predict.py "healthy images skin/normal10.png" \
    --model_path output/checkpoints/best_model.pth \
    --visualize \
    --output_dir predictions

Output:

============================================================
PREDICTION RESULTS
============================================================
Image: normal10.png
Risk Category: Low Risk
Confidence: 87.32%

Detailed Probabilities:
  Low Risk (Healthy):        87.32%
  High Risk (Deficiency):    12.68%
============================================================

Batch Prediction (Entire Directory)

python predict.py "test_images/" \
    --model_path output/checkpoints/best_model.pth \
    --visualize \
    --output_dir predictions

This will:

  • Process all images in the directory
  • Generate individual visualizations
  • Create a CSV summary (predictions.csv)
  • Display aggregate statistics

Prediction Arguments:

Argument Description Default
input Image file or directory Required
--model_path Path to trained model output/checkpoints/best_model.pth
--output_dir Directory for results None
--visualize Generate visual plots False

πŸ“€ Output Specification

The system produces one of two risk assessments:

Low Risk

  • Label: "Low Risk"
  • Interpretation: Healthy skin
  • Class: 0
  • Visual: Green indicator

High Risk

  • Label: "High Risk"
  • Interpretation: Signs of vitamin C deficiency on skin
  • Class: 1
  • Visual: Red indicator

Confidence Scores

Each prediction includes:

  • Confidence: Probability of predicted class (0-100%)
  • Low Risk Probability: P(Healthy)
  • High Risk Probability: P(Deficiency)

πŸ“¦ Requirements

Core Dependencies

qiskit>=1.0.2
qiskit-machine-learning>=0.7.2
qiskit-algorithms>=0.3.0
torch>=2.2.0
torchvision>=0.17.0
Pillow>=10.2.0
opencv-python>=4.9.0
numpy>=1.26.4
scikit-learn>=1.4.1
matplotlib>=3.8.3
tqdm>=4.66.2
pyyaml>=6.0.1

System Requirements

  • RAM: 8GB minimum (16GB recommended for larger batches)
  • CPU: Multi-core processor (quantum simulations are CPU-intensive)
  • Storage: 500MB for dependencies + space for datasets
  • OS: Windows 10/11, macOS 10.15+, Linux (Ubuntu 20.04+)

Note: This project runs on CPU. Quantum circuits are simulated using classical hardware.


πŸ” Troubleshooting

Common Issues

1. Import Errors

ModuleNotFoundError: No module named 'qiskit'

Solution: Ensure virtual environment is activated and dependencies installed:

pip install -r requirements.txt

2. CUDA Warnings

CUDA not available, using CPU

Solution: This is expected and normal. Quantum circuits require CPU execution.

3. Memory Errors

RuntimeError: out of memory

Solution: Reduce batch size:

python train.py --batch_size 2

4. Slow Training

Quantum circuit simulations are computationally expensive. Solutions:

  • Reduce --feature_dim (fewer qubits)
  • Reduce --num_layers (simpler circuits)
  • Use smaller --batch_size
  • Be patientβ€”quantum simulations take time!

5. Image Loading Errors

Error loading image: [Errno 2] No such file or directory

Solution: Check that image paths are correct and images are valid formats (JPEG, PNG, WEBP).


πŸŽ“ Understanding the Model

Why Quantum Machine Learning?

Quantum computing offers potential advantages:

  1. High-dimensional feature spaces: Quantum states exist in exponentially large Hilbert spaces
  2. Quantum entanglement: Captures complex correlations between features
  3. Novel optimization landscapes: May find solutions classical models miss

Model Components

1. CNN Feature Extractor (src/classical_cnn.py)

  • Pretrained ResNet18 backbone
  • Extracts semantic features from images
  • Reduces dimensionality to manageable size for quantum processing

2. Quantum Classifier (src/quantum_classifier.py)

  • ZZ Feature Map: Encodes classical data with quantum gates
  • Variational Ansatz: Trainable quantum circuit (like neural network layers)
  • Measurement: Extracts classical information from quantum state

3. Hybrid Model (src/hybrid_model.py)

  • Combines CNN and quantum classifier
  • End-to-end differentiable (backpropagation through quantum layer)
  • PyTorch-compatible for standard training loops

Training Strategy

  1. Feature extractor pretraining: Use ImageNet-pretrained ResNet
  2. Quantum circuit optimization: Train variational parameters via gradient descent
  3. Joint fine-tuning: Optionally fine-tune entire pipeline

πŸ§ͺ Testing the Installation

Run the individual module tests:

# Test CNN feature extractor
python -m src.classical_cnn

# Test quantum classifier
python -m src.quantum_classifier

# Test hybrid model
python -m src.hybrid_model

All tests should complete with "Test passed!" messages.


πŸ“ˆ Performance Tips

For Better Accuracy

  1. Use pretrained CNN: Add --pretrained flag
  2. More training epochs: Increase --epochs to 30-50
  3. Data augmentation: Already included in training pipeline
  4. Larger quantum circuits: Increase --num_layers (slower but more expressive)

For Faster Training

  1. Smaller quantum circuits: Reduce --feature_dim and --num_layers
  2. Larger batch sizes: Increase --batch_size (if memory allows)
  3. Fewer epochs: Start with --epochs 10 for quick tests

🀝 Contributing

This is a research project demonstrating quantum machine learning concepts. Contributions, suggestions, and feedback are welcome!

Areas for Improvement

  • Implement real quantum hardware backends (IBM Quantum)
  • Add more sophisticated quantum feature maps
  • Expand to multi-class classification
  • Include explainability/interpretability tools
  • Add web interface for predictions

πŸ“œ License

MIT License - See LICENSE file for details


πŸ™ Acknowledgments

  • Qiskit: IBM's open-source quantum computing framework
  • PyTorch: Facebook's deep learning library
  • ResNet: Kaiming He et al.'s residual networks
  • Quantum ML Community: For advancing the field

πŸ“š References

  1. Qiskit Machine Learning: https://qiskit.org/ecosystem/machine-learning/
  2. Variational Quantum Classifiers: https://arxiv.org/abs/1804.11326
  3. Quantum Feature Maps: https://arxiv.org/abs/1804.11326
  4. ResNet Architecture: https://arxiv.org/abs/1512.03385

πŸ“ž Support

For issues, questions, or suggestions:

  1. Check the Troubleshooting section
  2. Review Qiskit documentation: https://qiskit.org/documentation/
  3. Open an issue on the project repository

🎯 Success Criteria

The primary goal of this project is to demonstrate a functional, end-to-end quantum machine learning pipeline for health risk assessment. Success is measured by:

βœ… Functional Pipeline: Complete workflow from image input to risk output
βœ… Quantum Integration: Working variational quantum classifier
βœ… Hybrid Architecture: Successful combination of classical and quantum components
βœ… Binary Classification: Reliable distinction between healthy and deficiency cases
βœ… Reproducibility: Clear documentation and runnable code

Note: While high accuracy is desirable, the primary focus is demonstrating the quantum computing approach as a proof-of-concept for future health screening applications.


🌟 Get Started Now!

# 1. Activate virtual environment
venv\Scripts\activate  # Windows
source venv/bin/activate  # macOS/Linux

# 2. Train the model
python train.py --pretrained --epochs 20

# 3. Make predictions
python predict.py "healthy images skin/normal10.png" --visualize

# 4. Explore quantum machine learning!

Built with quantum computing for the future of healthcare πŸš€πŸ”¬

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages