This checkpoint is a
fine-tune of openai/clip-vit-large-patch14. Only the
vision tower is fine-tuned; the text encoder and both projection heads (
text_projection,
visual_projection) are kept frozen from the original CLIP. This adapts the image encoder to operate on RGB renderings of partially-denoised SDXL latents, while preserving CLIP's text–image embedding space.
It is a drop-in replacement for CLIP ViT-L/14 wherever you would compute a CLIP similarity score, with the key difference that it remains reliable on noisy latent inputs.
1import torch
2from PIL import Image
3from transformers import CLIPModel, CLIPProcessor
4
5model = CLIPModel.from_pretrained("asiimo/noisyclip")
6processor = CLIPProcessor.from_pretrained("asiimo/noisyclip")
7
8image = Image.open("example.png") # an RGB image or an RGB-decoded (noisy) latent
9texts = ["a photo of a cat", "a photo of a dog"]
10
11inputs = processor(text=texts, images=image, return_tensors="pt", padding=True)
12with torch.no_grad():
13 outputs = model(**inputs)
14
15probs = outputs.logits_per_image.softmax(dim=-1)
16print(probs)
1import torch
2from PIL import Image
3
4def latents_to_rgb(latents):
5 weights = (
6 (60, -60, 25, -70),
7 (60, -5, 15, -50),
8 (60, 10, -5, -35),
9 )
10 w = torch.t(torch.tensor(weights, dtype=latents.dtype, device=latents.device))
11 b = torch.tensor((150, 140, 130), dtype=latents.dtype, device=latents.device)
12 rgb = torch.einsum("...lxy,lr -> ...rxy", latents, w) + b[:, None, None]
13 arr = rgb.clamp(0, 255)[0].byte().cpu().numpy().transpose(1, 2, 0)
14 return Image.fromarray(arr)
NoisyCLIP is trained with the standard CLIP contrastive objective on pairs of
prompts and
intermediate SDXL latents (decoded to RGB). The text encoder and projection heads are frozen so that only the vision backbone adapts to the noisy-latent domain. See the
project page and
repository for the training pipeline.
1@misc{ramos2026earlyestimationlanguagelatent,
2 title={Early Estimation of Language to Latent Alignment in Diffusion Models},
3 author={Vasco Ramos and Regev Cohen and Idan Szpektor and Joao Magalhaes},
4 year={2026},
5 eprint={2512.08505},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2512.08505},
9}