MCPcopy Create free account
hub / github.com/LuChengTHU/dpm-solver / run

Function run

examples/stable-diffusion/scripts/sample_diffusion.py:108–140  ·  view source on GitHub ↗
(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None, n_samples=50000, nplog=None)

Source from the content-addressed store, hash-verified

106 return log
107
108def run(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None, n_samples=50000, nplog=None):
109 if vanilla:
110 print(f'Using Vanilla DDPM sampling with {model.num_timesteps} sampling steps.')
111 else:
112 print(f'Using DDIM sampling with {custom_steps} sampling steps and eta={eta}')
113
114
115 tstart = time.time()
116 n_saved = len(glob.glob(os.path.join(logdir,'*.png')))-1
117 # path = logdir
118 if model.cond_stage_model is None:
119 all_images = []
120
121 print(f"Running unconditional sampling for {n_samples} samples")
122 for _ in trange(n_samples // batch_size, desc="Sampling Batches (unconditional)"):
123 logs = make_convolutional_sample(model, batch_size=batch_size,
124 vanilla=vanilla, custom_steps=custom_steps,
125 eta=eta)
126 n_saved = save_logs(logs, logdir, n_saved=n_saved, key="sample")
127 all_images.extend([custom_to_np(logs["sample"])])
128 if n_saved >= n_samples:
129 print(f'Finish after generating {n_saved} samples')
130 break
131 all_img = np.concatenate(all_images, axis=0)
132 all_img = all_img[:n_samples]
133 shape_str = "x".join([str(x) for x in all_img.shape])
134 nppath = os.path.join(nplog, f"{shape_str}-samples.npz")
135 np.savez(nppath, all_img)
136
137 else:
138 raise NotImplementedError('Currently only sampling for unconditional models supported.')
139
140 print(f"sampling of {n_saved} images finished in {(time.time() - tstart) / 60.:.2f} minutes.")
141
142
143def save_logs(logs, path, n_saved=0, key="sample", np_path=None):

Callers 1

Calls 3

save_logsFunction · 0.85
custom_to_npFunction · 0.85

Tested by

no test coverage detected