SDAPTManuscript · 2026

Domain Adaptive Pretraining in Split Learning for Vision Foundation Models

Adapt together. Specialize locally.

Stan van Honk Vasileios Tsouvalas Nirvana Meratnia

At a glance

Specialized image domains can benefit from adaptation before labels are available. SDAPT adapts a shared vision backbone from local, unlabeled images, using frozen client layers and server-side self-supervision. It then freezes the adapted backbone and returns representations for each client to train its own supervised task head.

Adapt together · Specialize locally
ClientsImages + labels stay local
Phase 1 of 2Domain adaptation
Shared serverStudent + EMA teacher
Unlabeled domain adaptation

Local images → shared feature batch

AClient AUnlabeled images
Local image
2 global
8 local
Client partitionPatch embed + first block
Frozen
CLS + patch tokens
BClient BUnlabeled images
Local image
2 global
8 local
Client partitionPatch embed + first block
Frozen
CLS + patch tokens
One server batchA + B + …
Two global + eight local crops · Frozen client layers · Features to the server
ClientsImages + labels stay local
Phase 1 of 2Domain adaptation
Shared serverStudent + EMA teacher
Unlabeled domain adaptation

Self-distill on the shared server

All client feature batchesShared centering statistics
Global viewsTeacherEMA weights
EMA
Global + local viewsStudentLoRA + last block Mask global patches
Teacher targets ↓Student outputs ↓
Self-supervised lossDINO + λ₁ iBOT + λ₂ KoLeo
Update studentServer only
DINO + iBOT + KoLeo · Server gradients · EMA teacher update
ClientsImages + labels stay local
Phase 2 of 2Task-head training
Shared serverAdapted teacher
Labeled downstream tasks

Reuse the adapted teacher

Each client
Original imageNo multi-crop
Client partitionFrozen
CLS + patch tokens
Adapted representations
Shared server
Adapted teacherFrozen
CLS → classificationPatch tokens → dense tasks*

*The reported experiments evaluate classification.

Original image → frozen backbone → adapted representation → client
ClientsImages + labels stay local
Phase 2 of 2Task-head training
Shared serverAdapted teacher
Labeled downstream tasks

One adapted backbone, local task heads

AClient ATask A
Returned representation
Task headTrainable
Prediction+Local labelSupervised loss
Update this head
BClient BTask B
Returned representation
Task headTrainable
Prediction+Local labelSupervised loss
Update this head
Backbone stays frozenIndependent local heads · Parallel training
Returned features + local labels · Train each head independently
Method diagram

Swipe across the diagram

What this adds

  • 01

    Adapt without client backpropagation: frozen client layers send features to a shared DINOv2 student and EMA teacher.

  • 02

    Separate adaptation from task learning: one adapted backbone serves local heads with different in-domain tasks.

  • 03

    Expose the budget trade-off: compare multi-crop self-distillation with distributed alternatives across three image domains.

Abstract

Vision Foundation Models (VFMs) support tasks with limited labeled data, although their performance can decline in specialized domains. Domain-Adaptive Pretraining (DAPT) can address this limitation by adapting their representations using unlabeled in-domain images; yet these often are privacy-sensitive and distributed across resource-constrained devices. Split Learning (SL) addresses these constraints by offloading computation to a server while keeping raw images local. Existing SL methods, however, explore self-supervised training from scratch, leaving collaborative DAPT of VFMs underexplored. For this, we propose SDAPT, which performs server-side DAPT with LoRA adapters using features from frozen client layers, then trains task-specific heads on the frozen adapted VFM, keeping images and labels local. Across 3 domains, and diverse few-shot settings, we observe mean gains of 7.4 pp over direct fine-tuning, while adapting once on unlabeled domain data yields shared representations that improve performance across multiple downstream tasks.

Read more ↗
How it works

SDAPT

01

Extract local views through a frozen partition

Each client creates two global and eight local crops of an unlabeled in-domain image. The frozen client partition produces a CLS activation and patch tokens for every view. Only these activations go to the server; the student and teacher share the client partition.

Section 2.1, Domain Adaptive Pretraining Phase, and Figure 1 · p. 2. Section 3 · p. 3 uses DINOv2 ViT-B/14 with the first transformer block on the client.

02

Adapt one student on the combined batch

The server concatenates client features into a global batch for DINOv2 self-supervision and batch-level centering. The teacher consumes global views; the student consumes global and local views, with iBOT masking applied to global patch tokens on the server. Gradients update the student, and an exponential moving average updates the teacher.

ℒSSL=ℒDINO+λ1ℒiBOT+λ2ℒKoLeo

