File size: 1,987 Bytes
f918a65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# DreamSim (HuggingFace format) — unofficial port.
# Copyright (c) 2026 bigshanedogg. Released under the MIT License (see LICENSE).
#
# Derivative of DreamSim (MIT, (c) 2023 Shobhita Sundaram, Netanel Tamir,
# Stephanie Fu, Richard Zhang — https://github.com/ssundaram21/dreamsim).
# Not an official DreamSim release.

"""HF configuration for the DreamSim perceptual-similarity ensemble.

Mirrors the upstream ``dreamsim`` ensemble settings (github ssundaram21/dreamsim,
MIT): three ViT-B/16 backbones (DINO / CLIP / OpenCLIP) whose extracted features are
concatenated and mean/L2-normalized. LoRA is merged into the backbone weights at
conversion time, so this config describes only the resulting architecture.
"""

from transformers import PretrainedConfig


class DreamSimConfig(PretrainedConfig):
    model_type = "dreamsim"

    def __init__(
        self,
        dreamsim_type: str = "ensemble",
        model_types: str = "dino_vitb16,clip_vitb16,open_clip_vitb16",
        feat_types: str = "cls,embedding,embedding",
        strides: str = "16,16,16",
        img_size: int = 224,
        embed_size: int = 1792,
        normalize_embeds: bool = True,
        lora_merged: bool = True,
        **kwargs,
    ):
        # Comma-separated per-backbone specs (same length): the base ViT, which feature
        # to extract (cls / embedding), and the patch stride. ``embed_size`` is the
        # concatenated feature dim (dino cls 768 + clip embedding 512 + open_clip
        # embedding 512 = 1792). ``lora_merged`` records that the shipped weights already
        # have the DreamSim LoRA folded in (so no peft is needed at load).
        self.dreamsim_type = dreamsim_type
        self.model_types = model_types
        self.feat_types = feat_types
        self.strides = strides
        self.img_size = img_size
        self.embed_size = embed_size
        self.normalize_embeds = normalize_embeds
        self.lora_merged = lora_merged
        super().__init__(**kwargs)