stather (v.)

Method and results

Three lines: four video classifiers fine-tuned on HMDB51 and evaluated on ordered and frame-permuted clips over three splits, behind a gate that must reject a shuffled-label control. The shuffle gap separates the 3D convnets (10.8 to 16.7 points) from the transformer (2.2 to 5.0) on every split. The export path found one model that quantises losslessly and one that collapses, and the collapse is explained by the activation statistics of a single tensor.

Protocol

monte: sandboxed units on the training card

carlo: coordinator

submit

prep

acquire lease

gate 0

matrix: models x seeds x splits

long tail

export

release lease

report

gather

decode once

train

ONNX, ONNX Runtime, TensorRT

no

yes

2D control, two seeds

same, labels permuted across clips

permuted-label top-1 at chance and control top-1 above 5 x chance

reject: nothing downstream is read

S3D, two seeds, ordered and permuted frames

shuffle gap against the seed-pair noise floor

Results: appearance versus motion

Split 1, 30 epochs, two seeds. Gate 0 at 10 epochs: permuted-label controls 1.9 / 2.2 % (chance 1.96 %); single middle frame 44 %; temporal noise floor 2.3 points.

ModelTop-1 ordered (s1 / s2)Top-1 permutedGapSeed spreadECE
2D control48.1 / 49.7identical0.0 (by construction)1.60.12 / 0.14
S3D66.0 / 66.052.8 / 53.013.00.00.19
R(2+1)D-1870.6 / 70.354.0 / 54.116.50.30.10
Swin3D-T74.0 / 72.569.0 / 69.73.91.50.072

Across splits (S3D and Swin3D-T, two seeds each):

ModelSplitTop-1 ordered (s1 / s2)Top-1 permutedGap
S3D261.9 / 63.251.1 / 51.310.9 / 12.0
S3D365.4 / 65.954.6 / 54.110.8 / 11.8
Swin3D-T270.5 / 71.766.7 / 68.13.8 / 3.5
Swin3D-T369.5 / 70.567.3 / 67.82.2 / 2.73

Reading. The 2D ceiling is 48 to 50 %. Every 3D model with permuted frames falls to 51 to 54 %, just above the control, which bounds what the backdrop is worth. Over twelve cells (three splits, two seeds, two models) the S3D gap lies in 10.8 to 13.2 and the Swin3D-T gap in 2.2 to 5.0; the transformer’s advantage on ordered clips is therefore mostly appearance modelling. It is also the best calibrated on every split (ECE 0.04 to 0.07 against 0.14 to 0.19 for S3D).

Results: frame count

R(2+1)D-18 (S3D’s pretrained weights need at least 14 frames), split 1, two seeds, the 16 decoded frames uniformly subsampled for training and every evaluation view:

Frames per clipTop-1 ordered (s1 / s2)Top-1 permutedGapGate 0 verdict
1670.6 / 70.354.0 / 54.116.7 / 16.2motion above noise
861.5 / 61.054.0 / 57.47.5 / 3.5motion above noise
450.0 / 52.249.2 / 50.40.9 / 1.8within noise (floor 2.5)3

At four frames the model converges on the 2D control’s 48 to 50 % and its gap falls inside the seed-pair noise floor; the gate’s own verdict flips to “appearance-solvable” for that configuration. The permuted-frame accuracy is flat across the three settings (49 to 57 %), which is the backdrop term; the ordered accuracy is what the frames buy.

Results: edge cost

Batch-one p50 latency on the training card (a datacenter proxy shared with two other workloads; ONNX Runtime and TensorRT rows include host copies inside the timed call; “fp32” may execute in TF32; power is whole-card):

Modeltorch fp32torch fp16ORT CUDA fp32TRT FP16TRT INT8INT8 top-1 vs fp32
2D control1.02 ms0.63 ms2.14 ms0.94 ms0.81 ms48.2 → 48.3
R(2+1)D-182.65 ms1.89 ms2.89 ms0.96 ms0.77 ms70.3 → 70.6
S3D1.88 ms2.14 ms3.09 ms1.08 ms1.14 ms66.1 → 1.72

R(2+1)D-18 INT8 (entropy calibration, 192 clips) is 3.4 × fp32 at batch one and 4.5 × in batch-32 throughput with no loss. The 2D model is fastest in plain torch fp16; engine overhead dominates at that size.

The S3D INT8 collapse: mechanism

Per-layer ablation (512-clip subset, fp32 reference 67.4 %): global changes fail (MinMax calibration 2.2 %, 640 calibration clips 1.8 %, FP16 fallback 1.2 %, pooling / concatenation / last-8-layers in fp32 0.8 to 2.9 %); keeping any one of the first three layers in fp32 restores about 68 %; no later single layer helps. The tensor between those layers is the stem’s first activation (64 channels × 16 × 112²).4

Its statistics over 192 calibration clips (2.5 × 10⁹ values, reservoir percentiles):

StatisticValue
per-tensor absmax (sets the INT8 scale)45.9
one INT8 step at that scale0.36
median absolute activation0.46
p90 / p99 / p99.92.5 / 6.1 / 13.6
per-channel absmax, min to max0.77 to 45.9 (60 ×)3