Equation (1), Figure 1 and Section 2.1 · pp. 2–3. The server uses LoRA and fully unfreezes its last block; the CheXpert experiments unfreeze the last two. Frozen client layers require no returned gradients.

03

Freeze the adapted teacher for downstream features

After adaptation, the full split backbone is frozen. Clients pass original, non-augmented images through their frozen partition. The server uses the adapted teacher to return CLS features for classification, or patch features for dense tasks.

Section 2.1, Fine-tuning Phase, and Figure 1 · pp. 2–3. Dense prediction is described by the method; the reported experiments cover classification only.

04

Train task-specific heads locally

Each client combines the returned representation with its own labels to train a supervised task head. Only the head changes, so clients can train in parallel without sending loss gradients to the server.

ℒFT(n)=ℒsup(gϕn(rn(x)),y)

Equation (2) and Section 2.1 · p. 3. rn(x) is the returned representation; gϕn is client n’s head and y its local label.

Method and experiment source data ↗

Evaluation

Results

Stronger representations with more labels

DINOv2 ViT-B/14 · 10 IID clients · Few-shot classification

FT w/o DAPTFedAvgMocoSFLSDAPT

fMoW

FT w/o DAPT: 4, 12.8, 8, 18.3, 16, 23.4; FedAvg: 4, 18.4, 8, 28.8, 16, 38.8; MocoSFL: 4, 22.4, 8, 31.5, 16, 35.7; SDAPT: 4, 16.9, 8, 27.5, 16, 37.5Accuracy (%) ↑481601020304050FT w/o DAPT · 4, 12.8FT w/o DAPT · 8, 18.3FT w/o DAPT · 16, 23.4FedAvg · 4, 18.4FedAvg · 8, 28.8FedAvg · 16, 38.8MocoSFL · 4, 22.4MocoSFL · 8, 31.5MocoSFL · 16, 35.7SDAPT · 4, 16.9SDAPT · 8, 27.5SDAPT · 16, 37.5Shots (k)

QuickDraw

FT w/o DAPT: 4, 18.4, 8, 25.8, 16, 32.3; FedAvg: 4, 27, 8, 37.2, 16, 43.9; MocoSFL: 4, 23.2, 8, 32.4, 16, 39; SDAPT: 4, 22.3, 8, 33.2, 16, 43.1Accuracy (%) ↑481601020304050FT w/o DAPT · 4, 18.4FT w/o DAPT · 8, 25.8FT w/o DAPT · 16, 32.3FedAvg · 4, 27FedAvg · 8, 37.2FedAvg · 16, 43.9MocoSFL · 4, 23.2MocoSFL · 8, 32.4MocoSFL · 16, 39SDAPT · 4, 22.3SDAPT · 8, 33.2SDAPT · 16, 43.1Shots (k)

CheXpert

FT w/o DAPT: 4, 34.7, 8, 38.1, 16, 37.8; FedAvg: 4, 37.7, 8, 39.3, 16, 43.9; MocoSFL: 4, 39.3, 8, 39.7, 16, 43.4; SDAPT: 4, 41.3, 8, 41.7, 16, 44.4AUROC (0–100) ↑481601020304050FT w/o DAPT · 4, 34.7FT w/o DAPT · 8, 38.1FT w/o DAPT · 16, 37.8FedAvg · 4, 37.7FedAvg · 8, 39.3FedAvg · 16, 43.9MocoSFL · 4, 39.3MocoSFL · 8, 39.7MocoSFL · 16, 43.4SDAPT · 4, 41.3SDAPT · 8, 41.7SDAPT · 16, 44.4Shots (k)

Linear probing (LP)

Linear probing (LP). Table 1 LP scores · fMoW and QuickDraw accuracy (%); CheXpert AUROC (0–100).
MethodfMoW · Acc.QuickDraw · Acc.CheXpert · AUROC
FT w/o DAPT53.942.977.4
FedAvg67.350.878.1
MocoSFL62.148.180.2
SDAPT66.751.180.7

+7.4 pp on average over no DAPT across nine few-shot settings. SDAPT exceeds MocoSFL at 16 shots in all three domains; FedAvg leads on few-shot fMoW and QuickDraw.

Source data ↗

The adaptation budget changes the trade-off

Gain over no DAPT · Estimated feature uplink and all-client forward compute; server compute excluded

Compare adaptation budgets
MocoSFLSDAPT

fMoW

