MCPcopy Create free account
hub / github.com/VisionXLab/OF-Diff / AutoencoderKL

Class AutoencoderKL

ldm/models/autoencoder.py:18–206  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16
17
18class AutoencoderKL(pl.LightningModule):
19 def __init__(self,
20 ddconfig,
21 lossconfig,
22 embed_dim,
23 ckpt_path=None,
24 ignore_keys=[],
25 image_key="image",
26 colorize_nlabels=None,
27 monitor=None,
28 ema_decay=None,
29 learn_logvar=False,
30 ):
31 super().__init__()
32 self.learn_logvar = learn_logvar
33 self.image_key = image_key
34 self.encoder = Encoder(**ddconfig)
35 self.decoder = Decoder(**ddconfig)
36 self.loss = instantiate_from_config(lossconfig)
37 assert ddconfig["double_z"]
38 self.quant_conv = torch.nn.Conv2d(2*ddconfig["z_channels"], 2*embed_dim, 1)
39 self.post_quant_conv = torch.nn.Conv2d(embed_dim, ddconfig["z_channels"], 1)
40 self.embed_dim = embed_dim
41 if colorize_nlabels is not None:
42 assert type(colorize_nlabels)==int
43 self.register_buffer("colorize", torch.randn(3, colorize_nlabels, 1, 1))
44 if monitor is not None:
45 self.monitor = monitor
46
47 self.use_ema = ema_decay is not None
48 if self.use_ema:
49 self.ema_decay = ema_decay
50 assert 0. < ema_decay < 1.
51 self.model_ema = LitEma(self, decay=ema_decay)
52 print(f"Keeping EMAs of {len(list(self.model_ema.buffers()))}.")
53
54 if ckpt_path is not None:
55 self.init_from_ckpt(ckpt_path, ignore_keys=ignore_keys)
56
57 # self.register_buffer("mu_sig_bank", torch.empty(0))
58
59 def init_from_ckpt(self, path, ignore_keys=list()):
60 sd = torch.load(path, map_location="cpu")["state_dict"]
61 keys = list(sd.keys())
62 for k in keys:
63 for ik in ignore_keys:
64 if k.startswith(ik):
65 print("Deleting key {} from state_dict.".format(k))
66 del sd[k]
67 self.load_state_dict(sd, strict=False)
68 print(f"Restored from {path}")
69
70 @contextmanager
71 def ema_scope(self, context=None):
72 if self.use_ema:
73 self.model_ema.store(self.parameters())
74 self.model_ema.copy_to(self)
75 if context is not None:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected