Heart_Segmentation / README.md
NicolasNoya's picture
Upload README.md with huggingface_hub
017f1e3 verified
---
tags:
- pytorch
- medical-imaging
- semantic-segmentation
- cardiac-mri
- densenet
- computer-vision
license: mit
datasets:
- cardiac-mri
metrics:
- dice-coefficient
- iou
library_name: pytorch
---
# Cardiac Pathology Prediction - DenseNet
## Model Description
This is a custom-implemented **DenseNet** for cardiac MRI segmentation and pathology prediction. The model performs semantic segmentation of cardiac structures (left ventricle, right ventricle, and myocardium) from short-axis cardiac cine MR images.
### Key Features
- 🏗️ Fully Convolutional DenseNet architecture implemented from scratch
- 🫀 4-class semantic segmentation (background, LV, RV, myocardium)
- 🔬 Trained on NIfTI format cardiac MRI data
- 📊 Combined Cross-Entropy and Dice Loss
- 🎯 Designed for cardiac pathology classification
## Architecture
The model follows a U-Net style encoder-decoder architecture with dense blocks:
- **Input**: Single-channel 2D cardiac MRI slices (128×128)
- **Encoder**: 3 dense blocks (3, 4, 5 layers) with transition down
- **Bottleneck**: Dense block with 8 layers
- **Decoder**: 3 dense blocks (5, 4, 3 layers) with skip connections
- **Output**: 4-channel probability map (softmax activated)
- **Growth rate**: 8 (bottleneck: 7)
## Intended Use
This model is designed for:
- Cardiac MRI segmentation research
- Educational purposes in medical image analysis
- Baseline comparison for cardiac segmentation tasks
- Feature extraction for cardiac pathology classification
**Note**: This model is for research purposes only and not intended for clinical use.
## Training Details
- **Loss Function**: Combined Cross-Entropy and Dice Loss (α=0.25)
- **Optimizer**: Adam
- **Framework**: PyTorch 2.6.0
- **Data Format**: NIfTI (.nii) files
- **Image Size**: 128×128 pixels
- **Preprocessing**: ROI extraction, normalization, data augmentation
## How to Use
```python
import torch
from densenet.densenet import DenseNet
# Load the model
model = DenseNet()
model.load_state_dict(torch.load('model_weights.pth', map_location='cpu'))
model.eval()
# Inference
with torch.no_grad():
# input_image: (1, 1, 128, 128) tensor
output = model(input_image) # (1, 4, 128, 128)
prediction = torch.argmax(output, dim=1) # Get class predictions
```
## Model Files
- `model_weights.pth`: Complete model checkpoint including weights and optimizer state
- `densenet/`: Source code for the DenseNet architecture
- Full implementation available at: [GitHub Repository](https://github.com/NicolasNoya/CardiacPathologyPrediction)
## Citation
If you use this model, please cite the original paper that inspired this implementation:
```
Densely Connected Fully Convolutional Network for Short-Axis Cardiac Cine MR Image
Segmentation and Heart Diagnosis Using Random Forest
```
## Author
**Francisco Nicolás Noya**
- GitHub: [@NicolasNoya](https://github.com/NicolasNoya)
- Project: IMA205 Challenge
## License
MIT License - See repository for details.
## Disclaimer
This model is provided for research and educational purposes only. It has not been clinically validated and should not be used for medical diagnosis or treatment decisions.