| --- |
| license: apache-2.0 |
| base_model: |
| - facebook/sam2-hiera-tiny |
| - facebook/sam2-hiera-small |
| - facebook/sam2-hiera-base-plus |
| - facebook/sam2-hiera-large |
| pipeline_tag: image-segmentation |
| --- |
| # Model Card: CoronarySAM2 - Fine-tuned SAM2 for Coronary Artery Segmentation |
|
|
| ## Model Details |
|
|
| ### Model Description |
|
|
| CoronarySAM2 is a collection of fine-tuned Segment Anything Model 2 (SAM2) variants specifically optimized for coronary artery segmentation in X-ray angiography images. The models use point-based prompting to enable interactive and precise segmentation of coronary arteries from medical imaging data. |
|
|
| - **Developed by:** Research Team |
| - **Model Type:** Computer Vision - Image Segmentation |
| - **Base Architecture:** SAM2 (Segment Anything Model 2) with Hiera backbone |
| - **Language(s):** Python |
| - **License:** [Specify License] |
| - **Fine-tuned from:** [facebook/segment-anything-2](https://github.com/facebookresearch/segment-anything-2) |
|
|
| ### Model Variants |
|
|
| Four model variants are available, offering different trade-offs between speed and accuracy: |
|
|
| | Model | Parameters | Checkpoint | Speed | Accuracy | Use Case | |
| |-------|-----------|------------|-------|----------|----------| |
| | **SAM2 Hiera Tiny** | ~38M | `sam2_t/best_model.pt` | ⚡⚡⚡ Fast | ⭐⭐⭐ Good | Quick experiments, real-time feedback | |
| | **SAM2 Hiera Small** | ~46M | `sam2_s/checkpoint_epoch_70.pt` | ⚡⚡ Medium | ⭐⭐⭐⭐ Very Good | Balanced performance, general use | |
| | **SAM2 Hiera Base Plus** | ~80M | `sam2_b+/best_model.pt` | ⚡ Slower | ⭐⭐⭐⭐⭐ Excellent | High-quality results, clinical evaluation | |
| | **SAM2 Hiera Large** | ~224M | `sam2_l/final_model.pt` | ⚡ Slowest | ⭐⭐⭐⭐⭐ Best | Maximum accuracy, research purposes | |
|
|
| ### Model Architecture |
|
|
| The models follow the SAM2 architecture with the following components: |
|
|
| 1. **Image Encoder**: Hiera hierarchical vision transformer backbone |
| 2. **Prompt Encoder**: Encodes point prompts (positive/negative) as spatial embeddings |
| 3. **Mask Decoder**: Transformer-based decoder that generates high-quality segmentation masks |
| 4. **Preprocessing Pipeline**: |
| - X-ray image normalization using Gaussian blur |
| - CLAHE (Contrast Limited Adaptive Histogram Equalization) for vessel enhancement |
| - Fixed resolution resizing to 1024×1024 pixels |
|
|
| ## Intended Use |
|
|
| ### Primary Use Cases |
|
|
| - **Interactive Coronary Artery Segmentation**: Point-based annotation for precise artery delineation |
| - **Medical Image Analysis**: Automated assistance for cardiologists and radiologists |
| - **Research**: Computer-aided diagnosis and treatment planning research |
| - **Educational Purposes**: Training and demonstration of medical image segmentation |
|
|
| ### Out-of-Scope Use |
|
|
| - ❌ Clinical diagnosis without expert oversight |
| - ❌ Automated treatment decisions |
| - ❌ Real-time interventional guidance without validation |
| - ❌ Non-coronary vessel segmentation (not trained for this task) |
| - ❌ Modalities other than X-ray angiography (CT, MRI, etc.) |
|
|
| ## Training Data |
|
|
| ### Dataset |
|
|
| The models were fine-tuned on coronary X-ray angiography images with annotations for coronary artery structures. |
|
|
| **Training Specifications:** |
| - **Modality**: X-ray Angiography |
| - **Target**: Coronary Arteries |
| - **Annotation Type**: Binary segmentation masks |
| - **Resolution**: Images resized to 1024×1024 for training |
|
|
| ### Preprocessing |
|
|
| All training images underwent the following preprocessing pipeline: |
|
|
| 1. **Normalization**: Gaussian blur-based intensity normalization |
| 2. **CLAHE Enhancement**: Adaptive histogram equalization (clip limit: 2.0, tile grid: 8×8) |
| 3. **Resizing**: Fixed 1024×1024 resolution |
| 4. **Format**: RGB format (grayscale images converted to RGB) |
|
|
| ## Evaluation |
|
|
| ### Metrics |
|
|
| The models should be evaluated using the following metrics: |
|
|
| - **Dice Coefficient**: Measures overlap between predicted and ground truth masks |
| - **IoU (Intersection over Union)**: Pixel-wise accuracy metric |
| - **Precision & Recall**: For detecting true vessel pixels |
| - **Hausdorff Distance**: Measures boundary accuracy |
| - **Inference Time**: Speed benchmarks on various hardware |
|
|
| ### Performance Considerations |
|
|
| - **Point Prompt Quality**: Model performance heavily depends on the quality and number of point prompts |
| - **Image Quality**: Better results with high-contrast angiography images |
| - **Vessel Complexity**: Performance may vary with vessel overlap and bifurcations |
| - **Model Selection**: Larger models generally provide better accuracy but slower inference |
|
|
| ## How to Use |
|
|
| ### Installation |
|
|
| ```bash |
| # Create conda environment |
| conda create -n sam2_FT_env python=3.10.0 -y |
| conda activate sam2_FT_env |
| |
| # Install SAM2 |
| git clone https://github.com/facebookresearch/segment-anything-2.git |
| cd segment-anything-2 |
| pip install -e . |
| cd .. |
| |
| # Install dependencies |
| pip install gradio opencv-python-headless torch torchvision torchaudio |
| ``` |
|
|
| ### Basic Usage |
|
|
| ```python |
| import torch |
| import numpy as np |
| from sam2.build_sam import build_sam2 |
| from sam2.sam2_image_predictor import SAM2ImagePredictor |
| |
| # Load model |
| checkpoint_path = "ft_models/sam2_s/checkpoint_epoch_70.pt" |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| |
| checkpoint = torch.load(checkpoint_path, map_location=device) |
| model_cfg = checkpoint['model_cfg'] |
| sam2_model = build_sam2(model_cfg, checkpoint_path=None, device=device) |
| |
| # Load state dict |
| state_dict = checkpoint['model_state_dict'] |
| new_state_dict = {k[7:] if k.startswith('module.') else k: v |
| for k, v in state_dict.items()} |
| sam2_model.load_state_dict(new_state_dict) |
| sam2_model.eval() |
| |
| # Create predictor |
| predictor = SAM2ImagePredictor(sam2_model) |
| |
| # Set image (preprocessed, 1024x1024, RGB, uint8) |
| predictor.set_image(preprocessed_image) |
| |
| # Add point prompts |
| point_coords = np.array([[512, 300], [520, 310]]) # x, y coordinates |
| point_labels = np.array([1, 1]) # 1 = positive, 0 = negative |
| |
| # Predict |
| masks, scores, logits = predictor.predict( |
| point_coords=point_coords, |
| point_labels=point_labels, |
| multimask_output=True |
| ) |
| ``` |
|
|
| ### Interactive Application |
|
|
| Launch the Gradio interface: |
|
|
| ```bash |
| python app.py |
| ``` |
|
|
| Access at `http://127.0.0.1:7860` |
|
|
| ## Limitations |
|
|
| ### Technical Limitations |
|
|
| - **Fixed Input Size**: Models expect 1024×1024 input (automatic resizing may affect small vessels) |
| - **Memory Requirements**: Large model requires significant GPU memory (~8GB VRAM recommended) |
| - **Point Dependency**: Requires manual point prompts; not fully automatic |
| - **Single Modality**: Optimized only for X-ray angiography |
|
|
| ### Medical Limitations |
|
|
| - **Not FDA Approved**: Not cleared for clinical diagnostic use |
| - **Requires Expert Review**: All outputs must be validated by qualified professionals |
| - **Variability**: Performance may vary across different imaging protocols and equipment |
| - **Edge Cases**: May struggle with severe vessel overlap, calcifications, or poor image quality |
|
|
| ### Known Issues |
|
|
| - High-contrast regions may cause over-segmentation |
| - Thin vessel branches may be missed without precise point placement |
| - Performance degradation on low-quality or motion-blurred images |
|
|
| ## Ethical Considerations |
|
|
| ### Medical AI Responsibility |
|
|
| - **Human Oversight Required**: This tool is designed to assist, not replace, medical professionals |
| - **No Autonomous Decisions**: Should never be used for automated clinical decisions |
| - **Training Data Bias**: Model performance may reflect biases present in training data |
| - **Privacy**: Ensure patient data is handled according to HIPAA/GDPR regulations |
|
|
| ### Fairness & Bias |
|
|
| - Model performance across different patient demographics should be validated |
| - Imaging equipment and protocols may affect performance |
| - Consider potential biases in training dataset composition |
|
|
| ### Transparency |
|
|
| - Model predictions should be explainable to medical professionals |
| - Segmentation boundaries should be reviewable and editable |
| - Point prompt influence on outputs should be clear to users |
|
|
| ## Citation |
|
|
| ### Base Model (SAM2) |
|
|
| ```bibtex |
| @article{ravi2024sam2, |
| title={SAM 2: Segment Anything in Images and Videos}, |
| author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and others}, |
| journal={arXiv preprint arXiv:2408.00714}, |
| year={2024} |
| } |
| ``` |
|
|
| ### This Work |
|
|
| If you use CoronarySAM2 in your research, please cite: |
|
|
| ```bibtex |
| @software{coronarysam2_2025, |
| title={CoronarySAM2: Fine-tuned SAM2 for Coronary Artery Segmentation}, |
| author={[Your Name/Team]}, |
| year={2025}, |
| url={[Repository URL]} |
| } |
| ``` |
|
|
| ## Model Card Authors |
|
|
| - [Primary Author Names] |
| - Last Updated: November 2025 |
|
|
| ## Contact |
|
|
| For questions, issues, or collaboration inquiries: |
|
|
| - **GitHub Issues**: [Repository URL]/issues |
| - **Email**: [Contact Email] |
|
|
| ## Disclaimer |
|
|
| **⚠️ IMPORTANT MEDICAL DISCLAIMER ⚠️** |
|
|
| This software is provided for **research and educational purposes only**. It is not intended for clinical use, medical diagnosis, or treatment planning. The models have not been validated for clinical deployment and are not FDA-approved or CE-marked medical devices. |
|
|
| **Always consult qualified healthcare professionals** for medical image interpretation and clinical decisions. The developers assume no liability for any clinical use or consequences resulting from the use of this software. |
|
|
| ## Additional Resources |
|
|
| - [SAM2 Paper](https://arxiv.org/abs/2408.00714) |
| - [SAM2 GitHub Repository](https://github.com/facebookresearch/segment-anything-2) |
| - [Project README](README.md) |
| - [Application Interface](app.py) |
|
|
| --- |
|
|
| **Version**: 1.0 |
| **Last Updated**: November 18, 2025 |
| **Status**: Research/Development |