Half of the tensor’s values lie within about one quantisation step of zero at any per-tensor scale that retains the tails, and the per-channel ranges span 60 ×. TensorRT quantises activations per tensor, so no calibrator can serve both the bulk and the tails, and the error compounds through the 174 downstream layers; those layers do not show the spread and quantise cleanly. Fix: the first convolution in fp32 through precision constraints (about 2 % of FLOPs). Citable run:

S3D engineTop-1Batch-1 p50Throughput b32
torch fp3266.3 %1.88 ms796 clips/s
TRT FP1666.3 %1.08 ms1,290 clips/s
TRT INT8 naive2.0 %1.15 ms1,298 clips/s
TRT INT8, first conv fp32, entropy66.1 %1.22 ms1,138 clips/s
TRT INT8, first conv fp32, MinMax65.7 %1.22 ms1,136 clips/s3

Both calibrators recover once the layer is pinned, which is consistent with the mechanism being distributional rather than a threshold choice. The repaired INT8 engine is slower than FP16 for this model, so the deployment recommendation for S3D is FP16.

Results: test-time robustness

Checkpoints retrained on split 1 (one seed), then evaluated on the full test split under degradations applied at evaluation time only: darkening (x → x^γ), spatial Gaussian blur, H.264 re-encode at a target bitrate (achieved 572 and 185 kbps at 340 × 256), and frame hold (every k-th frame repeated k times, the 16-frame length kept). Each level is scored on ordered and permuted frames so a gap is reported per level. Top-1 / permuted / gap:

Level2D controlR(2+1)D-18S3DSwin3D-T
clean48.2 / 48.2 / 0.070.6 / 54.0 / 16.765.5 / 51.4 / 14.174.0 / 69.0 / 5.0
γ = 1.544.3 / 44.3 / 0.069.1 / 53.2 / 16.066.3 / 51.1 / 15.272.6 / 68.7 / 3.9
γ = 2.537.3 / 37.3 / 0.065.9 / 48.1 / 17.860.2 / 46.7 / 13.566.4 / 62.9 / 3.6
γ = 4.022.1 / 22.1 / 0.055.7 / 38.6 / 17.149.3 / 34.9 / 14.454.9 / 50.8 / 4.1
blur 3 px45.5 / 45.5 / 0.070.8 / 53.1 / 17.764.0 / 51.2 / 12.872.5 / 68.2 / 4.3
blur 7 px34.7 / 34.7 / 0.065.5 / 47.9 / 17.557.6 / 42.1 / 15.666.0 / 60.7 / 5.3
blur 15 px19.0 / 19.0 / 0.040.1 / 31.7 / 8.433.4 / 22.2 / 11.253.0 / 45.4 / 7.6
572 kbps45.4 / 45.4 / 0.070.1 / 53.6 / 16.563.9 / 50.7 / 13.272.1 / 68.4 / 3.7
185 kbps34.8 / 34.8 / 0.066.8 / 48.5 / 18.458.5 / 45.0 / 13.567.2 / 62.5 / 4.6
frame hold × 248.0 / 48.0 / 0.062.9 / 52.2 / 10.764.0 / 50.3 / 13.764.6 / 68.0 / −3.3
frame hold × 446.6 / 46.6 / 0.045.1 / 47.2 / −2.146.4 / 45.5 / 0.959.7 / 64.6 / −4.85

Reading. Darkening, blur and compression cost the per-frame control up to 29 points, while the convnets’ gaps stay within 13 to 18 points through every level except 15-pixel blur, where R(2+1)D-18’s gap halves: the motion signal survives appearance degradation that the backdrop does not. Frame hold inverts this: the control loses under 2 points at a quarter of the frame rate, the convnets lose 19 to 25 and fall to their permuted scores, and Swin3D-T’s gap turns negative at half rate (ordered-but-held frames score below permuted ones). Models trained at the full rate treat held frames as out-of-distribution motion. In absolute terms Swin3D-T is the most robust to every appearance degradation, consistent with reading larger-scale appearance.

Results: induced long tail

Training split resampled to Zipf(α = 1), 413 of 3,570 clips; S3D; two seeds. Head = the ten largest classes; tail = the 41 classes with ≤ 10 clips.

RemedyTop-1Tail recallHead recall
none28.4 %0.2440.450
class-balanced sampling33.5 %0.2910.517
logit-adjusted loss (τ = 1)34.8 %0.3340.4051

The first run of this table used the inverted sign (13.6 %, tail 0.078); it is kept as a negative result on the losses page.

Limitations

Two to three seeds (one for the robustness checkpoints); one dataset; clip-level evaluation only (16, 8 and 4 frames); degradations synthetic, not captured; a shared datacenter card as the edge proxy; no per-channel activation quantisation or QAT attempted for S3D; no robustness or anonymisation runs. The scene-bias framing follows the literature on the reading page.

Cost

About seventeen GPU-hours in total across all runs, two of them the one-off decode. The largest single unit was one Swin3D-T seed at 30 epochs, twice the wall time and about four and a half times the memory of the convnets.3

Sources

Numbers on this page are quoted from the lab's own records. The records are private; each note gives the record's date.

  1. lab record, 2026-09-28 ↩
  2. lab record, 2026-09-28 ↩
  3. lab record, 2026-09-29 ↩
  4. lab record, 2026-09-28 ↩
  5. lab record, 2026-10-05 ↩