Denoising Embedding Models Are Generative Self-Supervised Learners

Rabiul Awal

Mila, Université de Montréal

Work in progress

A grid of 32 small images of animals, objects and scenes, generated without labels.
Images generated without labels, by one network trained by denoising alone. All samples on this page are uncurated.

TL;DR: A diffusion model at two levels. One network denoises a compact embedding and the pixels, so it learns visual representations and generates images without labels, trained by denoising alone.

Representations learned by reconstructing, denoising or generating the image still trail those of non-generative self-supervised learning (SSL) methods. An image's exact color and framing are stochastic details that vary among images with the same content. A representation trained to reproduce the image is pushed to encode these details. Recognition, in contrast, benefits from invariance to them.

A diffusion model at two levels

DEM generates the representation and the image separately, within one network and with one denoising objective. In representation space, it denoises the embedding of an image given another view of the same image. In pixel space, it generates the image that this embedding describes. The network is one shared backbone, a Transformer, with two small heads on it. The embedding denoiser works at the embedding level, and the pixel head works at the pixel level.

Training

Each training step takes three views of one image. The teacher, an exponential moving average (EMA) of the network, embeds a clean view into the target. At the embedding level, the backbone reads the noised view, and the embedding denoiser recovers the target from a noisy copy of it (loss 1). At the pixel level, the backbone reads a noisy copy of the image with the target as its condition, and the pixel head predicts the image (loss 2).

One training step. One shared backbone carries two modules, the embedding denoiser and the pixel head. The teacher, an EMA copy of the network, embeds the clean view into the target. Embedding level: the backbone reads the noised view, and the embedding denoiser predicts the target from a noisy copy of it (loss 1). Pixel level: the backbone reads the noised image with the target as its condition, and the pixel head predicts the image (loss 2). xclean viewteacherEMAztargetVisionTransformerfθ εadd noisezτnoisy targetx′tnoised viewgθcstudent's embeddingembeddingdenoiserẑdenoised targetLoss 1against z x̄tnoised imageφx̂denoised imageLoss 2against the imageztarget, as condition
One training step. One shared backbone carries two modules, the embedding denoiser and the pixel head. The teacher, an EMA copy of the network, embeds the clean view into the target. Embedding level: the backbone reads the noised view, and the embedding denoiser predicts the target from a noisy copy of it (loss 1). Pixel level: the backbone reads the noised image with the target as its condition, and the pixel head predicts the image (loss 2). clean view teacher target VisionTransformer noise noisy target noisedview g student embeddingdenoiser ẑ Loss 1vs. target noisedimage φ denoised image Loss 2vs. image target, as condition One training step. One shared backbone carries two modules, the embedding denoiser and the pixel head. The teacher, an EMA copy of the network, embeds the clean view into the target. Embedding level: the backbone reads the noised view, and the embedding denoiser predicts the target from a noisy copy of it (loss 1). Pixel level: the backbone reads the noised image with the target as its condition, and the pixel head predicts the image (loss 2). clean view teacher target VisionTransformer noise noisy target noisedview g student embeddingdenoiser ẑ Loss 1vs. target One training step. One shared backbone carries two modules, the embedding denoiser and the pixel head. The teacher, an EMA copy of the network, embeds the clean view into the target. Embedding level: the backbone reads the noised view, and the embedding denoiser predicts the target from a noisy copy of it (loss 1). Pixel level: the backbone reads the noised image with the target as its condition, and the pixel head predicts the image (loss 2). clean view teacher target VisionTransformer noisedimage φ denoised image Loss 2vs. image target, as condition
One training step. The teacher embeds a clean view into the target z. The denoised ẑ is trained toward z (loss 1), and the image x̂ toward the image (loss 2).

Inference

After training, the teacher is no longer used. The Vision Transformer's features of an image are its representation, and no head is needed. To generate without labels, the embedding denoiser first samples an embedding from noise with no view, and the Vision Transformer and pixel head then draw the image given it. Given only a crop, the embedding denoiser samples several embeddings that fit the crop, and the pixel head draws one image for each.

Three uses of the trained model, on the training figure's layout. Encode: the Vision Transformer turns an image into its representation, with no head. Generate: with no view, the embedding denoiser samples an embedding from noise, then the Vision Transformer and pixel head draw an image given it. Complete a crop: given the crop, the embedding denoiser samples several embeddings, and each becomes an image. VisionTransformerfθ imagerepresentation noise∅no condition, then noise noisecropcrop, then noise gθstudent's embedding ∅no condition εnoise embeddingdenoiser 1. sample an embeddingp(z)ẑsampled embedding 1. sample embeddingsp(z | crop)ẑsampled embedding 2. draw the pixels 2. draw the pixels φ
Three uses of the trained model, on the training figure's layout. Encode: the Vision Transformer turns an image into its representation, with no head. Generate: with no view, the embedding denoiser samples an embedding from noise, then the Vision Transformer and pixel head draw an image given it. Complete a crop: given the crop, the embedding denoiser samples several embeddings, and each becomes an image. VisionTransformer imagerepresentation noise∅none, then noise noisecropcrop, then noise gstudent ∅none noise embeddingdenoiser 1.p(z)sampled 1.p(z|crop)sampled 2. φ
Generate. Pass 1, with no view, the embedding denoiser samples an embedding from noise. Pass 2, that embedding enters the Vision Transformer as the condition, and the pixel head draws the image.