MocoSFL: 0.197376, 3.28, 0.394752, 6.11, 0.592128, 7.28, 0.789504, 7.8, 0.98688, 8.08, 1.18426, 8.18, 1.38163, 8.18, 1.57901, 8.19, 1.77638, 8.17, 1.97376, 8.17; SDAPT: 0.43872, 5.76, 0.87744, 8.56, 1.31616, 10.18, 1.75488, 11.17, 2.1936, 11.92, 2.63232, 12.41, 3.07104, 12.56, 3.50976, 12.7, 3.94848, 12.75, 4.3872, 12.78Accuracy gain (pp) ↑0.20.514051015MocoSFL · 0.197376, 3.28MocoSFL · 0.394752, 6.11MocoSFL · 0.592128, 7.28MocoSFL · 0.789504, 7.8MocoSFL · 0.98688, 8.08MocoSFL · 1.18426, 8.18MocoSFL · 1.38163, 8.18MocoSFL · 1.57901, 8.19MocoSFL · 1.77638, 8.17MocoSFL · 1.97376, 8.17SDAPT · 0.43872, 5.76SDAPT · 0.87744, 8.56SDAPT · 1.31616, 10.18SDAPT · 1.75488, 11.17SDAPT · 2.1936, 11.92SDAPT · 2.63232, 12.41SDAPT · 3.07104, 12.56SDAPT · 3.50976, 12.7SDAPT · 3.94848, 12.75SDAPT · 4.3872, 12.78Feature upload (TB) · log scale

QuickDraw

MocoSFL: 0.197376, 4.21, 0.394752, 5.42, 0.592128, 5.48, 0.789504, 5.45, 0.98688, 5.34, 1.18426, 5.29, 1.38163, 5.23, 1.57901, 5.18, 1.77638, 5.16; SDAPT: 0.43872, 4.4, 0.87744, 5.52, 1.31616, 6.53, 1.75488, 7.34, 2.1936, 7.9, 2.63232, 8.03, 3.07104, 8.07, 3.50976, 8.14, 3.94848, 8.15, 4.3872, 8.15Accuracy gain (pp) ↑0.20.5140246810MocoSFL · 0.197376, 4.21MocoSFL · 0.394752, 5.42MocoSFL · 0.592128, 5.48MocoSFL · 0.789504, 5.45MocoSFL · 0.98688, 5.34MocoSFL · 1.18426, 5.29MocoSFL · 1.38163, 5.23MocoSFL · 1.57901, 5.18MocoSFL · 1.77638, 5.16SDAPT · 0.43872, 4.4SDAPT · 0.87744, 5.52SDAPT · 1.31616, 6.53SDAPT · 1.75488, 7.34SDAPT · 2.1936, 7.9SDAPT · 2.63232, 8.03SDAPT · 3.07104, 8.07SDAPT · 3.50976, 8.14SDAPT · 3.94848, 8.15SDAPT · 4.3872, 8.15Feature upload (TB) · log scale

CheXpert

MocoSFL: 0.473472, 1.19, 0.946944, 1.9, 1.42042, 2.32, 1.89389, 2.57, 2.36736, 2.75, 2.84083, 2.82, 3.3143, 2.84; SDAPT: 2.48602, 0.81, 3.72902, 1.84, 4.97203, 3.1, 7.45805, 3.49, 9.94406, 3.41, 12.4301, 3.33, 14.9161, 3.44, 17.4021, 3.36, 19.8881, 3.32, 22.3741, 3.28AUROC gain (pp) ↑0.5152001234MocoSFL · 0.473472, 1.19MocoSFL · 0.946944, 1.9MocoSFL · 1.42042, 2.32MocoSFL · 1.89389, 2.57MocoSFL · 2.36736, 2.75MocoSFL · 2.84083, 2.82MocoSFL · 3.3143, 2.84SDAPT · 2.48602, 0.81SDAPT · 3.72902, 1.84SDAPT · 4.97203, 3.1SDAPT · 7.45805, 3.49SDAPT · 9.94406, 3.41SDAPT · 12.4301, 3.33SDAPT · 14.9161, 3.44SDAPT · 17.4021, 3.36SDAPT · 19.8881, 3.32SDAPT · 22.3741, 3.28Feature upload (TB) · log scale

fMoW

