SFibAI is a deep learning framework for precise grading of liver fibrosis in ultrasound images. This project implements a multi-class classification system that can accurately assess the degree of liver fibrosis from ultrasound images.
project_root/
├── dataset/ # Dataset directory
│ └── seg_samples_500/ # 500 labelled image samples
│ ├── train/ # Training set
│ │ ├── 0.0/ # Images with fibrosis grade 0.0
│ │ ├── 0.1/ # Images with fibrosis grade 0.1
│ │ └── ... # Other grades (0.2 to 3.5)
│ └── val/ # Validation set
│ ├── 0.0/ # Images with fibrosis grade 0.0
│ ├── 0.1/ # Images with fibrosis grade 0.1
│ └── ... # Other grades (0.2 to 3.5)
├── models/ # Model weights directory
│ └── trained_model.pth # ---model weights---
├── runs/ # Training logs and results
├── scripts/ # Source code
│ ├── figure_generate/ # Visualization scripts
│ │ ├── dataset_size_distri.py # Dataset distribution analysis
│ │ └── feature_heatmap.py # Feature visualization
│ └── train_eval/ # Training and evaluation scripts
│ ├── data/ # Data processing modules
│ │ ├── dataset.py # Dataset class implementation
│ │ └── transforms.py # Image transformations
│ ├── utils/ # Utility functions
│ │ ├── metrics.py # Evaluation metrics
│ │ └── visualization.py # Training visualization
│ ├── config.py # Configuration parameters
│ ├── train.py # Training script
│ ├── eval.py # Evaluation script
│ ├── train.sh # Training shell script
│ └── eval.sh # Evaluation shell script
└── requirements.txt # Python dependencies
- Create a new conda environment:
conda create -n sfibai python=3.8
conda activate sfibai- Install dependencies:
pip install -r requirements.txtThe dataset consists of 500 labelled ultrasound images of liver fibrosis, organized by fibrosis grade. The dataset is split into training and validation sets:
-
Training set (
dataset/seg_samples_500/train/):- Contains images with fibrosis grades from 0.0 to 3.5
- Each grade has its own subdirectory (e.g., 0.0/, 0.1/, etc.)
- Images are organized by their fibrosis grade
-
Validation set (
dataset/seg_samples_500/val/):- Contains images with fibrosis grades from 0.0 to 3.5
- Similar structure to the training set
- Used for model validation during training
Each image is labeled with its corresponding fibrosis grade, which is used as the target for the classification task.
-
Configure training parameters in
scripts/train_eval/config.py:- Set dataset paths
- Adjust model parameters
- Configure training hyperparameters
-
Start training:
cd scripts/train_eval
bash train.shTraining logs and model checkpoints will be saved in the runs directory.
- Evaluate model performance:
cd scripts/train_eval
bash eval.shEvaluation results will be saved in the eval_results directory.
- Analyze dataset distribution:
cd scripts/figure_generate
python dataset_size_distri.py- Generate feature heatmaps:
cd scripts/figure_generate
python feature_heatmap.pytrain.py: Main training script implementing the training loop and model optimizationeval.py: Evaluation script for model performance assessmentconfig.py: Configuration file containing all hyperparameters and settings
dataset.py: Custom dataset class for loading and preprocessing ultrasound imagestransforms.py: Image transformation pipeline for data augmentation
metrics.py: Implementation of evaluation metricsvisualization.py: Functions for plotting training progress and results
dataset_size_distri.py: Analyzes and visualizes dataset distributionfeature_heatmap.py: Generates feature activation heatmaps for model interpretation