Noise-map views

Masking and cropping amount to full noise on some patches. A single noising process, which sets a noise level for each patch, can thus produce both the views of SSL and the noisy images of diffusion. DEM draws all its inputs from this process, so its two tasks train on the same inputs. In training, the student sees a noised view (noise combined with a mask), the teacher a clean view, and the pixel pass a noised image (the whole image at one noise level).

Cleanclean view
A clean image of a dog, with an all-white noise map.
Noisenoised image
The image with noise on every patch at level 0.54.
Random maskSSL
The image with scattered blocks of patches at full noise.
Crop maskSSL
The image with everything outside a box at full noise.
Combinednoised view
A zoomed view at level 0.43 with masked blocks at full noise.

cleanfull noise

Asymmetric noise schedules

The embedding is denoised mostly near full noise, close to the SSL task where semantics are learned, and the pixels at lower noise, where the stochastic details are drawn.

Two logit-normal noise schedules on an axis from clean to full noise. The embedding level has median 0.95 and sits close to full noise. The pixel level has median 0.69. Each curve is scaled to its own peak. Embedding, median 0.95 where semantics are learned Pixels, median 0.69 where details are drawn clean full noise

The full-noise special case

Conceptually, joint-embedding SSL methods are a special case of DEM. These methods train a network to predict the embedding of one view of an image from another view. Suppose this network also receives a noisy copy of the embedding it predicts. If the copy is pure noise, it carries no information, and the task is unchanged. Prediction is thus view-conditioned embedding denoising at full noise. At lower noise, DEM learns the distribution that prediction reduces to its mean.

An illustration, not model output. The noised view and a noisy copy of the target go into the backbone and embedding denoiser, which predict the target. The slider sets the noise level tau of the copy, a mix of the target and one fixed draw of Gaussian noise. As tau rises, the copy's bars move from the target's toward the noise. At tau 1 the copy is pure noise and carries no information, so this is prediction from the view alone. noised view noisy copy τ = 0.50 VisionTransformer+ embeddingdenoiser predicted target

Lower noise (DEM). The copy still carries information.

Results

Linear probe accuracy on ImageNet-100 against FID. DEM has the highest probe, 77.2% against 74.5% for DINOv2, although its k-NN accuracy is lower (69.9% against 72.5%). Without labels it generates at an FID of 19.5 with one network, against 12.3 for RCG, which trains three separate models and has no probe of its own. Open markers use labels. DEM with a linear probe fit on 1% of the labels reaches 14.5, and class-conditional JiT trained on all labels reaches 12.4. Single-task methods sit on the N/A lanes. N/A70605040302010N/A4050607080 FID (lower is better) Linear probe (%) DINOv2: probe 74.5%, FID N/ADINOv2BYOL: probe 72.1%, FID N/ABYOLMAE: probe 48.6%, FID N/AMAEI-JEPA: probe 47.3%, FID N/AI-JEPAJiT (uncond.): probe N/A, FID 64.0JiT (uncond.)RCG (BYOL enc.), three separate models: probe N/A, FID 12.3RCGMAGE: probe 47.0%, FID 60.5MAGEJiT (class-cond.), uses all labels: probe N/A, FID 12.4JiT (class-cond.)DEM: probe 77.2%, FID 19.5DEMDEM with a linear probe fit on 1% of the labels: same network, probe 77.2%, FID 14.51% labels
One generative model learns representations competitive with self-supervised methods and generates images without labels. Open markers use labels. DEM uses guidance, and RCG does not.
DEMBaseline
Linear probe77.2%74.5% (DINOv2)
k-NN69.9%72.5% (DINOv2)
FID-50k without labels19.512.3 (RCG, three separate models)
Class-conditional FID-50k14.5 (1% of labels)12.4 (JiT, all labels)

ImageNet-100, 64x64, ViT-S/8, 100k iterations, FID-50k. DINOv2 at the same training length. DEM has the higher linear probe and the lower k-NN accuracy. RCG trains three separate models. For class-conditional generation, DEM uses a linear probe fit on 1% of the labels, against class-conditional JiT trained on all labels.

One embedding, many images

The embedding sets the content of the image, and the pixel noise supplies the stochastic details it leaves out.

Three rows of five generated images. Images in a row share content and differ in detail.

One sampled embedding per row, with varied pixel noise.

Three rows. Each starts with a validation image, followed by four generated images with the same content.

A validation image and samples from its embedding.

Completion and in-painting

DEM completes crops and in-paints without training for either.

Three rows. Each starts with an image where only a boxed crop is visible, followed by four generated images consistent with the crop.

Each image is decoded from an embedding sampled given the blue crop.

Six examples in two blocks, one image per row. Each shows an image with hidden patches followed by two filled-in versions.

A hole, blocks and out-painting, with two samples each.

How DEM was built

We developed DEM through a speedrun in the style of modded-nanogpt. Every run trains for 20k iterations at batch size 512 on ImageNet-100 at 64x64 with a ViT-S/8, and changes one component of the current best model. Two numbers decide its fate, the linear probe and FID-5k without labels. Before launch, each change is written into the project journal with its hypothesis, its predicted effect and numeric bars for success and refutation. Seed 0 nominates a change and seed 1 confirms it. A change sets a record when its two-seed mean improves one metric by more than the seed spread (1.0 probe points or 2.5 FID) without the other getting worse by more than its spread.

The authors set the initial idea and the changes of direction. AI agents implemented candidate changes, launched the runs, compared each outcome with the prediction recorded before launch, and proposed the next experiments. Because this process adds components quickly, we paused periodically to simplify the model, removing what the central claim did not need. A removal was kept when both metrics stayed level.

Linear probe against FID-5k without labels for the 253 20k-iteration runs with the earlier sampler, plus later records. The dotted path follows successive records; the star marks DEM, 20 Oct. 50 55 60 65 70 50 60 70 80 100 120 Linear probe (%), higher is better FID-5k without labels, lower is better joint_d2_qknorm: probe 61.40, FID 69.1 joint_d2_qknorm_lr5e-3: probe 62.72, FID 71.1 joint_dem_s1: probe 69.60, FID 62.2 joint_dnav: probe 67.72, FID 62.5 joint_gv025: probe 67.96, FID 60.1 joint_gv025_t69: probe 66.76, FID 62.5 joint_ln2_pw4_lr3e-3_s1: probe 51.60, FID 77.9 joint_ln2_pw4_lr4e-3: probe 50.50, FID 82.1 joint_ln2_pw4_s1: probe 52.86, FID 82.1 joint_mc2_caug01: probe 56.96, FID 100.7 joint_mc2_caug03: probe 56.82, FID 87.2 joint_mc2_jtok: probe 55.86, FID 85.7 joint_mc2_lm25: probe 57.64, FID 85.7 joint_mc2_nulltau_lm4_n1: probe 57.96, FID 88.6 joint_mc2_nulltau_lm4_n1_x1: probe 59.56, FID 91.1 joint_mc2_nulltau_lm4_n2: probe 58.18, FID 79.3 joint_mc2_patchA: probe 60.58, FID 77.4 joint_mc2_patchB: probe 61.18, FID 97.1 joint_mc2_patchC: probe 57.60, FID 70.2 joint_mc2_patchC_s1: probe 58.28, FID 83.6 joint_mc2_pw8: probe 54.08, FID 81.9 joint_mc4_cprior: probe 58.64, FID 78.8 joint_mc4_cprior_emapred: probe 58.64, FID 78.9 joint_mc4_draws4: probe 60.72, FID 121.7 joint_mc4_emapred: probe 59.70, FID 80.6 joint_mc4_maskC: probe 61.78, FID 75.1 joint_mc4_nav_t05: probe 59.28, FID 65.2 joint_mc4_nulltau_x1: probe 61.56, FID 69.2 joint_mc4_patchA_blocks2: probe 63.86, FID 83.0 joint_mc4_patchA_blocks2_s1: probe 65.88, FID 93.1 joint_mc4_percep_embed: probe 60.70, FID 80.5 joint_mc4_percep_patch: probe 59.92, FID 88.6 joint_mc4_prior_whole: probe 59.32, FID 78.3 joint_mc4_prior_wholeonly: probe 59.22, FID 88.1 joint_mc4nav_condtok: probe 59.52, FID 69.3 joint_mc4nav_embstd: probe 59.64, FID 73.9 joint_mc4nav_patch_dense16_d03: probe 56.48, FID 80.3 joint_mc4nav_patch_dense8_d0: probe 57.82, FID 78.1 joint_mc4nav_patch_dense8_d03: probe 57.32, FID 81.7 joint_mc4nav_phema: probe 59.54, FID 71.0 joint_pw4_crop25: probe 51.28, FID 83.6 joint_pw4_dec2: probe 50.18, FID 82.2 joint_pw4_dec4: probe 50.18, FID 86.0 joint_pw4_lr3e-3_mc6: probe 62.36, FID 96.3 joint_pw4_mc2_crop25: probe 55.62, FID 88.9 joint_pw4_mc6_crop25: probe 59.66, FID 95.6 joint_pw4_mc6_dec2: probe 59.18, FID 95.1 joint_pw4_mc6_lw05_crop25: probe 59.32, FID 88.6 joint_r10_muon_ADE: probe 67.38, FID 63.0 joint_r10_muon_ADE_s1: probe 67.96, FID 62.7 joint_r10_muon_hidden: probe 67.34, FID 56.4 joint_r10_muon_hidden_s1: probe 67.72, FID 61.9 joint_r10_muon_lm25: probe 67.96, FID 59.5 joint_r10_muon_lr1.2e-2: probe 68.14, FID 61.1 joint_r11_muon_tuniform: probe 68.02, FID 72.7 joint_r11_tuniform: probe 61.74, FID 81.5 joint_r12_muon_wd0.1_hidden: probe 68.68, FID 62.5 joint_r13_den1024: probe 66.82, FID 62.3 joint_r13_depth8: probe 66.86, FID 61.3 joint_r13_low025: probe 66.80, FID 70.6 joint_r14_ADE: probe 68.52, FID 62.9 joint_r14_wd0.2: probe 68.82, FID 57.2 joint_r15_cdrop0.2: probe 67.98, FID 66.4 joint_r15_lr2e-3: probe 68.26, FID 64.6 joint_r15_mom0.996: probe 67.08, FID 66.0 joint_r16_lc8: probe 70.92, FID 63.9 joint_r16_lnoise: probe 63.82, FID 68.5 joint_r16_pd512: probe 67.86, FID 67.5 joint_r16_wd0.2: probe 68.06, FID 62.6 joint_r18_prior_whole: probe 66.66, FID 56.7 joint_r19_lc8: probe 69.52, FID 58.8 joint_r19_lm3: probe 69.34, FID 54.9 joint_r19_lm4: probe 69.96, FID 56.5 joint_r20_pred_prior: probe 69.10, FID 55.7 joint_r20_pred_prior_s1: probe 70.04, FID 65.3 joint_r21_masknoise: probe 67.56, FID 59.7 joint_r21_nophoto: probe 60.70, FID 62.1 joint_r21_viewmap: probe 55.54, FID 61.8 joint_r21_viewmap_nophoto: probe 52.34, FID 70.8 joint_r22_lc6: probe 68.40, FID 56.2 joint_r22_mr05: probe 67.88, FID 55.1 joint_r22_pw2: probe 67.40, FID 63.9 joint_r22_pxw2: probe 69.08, FID 65.5 joint_r22_pxw6: probe 65.02, FID 52.1 joint_r22_sn025: probe 67.92, FID 55.8 joint_r22_sn075: probe 66.82, FID 52.9 joint_r23_nlm0: probe 68.46, FID 57.4 joint_r23_nlm1: probe 69.26, FID 56.1 joint_r23_pw2x: probe 67.50, FID 59.9 joint_r23_pw2x_nlm1: probe 67.70, FID 54.8 joint_r23_pw4x: probe 66.92, FID 54.5 joint_r25_lm3_s1: probe 68.86, FID 59.1 joint_r26_map: probe 54.76, FID 79.3 joint_r26_map_lcrop: probe 58.14, FID 65.9 joint_r26_map_zoom: probe 64.26, FID 58.4 joint_r26_map_zoom07_lcrop: probe 68.02, FID 56.7 joint_r26_map_zoom_lcrop: probe 66.64, FID 58.2 joint_r27_dem_lm4: probe 70.60, FID 62.3 joint_r27_dem_lm4_s1: probe 70.38, FID 58.8 joint_r28_reg4: probe 69.10, FID 60.5 joint_r28_reg4_s1: probe 68.76, FID 66.1 joint_r28_reg4_sc: probe 68.76, FID 58.8 joint_r28_reg4_sc_s1: probe 67.72, FID 56.1 joint_r28_sc: probe 67.54, FID 61.7 joint_r28_sc_s1: probe 66.40, FID 54.0 joint_r29_mc4_both_noise: probe 61.62, FID 71.9 joint_r29_mc4_both_noise_s1: probe 63.46, FID 70.0 joint_r29_mc4_patch_noise: probe 63.96, FID 66.9 joint_r29_mc4_patch_noise_s1: probe 64.90, FID 74.8 joint_r30_dem_nlm1: probe 69.20, FID 62.1 joint_r30_dem_nlm1_s1: probe 68.30, FID 61.0 joint_r30_nlm1_s1: probe 66.48, FID 55.6 joint_r31_jitblock: probe 70.36, FID 66.0 joint_r31_jitblock_s1: probe 70.02, FID 58.6 joint_r31_qknorm: probe 68.40, FID 59.4 joint_r31_qknorm_s1: probe 68.82, FID 54.5 joint_r31_rmsnorm: probe 68.84, FID 63.1 joint_r31_rmsnorm_s1: probe 68.12, FID 57.1 joint_r31_rope: probe 70.76, FID 67.2 joint_r31_rope_s1: probe 69.28, FID 53.4 joint_r31_swiglu: probe 69.88, FID 61.5 joint_r31_swiglu_s1: probe 69.62, FID 60.9 joint_r32_lc8: probe 71.08, FID 63.9 joint_r32_lc8_s1: probe 71.54, FID 61.4 joint_r32_lm3_nlm1: probe 70.30, FID 64.1 joint_r32_lm3_nlm1_s1: probe 70.58, FID 62.8 joint_r32_pxw5: probe 68.54, FID 60.4 joint_r32_pxw5_s1: probe 67.38, FID 61.8 joint_r33_map_zoom07_lcrop_s1: probe 68.34, FID 57.6 joint_r34_dem_pred_prior_s2: probe 70.66, FID 61.1 joint_r34_lm3_s2: probe 69.98, FID 60.7 joint_r35_r4_lc4: probe 52.32, FID 72.5 joint_r35_r4_lc4_s1: probe 52.42, FID 71.9 joint_r35_r5_half: probe 63.40, FID 63.9 joint_r35_r5_half_s1: probe 62.52, FID 61.3 joint_r35_r6_muon: probe 68.02, FID 59.5 joint_r35_r6_muon_s1: probe 69.20, FID 52.9 joint_r36_den1024: probe 70.22, FID 62.3 joint_r36_den1024_s1: probe 70.52, FID 59.9 joint_r36_tau1mix05: probe 70.44, FID 61.3 joint_r36_tau1mix05_s1: probe 71.56, FID 63.6 joint_r36_wgamma025: probe 70.28, FID 62.2 joint_r36_wgamma025_s1: probe 70.68, FID 57.5 joint_r37_b10_muonlr45: probe 70.84, FID 59.6 joint_r37_b10_muonlr45_s1: probe 70.82, FID 61.5 joint_r37_b1_jitter05: probe 69.96, FID 60.4 joint_r37_b1_jitter05_s1: probe 70.28, FID 56.6 joint_r37_b2_zoom015: probe 68.94, FID 61.3 joint_r37_b2_zoom015_s1: probe 69.46, FID 61.3 joint_r37_b3_lstd15: probe 69.70, FID 66.0 joint_r37_b3_lstd15_s1: probe 70.74, FID 59.9 joint_r37_b4_pd384: probe 70.48, FID 57.0 joint_r37_b4_pd384_s1: probe 70.04, FID 58.6 joint_r37_b5_pxw2: probe 71.10, FID 68.0 joint_r37_b5_pxw2_s1: probe 71.58, FID 63.3 joint_r37_b7_dd6: probe 70.14, FID 60.4 joint_r37_b7_dd6_s1: probe 70.32, FID 57.6 joint_r37_b9_mom098: probe 70.34, FID 61.9 joint_r37_b9_mom098_s1: probe 70.50, FID 63.5 joint_r38_pixw05: probe 67.12, FID 109.9 joint_r38_pixw05_s1: probe 68.44, FID 94.6 joint_r38_snap: probe 70.62, FID 57.4 joint_r38_snap_s1: probe 71.42, FID 57.4 joint_r39_emaprior: probe 69.30, FID 59.7 joint_r39_emaprior_s1: probe 69.90, FID 59.6 joint_r41_droppath01: probe 68.84, FID 54.2 joint_r41_droppath01_s1: probe 68.62, FID 55.1 joint_r41_muonhidden: probe 68.44, FID 56.5 joint_r41_pixnoise05: probe 70.36, FID 73.1 joint_r41_priordraws4: probe 69.28, FID 55.7 joint_r41_priordraws4_s1: probe 69.86, FID 54.3 joint_r42_box1: probe 69.30, FID 56.0 joint_r42_box1_s1: probe 70.74, FID 56.0 joint_r42_ctl: probe 69.74, FID 53.3 joint_r42_lbox: probe 67.68, FID 55.3 joint_r42_maskp1: probe 62.94, FID 69.7 joint_r42_nlm3: probe 69.60, FID 55.8 joint_r42_nlm3_s1: probe 69.68, FID 60.6 joint_r42_nobn: probe 68.14, FID 60.3 joint_r42_noclip: probe 69.22, FID 56.7 joint_r42_noclip_s1: probe 69.72, FID 57.4 joint_r42_sn0: probe 70.94, FID 57.5 joint_r42_sn1: probe 57.28, FID 58.9 joint_r7_lr4e-3: probe 62.54, FID 72.2 joint_r7_mask04: probe 62.22, FID 69.8 joint_r7_nav075: probe 61.16, FID 68.2 joint_r7_pw6: probe 60.46, FID 73.4 joint_r8_lm25: probe 63.94, FID 65.9 joint_r8_lm25_s1: probe 63.56, FID 70.5 joint_r8_maskp075: probe 61.62, FID 70.4 joint_r8_navt05: probe 61.82, FID 67.9 joint_r8_pixpm04: probe 60.94, FID 63.1 joint_r8_pw_patch2: probe 62.24, FID 73.5 joint_r9_muon_lr6e-3: probe 68.50, FID 58.7 joint_ref_dec2: probe 51.70, FID 84.8 joint_ref_lm3: probe 52.34, FID 81.3 joint_ref_lm4: probe 53.12, FID 93.7 joint_ref_mc6_lw05: probe 61.60, FID 91.5 joint_ref_snap: probe 51.44, FID 79.0 joint_simp_ADE: probe 61.62, FID 71.8 joint_simp_masknoise: probe 61.70, FID 70.1 joint_simp_nobn: probe 59.96, FID 86.9 joint_simp_nolocal: probe 51.24, FID 79.0 joint_simp_patchshared: probe 61.62, FID 72.0 joint_simp_teachersample: probe 61.38, FID 67.9 joint_stack_lr2e-3: probe 50.74, FID 91.2 joint_stack_lr2e-3_s1: probe 51.96, FID 87.5 two local crops (joint_ref_mc2): probe 56.18, FID 81.4 two local crops (joint_ref_mc2_s1): probe 57.16, FID 86.8 four local crops (joint_mc2_mc4): probe 60.54, FID 91.4 four local crops (joint_mc2_mc4_s1): probe 59.66, FID 73.0 noise as a view (joint_mc4_nav): probe 59.52, FID 65.6 noise as a view (joint_mc4_nav_s1): probe 60.98, FID 67.3 masked-patch denoising (joint_mc4_patchA): probe 64.28, FID 69.4 masked-patch denoising (joint_mc4_patchA_s1): probe 64.76, FID 85.3 both (joint_mc4_patchA_nav): probe 62.68, FID 69.8 both (joint_mc4nav_patch_s1): probe 62.26, FID 66.1 Muon (joint_d2_muon): probe 67.22, FID 66.6 Muon (joint_d2_muon_s1): probe 68.14, FID 59.6 weight decay 0.1 (joint_r10_muon_wd0.1): probe 69.20, FID 63.3 weight decay 0.1 (joint_r10_muon_wd0.1_s1): probe 69.02, FID 68.3 whole-image prior (joint_r18_prior_wholeonly): probe 66.82, FID 56.8 whole-image prior (joint_r18_prior_wholeonly_s1): probe 68.00, FID 56.6 simplified (joint_r19_dem_prior): probe 69.28, FID 59.2 simplified (joint_r19_dem_prior_s1): probe 68.88, FID 60.4 prior on the path (joint_r20_dem_pred_prior): probe 71.32, FID 62.1 prior on the path (joint_r24_dem_pred_prior_s1): probe 71.36, FID 60.1 DEM (joint_r25_dem_lm3): probe 70.10, FID 57.7 DEM (joint_r25_dem_lm3_s1): probe 70.82, FID 58.6 DEM, 20 Oct: probe 69.52, FID 58.8 DEM, 20 Oct: probe 70.42, FID 59.9 DEM, 20 Oct four local crops noise as a view Muon
Linear probe against FID-5k without labels for the 171 20k-iteration runs with the adopted sampler, plus later records. The dotted path follows successive records; the star marks DEM v2. 64 66 68 70 72 74 40 45 50 55 60 Linear probe (%), higher is better FID-5k without labels, lower is better joint_abl2_tau1: probe 71.44, FID 41.8 joint_abl2_tau1_s1: probe 67.82, FID 57.5 joint_abl3_tau1: probe 70.90, FID 44.2 joint_abl3_tau1_s1: probe 70.58, FID 46.1 joint_abl3_viewprior: probe 70.26, FID 46.9 joint_abl5_nopatch: probe 68.04, FID 44.7 joint_abl5_nopatch_s1: probe 68.56, FID 47.0 joint_abl5_noviews: probe 69.68, FID 47.0 joint_abl5_noviews_s1: probe 70.00, FID 44.6 joint_abl5_pxw2: probe 71.04, FID 52.1 joint_abl5_pxw2_s1: probe 71.08, FID 50.9 joint_abl5_pxw8: probe 68.34, FID 42.0 joint_abl5_pxw8_s1: probe 68.12, FID 42.9 joint_abl5_viewprior: probe 70.10, FID 46.1 joint_abl5_viewprior_s1: probe 69.92, FID 48.2 joint_bt1_area10: probe 64.96, FID 50.0 joint_cvpr_abl_adamw_s1: probe 64.38, FID 50.7 joint_cvpr_abl_nopatch: probe 68.24, FID 43.5 joint_cvpr_abl_nopatch_s1: probe 69.20, FID 46.1 joint_cvpr_abl_pxw2: probe 70.40, FID 51.4 joint_cvpr_abl_pxw2_s1: probe 70.96, FID 50.3 joint_cvpr_abl_pxw8: probe 68.52, FID 41.7 joint_cvpr_abl_pxw8_s1: probe 68.02, FID 41.0 joint_cvpr_abl_rrc_masktok: probe 69.44, FID 44.5 joint_cvpr_abl_rrc_masktok_s1: probe 70.20, FID 45.6 joint_cvpr_abl_stdviews: probe 70.90, FID 48.1 joint_cvpr_abl_stdviews_s1: probe 72.08, FID 48.2 joint_cvpr_abl_viewprior: probe 68.56, FID 51.4 joint_cvpr_abl_viewprior_s1: probe 69.52, FID 45.5 joint_cvpr_tc_all_lm1: probe 64.00, FID 48.2 joint_cvpr_tc_all_lm1_s1: probe 65.30, FID 48.2 joint_cvpr_tc_all_lm4: probe 70.30, FID 50.1 joint_cvpr_tc_all_lm4_s1: probe 70.52, FID 50.3 joint_cvpr_tc_cond_lm1: probe 64.04, FID 48.1 joint_cvpr_tc_cond_lm1_s1: probe 64.56, FID 47.4 joint_cvpr_tc_cond_lm4: probe 70.00, FID 45.5 joint_cvpr_tc_cond_lm4_s1: probe 69.90, FID 48.1 joint_cvpr_tc_cond_tau1: probe 69.84, FID 45.5 joint_cvpr_tc_cond_tau1_s1: probe 70.26, FID 47.2 joint_cvpr_tc_lm2: probe 67.76, FID 47.1 joint_cvpr_tc_lm2_s1: probe 69.12, FID 45.8 joint_r42_sn0_s1: probe 71.18, FID 51.8 joint_r44_cls: probe 68.52, FID 44.1 joint_r44_pixdec3: probe 70.24, FID 44.0 joint_r44_pixlogvar: probe 69.32, FID 45.2 joint_r44_priorvloss: probe 69.30, FID 47.4 joint_r44_strat: probe 68.94, FID 46.1 joint_r45_boxnoise: probe 64.84, FID 47.6 joint_r45_cutmix: probe 70.22, FID 46.1 joint_r45_cutmix_s1: probe 69.96, FID 45.3 joint_r45_cutmix_tau1: probe 69.94, FID 47.3 joint_r45_cutmixmain: probe 68.48, FID 48.1 joint_r45_cutmixmain_s1: probe 68.00, FID 47.5 joint_r45_cutmixmain_tau1: probe 65.98, FID 51.4 joint_r45_nlm3box1: probe 69.80, FID 45.2 joint_r45_pxw3: probe 70.18, FID 48.4 joint_r45_tbox: probe 70.72, FID 44.7 joint_r45_tbox_lc8: probe 71.26, FID 43.8 joint_r45_tbox_lc8_s1: probe 71.54, FID 46.7 joint_r45_tbox_s1: probe 70.60, FID 46.3 joint_r45_tclean: probe 68.08, FID 50.7 joint_r46n_area: probe 67.18, FID 48.2 joint_r46n_light25: probe 68.70, FID 45.1 joint_r46n_loc1: probe 65.76, FID 48.2 joint_r46n_loc2: probe 67.88, FID 48.3 joint_r46n_null1: probe 69.80, FID 46.8 joint_r46n_nullstd15: probe 70.38, FID 47.1 joint_r46n_patch1: probe 67.94, FID 52.5 joint_r46n_patchtau1: probe 69.78, FID 45.0 joint_r46n_std15: probe 68.34, FID 47.9 joint_r46n_std20: probe 69.56, FID 49.2 joint_r47_lc10: probe 72.28, FID 42.9 joint_r47_plev: probe 71.72, FID 43.7 joint_r48_blocklevels: probe 70.18, FID 45.0 joint_r48_boxmask_adamw_s1: probe 64.00, FID 51.3 joint_r49_copies2: probe 70.62, FID 44.2 joint_r49_phema: probe 70.76, FID 43.5 joint_r49_phema_s1: probe 69.94, FID 46.6 joint_r49_resdecay06: probe 65.58, FID 48.3 joint_r50_qknorm: probe 69.96, FID 45.3 joint_r50_reg4: probe 70.40, FID 45.6 joint_r50_viewnull: probe 69.82, FID 43.7 joint_r51_denmul4: probe 70.46, FID 44.1 joint_r51_nojitter: probe 70.20, FID 43.8 joint_r51_pcd02: probe 70.94, FID 44.6 joint_r51_pcd03: probe 70.66, FID 50.0 joint_r51_priorlabel: probe 69.80, FID 51.9 joint_r51_s1b: probe 69.62, FID 43.3 joint_r51_s1b_s1: probe 70.02, FID 42.4 joint_r51_s1d: probe 69.86, FID 42.9 joint_r51_s1d_s1: probe 70.66, FID 41.9 joint_r53_lc8_gnws: probe 71.78, FID 41.0 joint_r53_lc8_s1d: probe 71.96, FID 45.0 joint_r54_pixdual: probe 72.86, FID 44.3 joint_r55_prior_uniform: probe 74.10, FID 45.0 joint_r55_tauband08: probe 72.52, FID 42.9 joint_r57a_mom998: probe 66.30, FID 45.5 joint_r57a_mom998_s1: probe 67.90, FID 44.0 joint_snapcand: probe 70.52, FID 47.0 joint_snapcand_n1: probe 71.68, FID 45.0 joint_snapcand_n1_s1: probe 71.62, FID 47.2 joint_snapcand_s1: probe 71.88, FID 49.6 joint_tc5_all_lm1: probe 65.32, FID 46.8 joint_tc5_all_lm1_s1: probe 65.84, FID 47.9 joint_tc5_all_lm3: probe 69.98, FID 47.2 joint_tc5_all_lm3_s1: probe 70.50, FID 46.6 joint_tc5_all_lm4: probe 70.82, FID 52.5 joint_tc5_all_lm4_s1: probe 70.32, FID 56.0 joint_tc5_cond_lm1: probe 65.26, FID 51.3 joint_tc5_cond_lm1_s1: probe 65.66, FID 46.1 joint_tc5_cond_lm4: probe 69.92, FID 46.1 joint_tc5_cond_lm4_s1: probe 70.04, FID 47.4 joint_tc5_cond_tau1: probe 70.70, FID 45.6 joint_tc5_cond_tau1_s1: probe 70.26, FID 44.3 joint_tc5_lm2: probe 67.50, FID 47.9 joint_tc5_lm2_s1: probe 68.46, FID 48.1 joint_v2_patchtau1: probe 70.64, FID 42.7 joint_v2_patchtau1_s1: probe 70.58, FID 43.2 joint_v2_prior_tau1_s1: probe 71.04, FID 59.8 joint_v2_tau1: probe 71.14, FID 44.2 joint_v2_tau1_s1: probe 71.06, FID 43.6 eight local crops (joint_r45_lc8): probe 71.90, FID 44.6 eight local crops (joint_r45_lc8_s1): probe 71.58, FID 43.4 eight crops, no box (joint_snapcand_n1plain): probe 72.00, FID 42.9 eight crops, no box (joint_snapcand_n1plain_s1): probe 72.68, FID 43.2 crop as a mask (joint_r48_boxmask): probe 70.30, FID 43.9 crop as a mask (joint_r48_boxmask_s1): probe 70.12, FID 47.0 eight crops on DEM (joint_r52_lc8): probe 72.36, FID 43.2 eight crops on DEM (joint_r52_lc8_s1): probe 71.80, FID 42.7 dual-level masks (joint_r53_lc8_s1d_dual): probe 72.92, FID 41.1 dual-level masks (joint_r53_lc8_s1d_dual_s1): probe 72.94, FID 41.3 dual-level masks, no student pixels (joint_r54_nostpix): probe 72.54, FID 39.5 dual-level masks, no student pixels (joint_r54_nostpix_s1): probe 72.98, FID 42.1 pixel patch view (joint_r65_pixpatch4): probe 70.42, FID 38.76 pixel patch view (joint_r65_pixpatch4_s1): probe 70.88, FID 40.94 DEM v2: probe 70.26, FID 42.8 DEM v2: probe 70.80, FID 42.8 DEM v2 eight crops pixel patch view, 3 Nov dual-level masks
Each point is one 20k-iteration run, 253 with the earlier sampler (22 lie outside the plotted range). The star marks DEM on 20 October. FIDs from the two samplers do not compare.
Each point is one 20k-iteration run, 171 with the adopted sampler (36 lie outside the plotted range), plus the pixel patch view record of 3 November, whose 100k check is running. The star marks snapshot v2 of 26 October. FIDs from the two samplers do not compare.
RecordDateProbeFID-5k
Joint model, pixel loss on the embedding denoiser9 Oct52.6%95.4
Noise as a view16 Oct60.3%66.5
Muon optimizer17 Oct67.7%63.1
Asymmetric noise schedules19 Oct70.5%58.1
Snapshot v2, adopted sampler26 Oct70.53%42.76
Pixel pass as a view of the patch term3 Nov70.65%39.85