MocoSFL: 0.231, 3.28, 0.462, 6.11, 0.693, 7.28, 0.924, 7.8, 1.155, 8.08, 1.386, 8.18, 1.617, 8.18, 1.848, 8.19, 2.079, 8.17, 2.31, 8.17; SDAPT: 0.4, 5.76, 0.8, 8.56, 1.2, 10.18, 1.6, 11.17, 2, 11.92, 2.4, 12.41, 2.8, 12.56, 3.2, 12.7, 3.6, 12.75, 4, 12.78Accuracy gain (pp) ↑0.20.514051015MocoSFL · 0.231, 3.28MocoSFL · 0.462, 6.11MocoSFL · 0.693, 7.28MocoSFL · 0.924, 7.8MocoSFL · 1.155, 8.08MocoSFL · 1.386, 8.18MocoSFL · 1.617, 8.18MocoSFL · 1.848, 8.19MocoSFL · 2.079, 8.17MocoSFL · 2.31, 8.17SDAPT · 0.4, 5.76SDAPT · 0.8, 8.56SDAPT · 1.2, 10.18SDAPT · 1.6, 11.17SDAPT · 2, 11.92SDAPT · 2.4, 12.41SDAPT · 2.8, 12.56SDAPT · 3.2, 12.7SDAPT · 3.6, 12.75SDAPT · 4, 12.78Client compute (10⁶ GFLOPs) · log scale

QuickDraw

MocoSFL: 0.231, 4.21, 0.462, 5.42, 0.693, 5.48, 0.924, 5.45, 1.155, 5.34, 1.386, 5.29, 1.617, 5.23, 1.848, 5.18, 2.079, 5.16; SDAPT: 0.4, 4.4, 0.8, 5.52, 1.2, 6.53, 1.6, 7.34, 2, 7.9, 2.4, 8.03, 2.8, 8.07, 3.2, 8.14, 3.6, 8.15, 4, 8.15Accuracy gain (pp) ↑0.20.5140246810MocoSFL · 0.231, 4.21MocoSFL · 0.462, 5.42MocoSFL · 0.693, 5.48MocoSFL · 0.924, 5.45MocoSFL · 1.155, 5.34MocoSFL · 1.386, 5.29MocoSFL · 1.617, 5.23MocoSFL · 1.848, 5.18MocoSFL · 2.079, 5.16SDAPT · 0.4, 4.4SDAPT · 0.8, 5.52SDAPT · 1.2, 6.53SDAPT · 1.6, 7.34SDAPT · 2, 7.9SDAPT · 2.4, 8.03SDAPT · 2.8, 8.07SDAPT · 3.2, 8.14SDAPT · 3.6, 8.15SDAPT · 4, 8.15Client compute (10⁶ GFLOPs) · log scale

CheXpert

MocoSFL: 0.561825, 1.19, 1.12365, 1.9, 1.68548, 2.32, 2.2473, 2.57, 2.80912, 2.75, 3.37095, 2.82, 3.93277, 2.84; SDAPT: 2.385, 0.81, 3.5775, 1.84, 4.77, 3.1, 7.155, 3.49, 9.54, 3.41, 11.925, 3.33, 14.31, 3.44, 16.695, 3.36, 19.08, 3.32, 21.465, 3.28AUROC gain (pp) ↑0.5152001234MocoSFL · 0.561825, 1.19MocoSFL · 1.12365, 1.9MocoSFL · 1.68548, 2.32MocoSFL · 2.2473, 2.57MocoSFL · 2.80912, 2.75MocoSFL · 3.37095, 2.82MocoSFL · 3.93277, 2.84SDAPT · 2.385, 0.81SDAPT · 3.5775, 1.84SDAPT · 4.77, 3.1SDAPT · 7.155, 3.49SDAPT · 9.54, 3.41SDAPT · 11.925, 3.33SDAPT · 14.31, 3.44SDAPT · 16.695, 3.36SDAPT · 19.08, 3.32SDAPT · 21.465, 3.28Client compute (10⁶ GFLOPs) · log scale

fMoW

MocoSFL: 0.25, 3.28, 0.5, 6.11, 0.75, 7.28, 1, 7.8, 1.25, 8.08, 1.5, 8.18, 1.75, 8.18, 2, 8.19, 2.25, 8.17, 2.5, 8.17; SDAPT: 0.3125, 5.76, 0.625, 8.56, 0.9375, 10.18, 1.25, 11.17, 1.5625, 11.92, 1.875, 12.41, 2.1875, 12.56, 2.5, 12.7, 2.8125, 12.75, 3.125, 12.78Accuracy gain (pp) ↑0.10.514051015MocoSFL · 0.25, 3.28MocoSFL · 0.5, 6.11MocoSFL · 0.75, 7.28MocoSFL · 1, 7.8MocoSFL · 1.25, 8.08MocoSFL · 1.5, 8.18MocoSFL · 1.75, 8.18MocoSFL · 2, 8.19MocoSFL · 2.25, 8.17MocoSFL · 2.5, 8.17SDAPT · 0.3125, 5.76SDAPT · 0.625, 8.56SDAPT · 0.9375, 10.18SDAPT · 1.25, 11.17SDAPT · 1.5625, 11.92SDAPT · 1.875, 12.41SDAPT · 2.1875, 12.56SDAPT · 2.5, 12.7SDAPT · 2.8125, 12.75SDAPT · 3.125, 12.78Sample presentations (10⁶) · log scale

