This code is a pytorch implementation of our paper "GL-LCM: Global-Local Latent Consistency Models for Fast High-Resolution Bone Suppression in Chest X-Ray Images" accepted by MICCAI 2025. [π© arXiv] [π Project Page]
π₯ Visualization before (left) and after (right) bone suppression using GL-LCM

π‘ Primary contributions
To overcome these challenges, we propose Global-Local Latent Consistency Model (GL-LCM). This is a novel framework for fast high-resolution bone suppression in CXR images based on Latent Consistency Models (LCMs). Our key contributions are summarized as follows:
πThe GL-LCM architecture facilitates effective bone suppression while retaining texture details. This is achieved through the design of dual-path sampling in the latent space combined with global-local fusion in the pixel space.
πGL-LCM significantly enhances inference efficiency, which requires only approximately 10% of the inference time of current diffusion-based methods, making it more suitable for clinical applications.
πWe introduce Local-Enhanced Guidance (LEG) to mitigate potential boundary artifacts and detail blurring issues in local-path sampling, without additional training.
πExtensive experiments on both the self-collected dataset SZCH-X-Rays and the public dataset JSRT demonstrate exceptional performance and efficiency of our GL-LCM.
π§ Proposed method

Overview of GL-LCM framework. (a) Lung segmentation in the pixel space, (b) Dual-path sampling in the latent space, and (c) Global-local fusion in the pixel space.
ποΈ Comparisons
- Qualitative Results on SZCH-X-Rays and JSRT

- Quantitative results on SZCH-X-Rays
Method | BSR (%)β | MSE (10β»Β³)β | PSNRβ | LPIPSβ |
---|---|---|---|---|
Universal Method | ||||
VAE | 91.281 Β± 3.088 | 1.169 Β± 1.059 | 30.018 Β± 2.007 | 0.237 Β± 0.047 |
VQ-VAE | 94.485 Β± 2.407 | 0.645 Β± 0.596 | 32.600 Β± 2.071 | 0.137 Β± 0.029 |
VQGAN | 94.330 Β± 3.402 | 0.923 Β± 2.478 | 32.096 Β± 2.420 | 0.083 Β± 0.020 |
Task-Specific Method | ||||
Gusarev et al. | 94.142 Β± 2.666 | 1.028 Β± 2.201 | 31.369 Β± 2.385 | 0.156 Β± 0.031 |
MCA-Net | 95.442 Β± 2.095 | 0.611 Β± 0.435 | 32.689 Β± 1.939 | 0.079 Β± 0.018 |
ResNet-BS | 94.508 Β± 1.733 | 0.646 Β± 0.339 | 32.265 Β± 1.635 | 0.107 Β± 0.022 |
Wang et al. | 89.767 Β± 6.079 | 1.080 Β± 0.610 | 29.963 Β± 1.378 | 0.072 Β± 0.016 |
BS-Diff | 92.428 Β± 3.258 | 0.947 Β± 0.510 | 30.627 Β± 1.690 | 0.212 Β± 0.041 |
BS-LDM | 94.159 Β± 2.751 | 0.701 Β± 0.293 | 31.953 Β± 1.969 | 0.070 Β± 0.018 |
GL-LCM (Ours) | 95.611 Β± 1.529 | 0.512 Β± 0.293 | 33.347 Β± 1.829 | 0.056 Β± 0.015 |
- Quantitative results on JSRT
Method | BSR (%)β | MSE (10β»Β³)β | PSNRβ | LPIPSβ |
---|---|---|---|---|
Universal Method | ||||
VAE | 85.646 Β± 9.327 | 1.224 Β± 0.749 | 29.814 Β± 2.364 | 0.155 Β± 0.032 |
VQ-VAE | 86.445 Β± 8.881 | 0.986 Β± 0.596 | 30.712 Β± 2.273 | 0.062 Β± 0.017 |
VQGAN | 86.594 Β± 8.916 | 1.002 Β± 0.606 | 30.635 Β± 2.255 | 0.061 Β± 0.017 |
Task-Specific Method | ||||
Gusarev et al. | 89.283 Β± 8.288 | 0.821 Β± 0.570 | 31.700 Β± 2.594 | 0.100 Β± 0.024 |
MCA-Net | 86.887 Β± 9.825 | 0.876 Β± 0.625 | 31.577 Β± 2.905 | 0.057 Β± 0.017 |
ResNet-BS | 88.782 Β± 8.905 | 0.960 Β± 0.661 | 31.021 Β± 2.576 | 0.060 Β± 0.016 |
Wang et al. | 89.679 Β± 9.477 | 1.013 Β± 0.655 | 30.681 Β± 2.431 | 0.075 Β± 0.015 |
BS-Diff | 88.707 Β± 8.859 | 1.003 Β± 0.655 | 30.765 Β± 2.504 | 0.154 Β± 0.037 |
BS-LDM | 89.322 Β± 9.562 | 0.783 Β± 0.632 | 32.307 Β± 3.231 | 0.058 Β± 0.017 |
GL-LCM (Ours) | 90.056 Β± 10.635 | 0.746 Β± 0.680 | 32.951 Β± 3.799 | 0.052 Β± 0.015 |
- Inference efficiency comparison on SZCH-X-Rays
Method | Sampler | Sampling Steps | Parameters | Inference Time (s) |
---|---|---|---|---|
BS-Diff | DDPM | 1000 | 254.7M | 108.86 |
BS-LDM | DDPM | 1000 | 421.3M | 84.62 |
GL-LCM (Ours) | LCM | 50 | 436.9M | 8.54 |
π Ablation study
- Qualitative results of LEG on SZCH-X-Rays and JSRT