Selected records, two-seed means, 20k iterations, FID-5k without labels. The last two rows use the adopted sampler (guidance on an interval), which lowered the FID of the 20 October model from 59.4 to 46.1 without retraining.

Representation and generation mostly improve together. Across the 253 runs with the earlier sampler, a higher probe goes with a lower FID (Spearman −0.69), and across the 171 runs with the adopted sampler the correlation is −0.51. Single changes are less predictable. Among the 231 runs that modify a base configuration under the earlier sampler, the changes in the two metrics correlate at only −0.22.

A 20k record can fail at 100k. Eight local crops set a 20k record three times. On snapshot v2 they raised the two-seed probe from 70.53 to 72.08 at level FID. At 100k the run became unstable after 44k and finished at a probe of 75.54, below v2's 76.06. A 20k record now enters the model only after a 100k check.

Generation may help the representation with training. At 20k, removing the pixel loss raises the probe from 70.53 to 72.93 (two seeds). At 100k the sign reverses, and without the pixel loss the probe reaches 71.44 against 75.66 for seed 0 of the matching DEM run (the Results numbers are two-seed means). This is a single seed, so we treat it as a hypothesis until the second seed finishes.

BibTeX

@misc{awal2026dem,
  title  = {Denoising Embedding Models Are Generative Self-Supervised Learners},
  author = {Awal, Rabiul},
  year   = {2026}
}