(
model,
prompts,
noise_shape,
camera_poses=None,
trajs=None,
n_samples=1,
unconditional_guidance_scale=1.0,
unconditional_guidance_scale_temporal=None,
ddim_steps=50,
ddim_eta=1.,
**kwargs)
| 121 | torchvision.io.write_video(path, grid, fps=fps, video_codec='h264', options={'crf': '10'}) |
| 122 | |
| 123 | def motionctrl_sample( |
| 124 | model, |
| 125 | prompts, |
| 126 | noise_shape, |
| 127 | camera_poses=None, |
| 128 | trajs=None, |
| 129 | n_samples=1, |
| 130 | unconditional_guidance_scale=1.0, |
| 131 | unconditional_guidance_scale_temporal=None, |
| 132 | ddim_steps=50, |
| 133 | ddim_eta=1., |
| 134 | **kwargs): |
| 135 | |
| 136 | ddim_sampler = DDIMSampler(model) |
| 137 | batch_size = noise_shape[0] |
| 138 | ## get condition embeddings (support single prompt only) |
| 139 | if isinstance(prompts, str): |
| 140 | prompts = [prompts] |
| 141 | |
| 142 | for i in range(len(prompts)): |
| 143 | prompts[i] = f'{prompts[i]}, {post_prompt}' |
| 144 | |
| 145 | cond = model.get_learned_conditioning(prompts) |
| 146 | if camera_poses is not None: |
| 147 | RT = camera_poses[..., None] |
| 148 | else: |
| 149 | RT = None |
| 150 | |
| 151 | if trajs is not None: |
| 152 | traj_features = model.get_traj_features(trajs) |
| 153 | else: |
| 154 | traj_features = None |
| 155 | |
| 156 | if unconditional_guidance_scale != 1.0: |
| 157 | # prompts = batch_size * [""] |
| 158 | prompts = batch_size * [DEFAULT_NEGATIVE_PROMPT] |
| 159 | uc = model.get_learned_conditioning(prompts) |
| 160 | if traj_features is not None: |
| 161 | un_motion = model.get_traj_features(torch.zeros_like(trajs)) |
| 162 | else: |
| 163 | un_motion = None |
| 164 | uc = {"features_adapter": un_motion, "uc": uc} |
| 165 | else: |
| 166 | uc = None |
| 167 | |
| 168 | batch_variants = [] |
| 169 | for _ in range(n_samples): |
| 170 | if ddim_sampler is not None: |
| 171 | samples, _ = ddim_sampler.sample(S=ddim_steps, |
| 172 | conditioning=cond, |
| 173 | batch_size=noise_shape[0], |
| 174 | shape=noise_shape[1:], |
| 175 | verbose=False, |
| 176 | unconditional_guidance_scale=unconditional_guidance_scale, |
| 177 | unconditional_conditioning=uc, |
| 178 | eta=ddim_eta, |
| 179 | temporal_length=noise_shape[2], |
| 180 | conditional_guidance_scale_temporal=unconditional_guidance_scale_temporal, |
no test coverage detected