Reading a PSMA PET/CT follow-up means scrolling the baseline and the follow-up side by side and hoping the crosshair lands on the same vertebra in both. On a whole-body scan it rarely does, because the patient’s arms, bladder, bowel and breathing all moved between visits. Fryderyk Kögl, Anna Reithmeir, Daniel M. Lang, Emily Chan, Rickmer Braren and Julia A. Schnabel (Helmholtz Munich, Technical University of Munich, Munich Center for Machine Learning, University Medical Center Hamburg-Eppendorf and King’s College London) posted arXiv:2610.21451 on 15 October 2026 with their entry to the Learn2Reg 2026 PSMAReg challenge. It is a deformable registration pipeline that aligns the follow-up scan to the baseline while trying hard not to change the tumor burden numbers you would read off the PET. The code is public under the MIT license as koegl/psmareg, with weights and a ready Docker container.
PSMAReg is the name of the challenge task, and the team reused it for the repository. The method itself is an adaptation of LapIRN, a diffeomorphic coarse-to-fine registration network from 2020. In this post I call it the PSMAReg pipeline to match the repo.
Why a viewer team should care
A registration that aligns organs well can still lie about the cancer. If the warp stretches a lesion by a fifth, any metabolic tumor volume (MTV) or total lesion glycolysis (TLG) you compute on the warped follow-up grows by a fifth too, and a stable patient looks like progression. Classical tools such as NiftyReg optimize image similarity and smoothness, with no term for lesion volume. This pipeline puts MTV and TLG preservation into the loss, which is the property you want before you hang a linked crosshair, a difference map, or a per-lesion change table on two timepoints.
What goes in and what comes out
Input is four NIfTI volumes per pair: baseline CT, baseline PET, follow-up CT and follow-up PET, in the challenge grid of 192 x 192 x 288 voxels at 2.73 x 2.73 x 3.27 mm. Output is one dense displacement field, channel-first with shape (3, 192, 192, 288), in voxel units, that maps the follow-up into the baseline frame. You then resample the follow-up PET, CT and any lesion masks with it.
The repo offers three ways to run it. The container ghcr.io/koegl/psmareg:v1.0.0 takes five positional paths, runs with --network=none, needs one 24 GB GPU and spends about 90 s per pair. Plain inference.py without instance optimization takes about 21 s per pair on an RTX A6000. With --io it refines each pair using CT organ labels from TotalSegmentator and lesion masks from the team’s nnU-Net, or labels you supply.
How it works
There are three stages. First, ANTs estimates an affine transform from the two CTs only, using body masks, a [-1000, 1000] HU window, half resolution and Mattes mutual information. Second, a three-level LapIRN pyramid (quarter, half, full resolution) takes fixed CT, fixed PET, affinely aligned moving CT and moving PET as four input channels and predicts a stationary velocity field per level. Scaling and squaring turns it into a diffeomorphic warp, so the field stays smooth and invertible. Third, at test time, a residual velocity field is optimized on top of the network output for each pair, and the best-scoring iterate is kept.
Image similarity is computed on CT only, because PSMA uptake legitimately changes after therapy, and a PET similarity term would push the warp to match disease rather than anatomy. PET still enters as a network input and through four preservation terms: change in MTV, mean Jacobian determinant inside the warped lesion, per-voxel Jacobian deviation from one, and change in TLG. For bone, which is where many PSMA-avid metastases sit, each of the 61 skeletal TotalSegmentator structures is fitted with a rigid transform (closed-form Kabsch alignment) and the residual is penalized. Vertebrae can move relative to each other but not squash. A differentiable copy of the challenge’s folding metric (non-diffeomorphic volume, NDV) penalizes voxels where the warp folds over itself.
What the numbers say
On the 20 official challenge validation cases, scored against surrogate labels, the submitted container configuration reaches 81.0 percent Dice on CT organs versus 73.3 percent for NiftyReg, the strongest baseline, with MTV and TLG errors of about 3.3 percent each (Table 1). On the official validation leaderboard the repo reports rank 7 of 45.
Figure 2 shows validation Dice still climbing after MTV and TLG bias have already bottomed out, so picking a checkpoint by Dice alone would hand you a model that aligns organs better and quantifies lesions worse. The team selects checkpoints with the challenge composite score instead. Instance optimization also buys overlap at a cost. Without it, the network output has zero measured folding. With it, the container configuration shows 864 ppm non-diffeomorphic volume, still below NiftyReg’s 1525 ppm.
The figure
The featured image uses the real scans from Fig. 1 of the paper: the follow-up PET/CT before registration, the baseline it is aligned to, and the warped follow-up. In the warped scan the liver and kidneys move toward their baseline positions, while the uptake pattern stays the follow-up’s own. It is one pair from the overview figure, not a curated result gallery, and the paper has no side-by-side against NiftyReg or ConvexAdam.
Limits
The authors list most of these limits themselves. Test-set labels were not released, so the 20-case comparison uses organ labels from TotalSegmentator and lesion labels from the winning autoPET III model, and the loss weights were tuned on those same 20 cases. They call the results exploratory rather than confirmatory, and hidden test results were not available when the paper went up. The bone rigidity term is only as good as the skeletal segmentation behind it. The 90 s time budget in the container lowers accuracy compared with the unconstrained validation run (88.3 percent Dice), mostly because it has to segment organs and lesions before it can optimize. MTV and TLG are checked in aggregate, not per lesion, so one lesion could grow while another shrinks and the totals still look fine. Training used 117 patient pairs from one challenge cohort at one fixed grid, so expect to test it on your own scanners and tracers before trusting it.
Code and license
The repository is MIT, and the LapIRN-derived model file keeps Tony C. W. Mok’s MIT notice. Release v1.0.0 carries the 3.6 MB registration checkpoint and a 219 MB nnU-Net lesion model with SHA256 sums. The training data is not redistributed; you get it through the challenge page on Codabench, and you should check the challenge data terms before shipping the trained weights inside a product. Training all three levels took a little over two days on one H100.
How we would wire it into a viewer
Convert the baseline and follow-up DICOM series to NIfTI, resample both into the challenge grid, and keep the geometry so you can map the voxel-unit field back to patient coordinates. Run the container on the pair, then use the field for correspondence: a linked crosshair between timepoints, lesion matching, and a warped follow-up shown beside the baseline. Measure SUV, MTV and TLG on the native follow-up and only borrow lesion correspondence from the warp, so a residual error in the field never touches the reported numbers. A Jacobian determinant overlay on the lesion masks makes a cheap QA layer: anything far from one inside a lesion deserves a second look. For related reading on this site, see MMA-LTS tumor overlay confidence and MID batch segmentation scores.
Sources
- Kögl, F., Reithmeir, A., Lang, D. M., Chan, E., Braren, R., Schnabel, J. A. PET Quantification-Preserving Registration for Longitudinal Whole-Body PSMA PET/CT. arXiv:2610.21451, 2026. https://arxiv.org/abs/2610.21451. PDF: https://arxiv.org/pdf/2610.21451.
- Code, weights and container (MIT): https://github.com/koegl/psmareg.
- Challenge: Learn2Reg 2026 PSMAReg, https://www.codabench.org/competitions/15724/. Base architecture: LapIRN (Mok and Chung, MICCAI 2020).
- Featured image: Fig. 1 of arXiv:2610.21451 (moving, fixed and warped PET/CT of one pair), real paper pixels.