CoronarySAM2_FT / README.md
astroanand's picture
Update README.md
7e31b64 verified

A newer version of the Gradio SDK is available: 6.1.0

Upgrade
metadata
title: Coronary Artery Segmentation
emoji: πŸ«€
colorFrom: red
colorTo: pink
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
license: mit

πŸ«€ Coronary Artery Segmentation with Fine-tuned SAM2

An interactive tool for segmenting coronary arteries in X-ray angiography images using fine-tuned Segment Anything Model 2 (SAM2). This Space provides an easy-to-use interface for medical image segmentation with point-based prompting.


🎯 How to Use This Space

Step 1: Upload Your Image

  • Click on the image upload area or drag and drop your coronary X-ray angiography image
  • Supported formats: JPG, PNG, and other common image formats
  • The image will be displayed in the interface for annotation

Step 2: Select a Model

Choose from four fine-tuned SAM2 variants optimized for coronary artery segmentation:

  • SAM2 Hiera Tiny - Fastest inference, good for quick results
  • SAM2 Hiera Small - Balanced speed and accuracy
  • SAM2 Hiera Base Plus - Higher accuracy, moderate speed
  • SAM2 Hiera Large - Best accuracy, slower inference

Step 3: Add Point Prompts

🟒 Positive Points (Green)

  • Click on areas you want to include in the segmentation
  • Use positive points to mark the coronary arteries you want to segment
  • Multiple positive points help the model understand the full extent of the artery
  • Tip: Add points along the length of the artery for better coverage

πŸ”΄ Negative Points (Red)

  • Click on areas you want to exclude from the segmentation
  • Use negative points to refine the segmentation and remove unwanted regions
  • Helpful for separating overlapping vessels or removing background
  • Tip: Add negative points near the artery boundaries to improve precision

🎨 How to Add Points

  1. The first click adds a positive point (green)
  2. Hold Shift while clicking to add a negative point (red)
  3. You can add multiple points of each type
  4. Points are displayed as colored dots on your image

Step 4: Generate Segmentation

  • Click the "Segment" button to process your annotations
  • The model will generate a segmentation mask based on your point prompts
  • The result shows the segmented coronary artery highlighted on the original image

Step 5: Refine (Optional)

  • If the segmentation isn't perfect, add more points:
    • Add positive points to include missing artery sections
    • Add negative points to exclude over-segmented regions
  • Click "Segment" again to update the result
  • Repeat until you're satisfied with the segmentation

Step 6: Clear and Start Over

  • Use the "Clear" button to remove all points and start fresh
  • Upload a new image to segment a different case

πŸ’‘ Tips for Best Results

  1. Start Simple: Begin with 1-2 positive points on the main artery structure
  2. Be Strategic: Place positive points at key locations (branches, endpoints, curves)
  3. Refine Gradually: Add negative points only where the model over-segments
  4. Model Selection: Start with Tiny or Small models for faster iteration, then use larger models for final results
  5. Multiple Vessels: For multiple arteries, focus on one at a time with clear positive points
  6. Contrast Matters: Images with good contrast between vessels and background work best

πŸ”¬ Model Architecture

Coronary Artery Segmentation Workflow

The workflow consists of several key stages:

  1. Image Preprocessing - Normalization and enhancement for optimal model input
  2. Point Prompt Encoding - Your positive/negative clicks are encoded as spatial prompts
  3. SAM2 Processing - Fine-tuned encoder-decoder processes the image with prompts
  4. Mask Generation - High-quality segmentation mask output
  5. Visualization - Segmented artery overlaid on the original image

πŸ“Š Model Variants

Model Parameters Speed Accuracy Best For
Hiera Tiny ~38M ⚑⚑⚑ ⭐⭐⭐ Quick experiments, real-time feedback
Hiera Small ~46M ⚑⚑ ⭐⭐⭐⭐ Balanced performance, general use
Hiera Base Plus ~80M ⚑ ⭐⭐⭐⭐⭐ High-quality results, clinical evaluation
Hiera Large ~224M ⚑ ⭐⭐⭐⭐⭐ Best possible accuracy, research

All models have been fine-tuned specifically for coronary artery segmentation on X-ray angiography images.


⚠️ Disclaimer

This tool is intended for research and educational purposes only. It is not approved for clinical diagnosis or treatment decisions. Always consult qualified healthcare professionals for medical image interpretation.


πŸš€ Local Installation

If you want to run this application locally, follow these setup instructions:

1. Create Conda Environment

# Create a new conda environment named sam2_FT_env with Python 3.10
conda create -n sam2_FT_env python=3.10.0 -y

# Activate the environment
conda activate sam2_FT_env

2. Install SAM2 Library

# Clone the official repository
git clone https://github.com/facebookresearch/segment-anything-2.git
cd segment-anything-2

# Install the package in editable mode
pip install -e .
cd ..

3. Install Dependencies

pip install uv
uv pip install gradio opencv-python-headless torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130

4. Run the Application

# Ensure model checkpoints are in the correct directories
python app.py

Open http://127.0.0.1:7860 in your browser.


πŸ“š Citation

If you use this tool in your research, please cite:

@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and others},
  journal={arXiv preprint arXiv:2408.00714},
  year={2024}
}

πŸ“§ Contact & Support

For questions, issues, or feedback, please open an issue on the GitHub repository or contact the developers.

Built with ❀️ using SAM2 and Gradio