A pseudo-color zoomed-in view is shown in the bottom right corner, and the green arrows mark the boundary artifacts.
- Quantitative results of LEG on SZCH-X-Rays and JSRT
Guidance Method | SZCH-X-Rays | JSRT | ||
---|---|---|---|---|
PSNRβ | LPIPSβ | PSNRβ | LPIPSβ | |
Vanilla Guidance | 32.777 Β± 2.091 | 0.058 Β± 0.016 | 32.296 Β± 3.454 | 0.073 Β± 0.020 |
CFG | 32.315 Β± 1.717 | 0.068 Β± 0.013 | 32.613 Β± 3.604 | 0.070 Β± 0.015 |
LEG (Ours) | 33.347 Β± 1.829 | 0.056 Β± 0.015 | 32.951 Β± 3.799 | 0.052 Β± 0.015 |
- Quantitative results of Poisson Fusion on SZCH-X-Rays and JSRT
Fusion Strategy | SZCH-X-Rays | JSRT | ||
---|---|---|---|---|
PSNRβ | LPIPSβ | PSNRβ | LPIPSβ | |
β | 31.360 Β± 2.079 | 0.091 Β± 0.020 | 31.638 Β± 3.078 | 0.074 Β± 0.021 |
Ξ±-Fusion | 29.781 Β± 1.522 | 0.181 Β± 0.021 | 31.784 Β± 3.043 | 0.092 Β± 0.013 |
AE Fusion | 30.850 Β± 1.806 | 0.141 Β± 0.028 | 31.835 Β± 3.075 | 0.061 Β± 0.017 |
Poisson Fusion (Ours) | 33.347 Β± 1.829 | 0.056 Β± 0.015 | 32.951 Β± 3.799 | 0.052 Β± 0.015 |
βοΈ Pre-requisties
Linux
Python>=3.7
NVIDIA GPU (memory>=32G) + CUDA cuDNN
π Pre-trained models
VQGAN - SZCH-X-Rays UNet - SZCH-X-Rays VQGAN - JSRT UNet - JSRT
π¦ Download the datasets
The original JSRT dataset and processed JSRT dataset are located at https://drive.google.com/file/d/1RkiU85FFfouWuKQbpD7Pc7o3aZ7KrpYf/view?usp=sharing and https://drive.google.com/file/d/1o-T5l2RKdT5J75eBsqajqAuHPfZnzPhj/view?usp=sharing, respectively.
Three paired images with CXRs and DES soft-tissues images of SZCH-X-Rays for testing are located at
ββdata
ββ CXR
β ββ 0.png
β ββ 1.png
β ββ 2.png
ββ BS
ββ 0.png
ββ 1.png
ββ 2.png
To implement lung segmentation in data preparation, please use lungSegmentation.ipynb.
π«³ Install dependencies
pip install -r requirements.txt
π Evaluation
To do the evaluation process of VQGAN for visualization, please run the following command:
python vq-gan_eval.py
To do the evaluation process of GL-LCM, please run the following command:
python batch_lcm_eval.py
π Training
If you want to train our model by yourself, you are primarily expected to split the whole dataset into training, validation and testing sets. Please run the following command:
python dataSegmentation.py
Then, you can run the following command to train the VQGAN model:
python vq-gan_train.py
Then after finishing the training of VQGAN, you can use the saved VQGAN model when training the noise estimator network of GL-LCM by running the following command:
python lcm_train.py
π Metrics
You can also run the following command about evaluation metrics including BSR, MSE, PSNR and LPIPS:
python metrics.py
π’ Citation
@inproceedings{sun2025gl,
title={Gl-lcm: Global-local latent consistency models for fast high-resolution bone suppression in chest X-ray images},
author={Sun, Yifei and Chen, Zhanghao and Zheng, Hao and Lu, Yuqing and Duan, Lixin and Min, Wenwen and Fan, Fenglei and Elazab, Ahmed and Wan, Xiang and Wang, Changmiao and Ge, Ruiquan},
booktitle={International Conference on Medical Image Computing and Computer-Assisted Intervention},
year={2025},
organization={Springer}
}