- Overview
- Background
- Technical Architecture
- Dataset Specification
- Installation
- Project Structure
- Usage
- Output Specification
- Requirements
- Troubleshooting
- Contributing
- License
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
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:
- Classical CNNs for extracting visual patterns from skin images
- Quantum Machine Learning for enhanced classification capabilities
The system implements a hybrid quantum-classical pipeline with the following workflow:
- Accepts skin images in standard formats (JPEG, PNG, WEBP)
- Standardizes images to 224Γ224 pixels
- Applies normalization using ImageNet statistics
- 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
- 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
- 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)
The model is trained on two distinct categories:
- Contains images of healthy skin
- Represents the negative class (Low Risk)
- ~100+ images
- 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.
- Python 3.8 or higher
- pip package manager
- 8GB+ RAM recommended
- CPU-based (quantum circuits run on CPU)
cd "Vitamin Project"Windows:
python -m venv venv
venv\Scripts\activatemacOS/Linux:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtThis 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)
python -c "import qiskit; import torch; print('Installation successful!')"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
Train the hybrid quantum-classical model on your skin health dataset:
python train.pyThis uses default settings:
- Feature dimension: 8 qubits
- Quantum layers: 2
- Batch size: 4
- Epochs: 20
- Learning rate: 0.001
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 outputKey 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 |
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!
Once trained, use the model to classify new skin images:
python predict.py "path/to/skin_image.jpg" --visualizeExample:
python predict.py "healthy images skin/normal10.png" \
--model_path output/checkpoints/best_model.pth \
--visualize \
--output_dir predictionsOutput:
============================================================
PREDICTION RESULTS
============================================================
Image: normal10.png
Risk Category: Low Risk
Confidence: 87.32%
Detailed Probabilities:
Low Risk (Healthy): 87.32%
High Risk (Deficiency): 12.68%
============================================================
python predict.py "test_images/" \
--model_path output/checkpoints/best_model.pth \
--visualize \
--output_dir predictionsThis 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 |
The system produces one of two risk assessments:
- Label:
"Low Risk" - Interpretation: Healthy skin
- Class: 0
- Visual: Green indicator
- Label:
"High Risk" - Interpretation: Signs of vitamin C deficiency on skin
- Class: 1
- Visual: Red indicator
Each prediction includes:
- Confidence: Probability of predicted class (0-100%)
- Low Risk Probability: P(Healthy)
- High Risk Probability: P(Deficiency)
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
- 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.
ModuleNotFoundError: No module named 'qiskit'
Solution: Ensure virtual environment is activated and dependencies installed:
pip install -r requirements.txtCUDA not available, using CPU
Solution: This is expected and normal. Quantum circuits require CPU execution.
RuntimeError: out of memory
Solution: Reduce batch size:
python train.py --batch_size 2Quantum 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!
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).
Quantum computing offers potential advantages:
- High-dimensional feature spaces: Quantum states exist in exponentially large Hilbert spaces
- Quantum entanglement: Captures complex correlations between features
- Novel optimization landscapes: May find solutions classical models miss
- Pretrained ResNet18 backbone
- Extracts semantic features from images
- Reduces dimensionality to manageable size for quantum processing
- 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
- Combines CNN and quantum classifier
- End-to-end differentiable (backpropagation through quantum layer)
- PyTorch-compatible for standard training loops
- Feature extractor pretraining: Use ImageNet-pretrained ResNet
- Quantum circuit optimization: Train variational parameters via gradient descent
- Joint fine-tuning: Optionally fine-tune entire pipeline
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_modelAll tests should complete with "Test passed!" messages.
- Use pretrained CNN: Add
--pretrainedflag - More training epochs: Increase
--epochsto 30-50 - Data augmentation: Already included in training pipeline
- Larger quantum circuits: Increase
--num_layers(slower but more expressive)
- Smaller quantum circuits: Reduce
--feature_dimand--num_layers - Larger batch sizes: Increase
--batch_size(if memory allows) - Fewer epochs: Start with
--epochs 10for quick tests
This is a research project demonstrating quantum machine learning concepts. Contributions, suggestions, and feedback are welcome!
- 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
MIT License - See LICENSE file for details
- 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
- Qiskit Machine Learning: https://qiskit.org/ecosystem/machine-learning/
- Variational Quantum Classifiers: https://arxiv.org/abs/1804.11326
- Quantum Feature Maps: https://arxiv.org/abs/1804.11326
- ResNet Architecture: https://arxiv.org/abs/1512.03385
For issues, questions, or suggestions:
- Check the Troubleshooting section
- Review Qiskit documentation: https://qiskit.org/documentation/
- Open an issue on the project repository
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.
# 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 ππ¬