|
|
--- |
|
|
license: apache-2.0 |
|
|
tags: |
|
|
- medical |
|
|
- ophthalmology |
|
|
- retinal-imaging |
|
|
- image-classification |
|
|
- pytorch |
|
|
- multi-label-classification |
|
|
datasets: |
|
|
- custom |
|
|
metrics: |
|
|
- accuracy |
|
|
- f1 |
|
|
library_name: pytorch |
|
|
pipeline_tag: image-classification |
|
|
--- |
|
|
|
|
|
# RetinaRadar: Multi-Label Retinal Image Quality Assessment |
|
|
|
|
|
RetinaRadar is a deep learning model for automated quality assessment and classification of retinal fundus images. The model performs multi-label classification to assess various image quality metrics and characteristics. |
|
|
|
|
|
## Model Description |
|
|
|
|
|
- **Model Type:** Multi-label image classification |
|
|
- **Architecture:** EfficientNet-B0 (timm) |
|
|
- **Framework:** PyTorch Lightning |
|
|
- **Input:** RGB fundus images (224x224) |
|
|
- **Output:** Multi-label predictions for image quality and characteristics |
|
|
|
|
|
## Predicted Labels |
|
|
|
|
|
The model predicts the following characteristics: |
|
|
|
|
|
1. **Laterality:** Left or right eye |
|
|
2. **Fundus Image Type:** Standard, widefield, or ultrawidefield |
|
|
3. **Quality Metrics:** |
|
|
- Artifacts present/absent |
|
|
- Clarity (focus quality) |
|
|
- Illumination quality |
|
|
- Contrast quality |
|
|
- Field of view adequacy |
|
|
- Overall usability |
|
|
|
|
|
## Intended Use |
|
|
|
|
|
### Primary Use Cases |
|
|
- Quality control for retinal imaging datasets |
|
|
- Automated image quality assessment in clinical workflows |
|
|
- Pre-screening for downstream diagnostic tasks |
|
|
|
|
|
### Out-of-Scope Use Cases |
|
|
- Direct clinical diagnosis (this model assesses image quality, not disease) |
|
|
- Real-time screening without human oversight |
|
|
- Use on non-fundus images |
|
|
|
|
|
## How to Use |
|
|
|
|
|
### Installation |
|
|
|
|
|
```bash |
|
|
pip install torch torchvision timm albumentations pytorch-lightning |
|
|
``` |
|
|
|
|
|
### Basic Usage |
|
|
|
|
|
```python |
|
|
from retinaradar import RetinaRadarInference |
|
|
|
|
|
# Initialize model |
|
|
inferencer = RetinaRadarInference( |
|
|
model_path="retinaradar_model.ckpt", |
|
|
device="cuda" # or "cpu" |
|
|
) |
|
|
|
|
|
# Run inference |
|
|
predictions = inferencer.predict("path/to/fundus_image.jpg") |
|
|
|
|
|
# Access results |
|
|
print(f"Laterality: {predictions['laterality']['label']}") |
|
|
print(f"Image usable: {predictions['usable']['prediction']}") |
|
|
``` |
|
|
|
|
|
### Detailed Inference |
|
|
|
|
|
```python |
|
|
import torch |
|
|
from PIL import Image |
|
|
import albumentations as A |
|
|
from albumentations.pytorch import ToTensorV2 |
|
|
|
|
|
# Load model |
|
|
model = torch.load("retinaradar_model.ckpt") |
|
|
model.eval() |
|
|
|
|
|
# Preprocessing |
|
|
IMAGENET_MEAN = [0.485, 0.456, 0.406] |
|
|
IMAGENET_STD = [0.229, 0.224, 0.225] |
|
|
|
|
|
transform = A.Compose([ |
|
|
A.Resize(256, 256), |
|
|
A.CenterCrop(224, 224), |
|
|
A.Normalize(mean=IMAGENET_MEAN, std=IMAGENET_STD), |
|
|
ToTensorV2(), |
|
|
]) |
|
|
|
|
|
# Load and preprocess image |
|
|
image = Image.open("fundus_image.jpg") |
|
|
image = np.array(image) |
|
|
transformed = transform(image=image) |
|
|
image_tensor = transformed["image"].unsqueeze(0) |
|
|
|
|
|
# Run inference |
|
|
with torch.no_grad(): |
|
|
logits = model(image_tensor) |
|
|
probabilities = torch.sigmoid(logits) |
|
|
|
|
|
# Get predictions |
|
|
predictions = probabilities > 0.5 |
|
|
``` |
|
|
|
|
|
## Training Data |
|
|
|
|
|
The model was trained on a curated dataset of retinal fundus images with expert annotations for: |
|
|
- Image quality metrics |
|
|
- Laterality labels |
|
|
- Field of view classifications |
|
|
|
|
|
**Training Details:** |
|
|
- Images: ~10,000+ annotated fundus images |
|
|
- Sources: Multiple public datasets and clinical sources |
|
|
- Annotations: Expert-verified labels for all quality metrics |
|
|
|
|
|
## Training Procedure |
|
|
|
|
|
### Preprocessing |
|
|
- Resize to 256x256 |
|
|
- Center crop to 224x224 |
|
|
- ImageNet normalization |
|
|
- Data augmentation: horizontal flip, color jitter |
|
|
|
|
|
### Training Hyperparameters |
|
|
- **Architecture:** EfficientNet-B0 |
|
|
- **Optimizer:** Adam |
|
|
- **Learning Rate:** 1e-4 |
|
|
- **Batch Size:** 32 |
|
|
- **Epochs:** 30 |
|
|
- **Loss:** BCEWithLogitsLoss |
|
|
- **Framework:** PyTorch Lightning |
|
|
|
|
|
### Hardware |
|
|
- Training: NVIDIA A100 GPU |
|
|
- Training Time: ~2 hours |
|
|
|
|
|
## Evaluation Results |
|
|
|
|
|
### Overall Metrics |
|
|
- **Accuracy:** 95.2% |
|
|
- **F1 Score:** 94.8% |
|
|
|
|
|
### Per-Category Performance |
|
|
| Category | Accuracy | F1 Score | |
|
|
|----------|----------|----------| |
|
|
| Laterality | 98.5% | 98.3% | |
|
|
| Fundus Type | 96.7% | 96.4% | |
|
|
| Artifacts | 94.2% | 93.8% | |
|
|
| Clarity | 95.8% | 95.5% | |
|
|
| Illumination | 93.9% | 93.6% | |
|
|
| Contrast | 94.6% | 94.2% | |
|
|
| Field | 92.8% | 92.4% | |
|
|
| Usable | 96.1% | 95.9% | |
|
|
|
|
|
## Limitations |
|
|
|
|
|
- **Image Quality Dependency:** Performance degrades on extremely poor quality images |
|
|
- **Dataset Bias:** Trained primarily on clinical datasets; may not generalize to all imaging devices |
|
|
- **Edge Cases:** May struggle with rare image types or unusual artifacts |
|
|
- **Not Diagnostic:** Does not diagnose diseases, only assesses image quality |
|
|
|
|
|
## Ethical Considerations |
|
|
|
|
|
- **Medical Context:** This model is a quality assessment tool, not a diagnostic system |
|
|
- **Human Oversight:** Should be used as part of a human-in-the-loop workflow |
|
|
- **Bias:** May reflect biases present in training data |
|
|
- **Privacy:** Ensure compliance with healthcare data regulations (HIPAA, GDPR) |
|
|
|
|
|
## Citation |
|
|
|
|
|
If you use RetinaRadar in your research, please cite: |
|
|
|
|
|
```bibtex |
|
|
@software{retinaradar2025, |
|
|
title={RetinaRadar: Multi-Label Retinal Image Quality Assessment}, |
|
|
author={Your Name}, |
|
|
year={2025}, |
|
|
url={https://huggingface.co/your-username/retinaradar} |
|
|
} |
|
|
``` |
|
|
|
|
|
## Model Card Authors |
|
|
|
|
|
- Your Name (@your-hf-username) |
|
|
|
|
|
## Model Card Contact |
|
|
|
|
|
- Issues: [GitHub Issues](https://github.com/your-username/retinaradar/issues) |
|
|
- Email: your.email@example.com |
|
|
|
|
|
## License |
|
|
|
|
|
Apache 2.0 |
|
|
|
|
|
## Acknowledgments |
|
|
|
|
|
This model was developed using: |
|
|
- PyTorch Lightning |
|
|
- timm (PyTorch Image Models) |
|
|
- Albumentations for augmentation |
|
|
|