Test-time adaptation · Work in progress
TTA, one update at a time.
Watch Tent, Buffer, and AcTTA update their trainable parts on an unlabeled batch.
Gaussian noise · severity 3
What each TTA update changes
Recorded parameters at the selected layer and channel.
Tent
Turn the knobs.
Updates: BN scale & shift
—
Change from frozen Source—
Buffer
Take a detour.
Updates: An added residual branch
—
Current branch parameters—
AcTTA
Bend the curve.
Updates: Activation center & slopes
—
Current activation parameters—
Across TTA updates
The full batch, evaluated after each update.
Scores after the update
| Metric | SourceStored BN | TentBN affine | BufferResidual branch | AcTTAActivation |
|---|---|---|---|---|
| Accuracy ↑correct / images | — | — | — | — |
| ECE ↓ | — | — | — | — |
| Entropy ↓ | — | — | — | — |
At step 0, adaptive methods already use target-batch BN. Source uses stored statistics.
Inspect parameters & feature mapsLayers, channels & full curves
Mechanism → outcome
Where each method adapts.
Same image. Same layer. Same channel.
Frozen reference
Source
0 trainable parameters
No test-time update
Stored BN statistics · all weights frozen.
Image prediction
—
—
Normalization
Tent
— trainable parameters
Convolutions frozen
BN scale γ & shift β
Image prediction
—
—
Residual correction
Buffer
— trainable parameters
Backbone weights frozen
An added residual branch
Signed correction
before addition
Image prediction
—
—
Activation response
AcTTA
— trainable parameters
Backbone weights frozen
Center c & slopes λ+, λ−
Image prediction
—
—
Feature maps are pooled to 8×8 and share one signed scale across methods and updates. Buffer's smaller residual uses its own scale. Inspect channels 0–15; the second site has 160 channels.
Protocol & sourcesHow this was measured
Same checkpoint and entropy objective. Labels are used only for evaluation.
45 recorded PyTorch experiments share the RobustBench Standard CIFAR-10 WRN-28-10 checkpoint, fixed image indices, and mean prediction entropy. Adam: β=(0.9, 0.999), ε=10⁻⁸, no weight decay. Seed: 1. At batch 16/128, learning rates are 0.001 for Tent/Buffer and 0.01 for AcTTA. At batch 4, they are 0.0001 for Tent, 0.001 for Buffer, and 0.001 for AcTTA. Batch 16 uses the public batch-128 learning rates as an explicit demo override. Inputs are unnormalized [0,1] RGB from the first 512 original test images. All outcomes are retained. Labels never enter the update.
Tent updates every BN affine parameter. Buffer uses its public WRN model: a branch after the initial convolution plus independent branches after both ReLUs in each block of stages one and two. α starts at 10⁻⁵; trainable mixing coefficients start at 0.5. AcTTA uses the released activation and entropy adapter, replacing the eight independent ReLUs in stage one with channel-wise c, λ+, λ− and fixed β=1. It freezes BN affine parameters. No activation sites share adaptation parameters. All ineligible backbone weights are checked for bitwise equality after every update.
The one-batch experiment records 0–8 repeated updates to the same unlabeled batch. The stream has four batches per phase: clean → Gaussian noise (severity 3) → defocus blur (severity 5) → clean. The final clean phase reuses the original indices. Each incoming batch gets one update. Predictions, internal states, and the table show the current batch after its update. Stream history shows predictions before that batch's update. Reset restores both the parameters and optimizer.
Accuracy, entropy (nats), and ECE (ten equal-width confidence bins) use every image in the batch. Feature maps inspect channels 0–15 at block1.layer.0.relu1 (16 channels) and block1.layer.1.relu1 (160 channels), pool them to 8×8, and quantize them for display with a shared signed scale across methods and steps. Buffer maps include the correction at the matching site. Buffer's smaller residual has its own scale. Probabilities and parameters keep decimal precision.
Public model, activation, placement, and optimizer configurations are used here. These fixed-order subsets and repeated updates remain a mechanism demonstration, rather than a reproduction of the full shuffled paper benchmarks or a ranking of methods. Repeated-batch results concern the adapted inputs, not unseen-data generalization. Entropy can fall while accuracy gets worse; small batches make accuracy and calibration estimates noisy.
Code: AcTTA release · Buffer release. Model and checkpoint: RobustBench (MIT). AcTTA full-benchmark results ↗. Images: CIFAR-10, Alex Krizhevsky. Corruptions: CIFAR-10-C, Dan Hendrycks and Thomas Dietterich. Reproduction instructions ↗ · Run manifest ↗
Scores describe these inputs. Repeated updates are a mechanism demonstration.
Tent · ICLR 2021 ↗Buffer · NeurIPS 2025 ↗AcTTA · CVPR 2026 ↗Adaptation note ↗