Trans-SAM: Transfer Segment Anything Model to Medical Image Segmentation with Parameter-Efficient Fine-Tuning

August 21, 2025 ยท View on GitHub

Official PyTorch implementation of "Trans-SAM: Transfer Segment Anything Model to Medical Image Segmentation with Parameter-Efficient Fine-Tuning".

๐Ÿ“– Abstract

Trans-SAM utilizes Parameter-Efficient Fine-Tuning (PEFT) to transfer the Segment Anything Model (SAM) to medical image segmentation tasks. Our method introduces two key innovations:

  • Intuitive Perceptual Fine-tuning (IPF) adapter: Directly integrates input image features into each encoder layer
  • Multi-scale Domain Transfer (MDT) adapter: Uses convolution-based mechanisms to infuse inductive biases into SAM

๐Ÿ† Key Features

  • โœ… High Performance: Achieves superior results compared to state-of-the-art PEFT methods
  • โœ… Parameter Efficient: Only requires training a small portion of parameters while maintaining excellent performance
  • โœ… Multi-domain Support: Validated on 6 medical datasets across different organs and modalities
  • โœ… Automatic Segmentation: Performs semantic segmentation without requiring prompts

๐Ÿ› ๏ธ Installation

Requirements

Python = 3.10
PyTorch = 2.6.0

Dependencies List

Create a requirements.txt file with:

numpy>=2.2.6
opencv-python>=4.12.0.88
scikit-learn>=1.7.1
torch>=2.6.0
torchvision>=0.21.0

๐Ÿ“ Project Structure

Trans-SAM/
โ”œโ”€โ”€ SAM/                          # SAM model implementation
โ”œโ”€โ”€ model_utils/                  # Utility modules
โ”‚   โ”œโ”€โ”€ cfg.py                   # Configuration file
โ”‚   โ”œโ”€โ”€ dataset_split.py         # Dataset handling
โ”‚   โ”œโ”€โ”€ evalution_segmentation.py # Evaluation metrics
โ”‚   โ””โ”€โ”€ class_dict.csv            # Label mapping table
โ”œโ”€โ”€ dataset/                      # Dataset directory
โ”‚   โ””โ”€โ”€ BUSI/                    # Example dataset
โ”œโ”€โ”€ weight/                       # Model checkpoints directory
โ”œโ”€โ”€ train_SAM.py                 # Main training script
โ”œโ”€โ”€ test_SAM.py                  # Testing script  
โ”œโ”€โ”€ predict_SAM.py               # Prediction script
โ”œโ”€โ”€ requirements.txt             # Dependencies
โ””โ”€โ”€ README.md                    # This file

๐Ÿ“Š Supported Datasets

DatasetDescriptionImagesModalityDownload Link
LiTSLiver Tumor Segmentation Challenge131CTLink
ISICSkin Lesion Segmentation2,594DermoscopyLink
KvasirPolyp Segmentation1,000EndoscopyLink
BUSIBreast Ultrasound Segmentation780UltrasoundLink
CXMLChest X-ray Segmentation138X-rayLink
FMLFinding and Measuring Lungs-CTLink

Dataset Preparation

  1. Download datasets from the links above
  2. Organize your data in the following structure:
dataset/
โ”œโ”€โ”€ DATASET_NAME/
โ”‚   โ”œโ”€โ”€ images/
โ”‚   โ”‚   โ”œโ”€โ”€ image001.jpg
โ”‚   โ”‚   โ”œโ”€โ”€ image002.jpg
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ””โ”€โ”€ masks/
โ”‚       โ”œโ”€โ”€ image001.png
โ”‚       โ”œโ”€โ”€ image002.png
โ”‚       โ””โ”€โ”€ ...
  1. Update configuration in model_utils/cfg.py:
# Dataset paths
TRAIN_ROOT = "./dataset/YOUR_DATASET/images"
TRAIN_LABEL = "./dataset/YOUR_DATASET/masks"

# Training parameters
BATCH_SIZE = 32
EPOCH_NUMBER = 200
lr = 0.0001
image_size = 256

๐Ÿš€ Quick Start

1. Training

# Train on default dataset (configured in cfg.py)
python train_SAM.py

# Monitor training progress
# Check the console output for loss and metrics
# Model checkpoints will be saved in ./weight/ directory

2. Testing

# Test the trained model
python test_SAM.py

# Results will be displayed in console

3. Prediction

python predict_SAM.py

๐Ÿ“– Citation

If you find this work helpful in your research, please consider citing:

@article{wu2025trans,
  title={Trans-sam: Transfer segment anything model to medical image segmentation with parameter-efficient fine-tuning},
  author={Wu, Yanlin and Wang, Zhihong and Yang, Xiongfeng and Kang, Hong and He, Along and Li, Tao},
  journal={Knowledge-Based Systems},
  volume={310},
  pages={112909},
  year={2025},
  publisher={Elsevier}
}

Acknowledgments