QuickDraw

MocoSFL: 0.25, 4.21, 0.5, 5.42, 0.75, 5.48, 1, 5.45, 1.25, 5.34, 1.5, 5.29, 1.75, 5.23, 2, 5.18, 2.25, 5.16; SDAPT: 0.3125, 4.4, 0.625, 5.52, 0.9375, 6.53, 1.25, 7.34, 1.5625, 7.9, 1.875, 8.03, 2.1875, 8.07, 2.5, 8.14, 2.8125, 8.15, 3.125, 8.15Accuracy gain (pp) ↑0.10.5140246810MocoSFL · 0.25, 4.21MocoSFL · 0.5, 5.42MocoSFL · 0.75, 5.48MocoSFL · 1, 5.45MocoSFL · 1.25, 5.34MocoSFL · 1.5, 5.29MocoSFL · 1.75, 5.23MocoSFL · 2, 5.18MocoSFL · 2.25, 5.16SDAPT · 0.3125, 4.4SDAPT · 0.625, 5.52SDAPT · 0.9375, 6.53SDAPT · 1.25, 7.34SDAPT · 1.5625, 7.9SDAPT · 1.875, 8.03SDAPT · 2.1875, 8.07SDAPT · 2.5, 8.14SDAPT · 2.8125, 8.15SDAPT · 3.125, 8.15Sample presentations (10⁶) · log scale

CheXpert

MocoSFL: 0.1125, 1.19, 0.225, 1.9, 0.3375, 2.32, 0.45, 2.57, 0.5625, 2.75, 0.675, 2.82, 0.7875, 2.84; SDAPT: 0.375, 0.81, 0.5625, 1.84, 0.75, 3.1, 1.125, 3.49, 1.5, 3.41, 1.875, 3.33, 2.25, 3.44, 2.625, 3.36, 3, 3.32, 3.375, 3.28AUROC gain (pp) ↑0.10.51401234MocoSFL · 0.1125, 1.19MocoSFL · 0.225, 1.9MocoSFL · 0.3375, 2.32MocoSFL · 0.45, 2.57MocoSFL · 0.5625, 2.75MocoSFL · 0.675, 2.82MocoSFL · 0.7875, 2.84SDAPT · 0.375, 0.81SDAPT · 0.5625, 1.84SDAPT · 0.75, 3.1SDAPT · 1.125, 3.49SDAPT · 1.5, 3.41SDAPT · 1.875, 3.33SDAPT · 2.25, 3.44SDAPT · 2.625, 3.36SDAPT · 3, 3.32SDAPT · 3.375, 3.28Sample presentations (10⁶) · log scale

MocoSFL is competitive at small budgets. SDAPT reaches larger gains at higher budgets; CheXpert peaks before the final checkpoint.

Source data ↗

One adapted backbone, eight local tasks

CheXpert adaptation → CheXlocalize test set · AUROC gain over no DAPT (pp)

Change per label ↑ Higher is better

MocoSFLSDAPT
Enlarged cardiom.
MocoSFL: +5.30
SDAPT: +5.46
Cardiomegaly
MocoSFL: +4.51
SDAPT: +6.42
Lung opacity
MocoSFL: +2.40
SDAPT: +1.19
Edema
MocoSFL: +1.18
SDAPT: -2.25
Consolidation
MocoSFL: +0.22
SDAPT: -0.28
Atelectasis
MocoSFL: +2.86
SDAPT: +0.27
Pleural effusion
MocoSFL: +0.57
SDAPT: +1.36
Support devices
MocoSFL: +5.44
SDAPT: +14.01

77.41 → 80.68 mean AUROC. SDAPT improves six of eight labels; edema and consolidation decline.

Source data ↗
Reference

Cite this work

BibTeX
@misc{vanhonk2026sdapt,
  title = {Domain Adaptive Pretraining in Split Learning for Vision Foundation Models},
  author = {Stan van Honk and Vasileios Tsouvalas and Nirvana Meratnia},
  year = {2026},
  note = {Manuscript},
  url = {https://nousphera.github.io/projects/sdapt/}
}

Keep exploring

AE-PSL

Align first. Compress every training step.

MPSL

Multimodal fine-tuning with lightweight edge clients.

Figure preview

Open full-size image