Instructions to use Viggle/Meridian with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use Viggle/Meridian with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("Viggle/Meridian", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
File size: 5,134 Bytes
9c57d46 | 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | {
"unet": {
"class_type": "UNETLoader",
"_meta": {
"title": "stock MiniMax-H3 fl2va"
},
"inputs": {
"unet_name": "minimax_h3_fl2va_bf16.safetensors",
"weight_dtype": "default"
}
},
"teach": {
"class_type": "LoraLoaderModelOnly",
"_meta": {
"title": "Meridian teacher (re-camera)"
},
"inputs": {
"model": [
"unet",
0
],
"lora_name": "meridian_teacher_lora.safetensors",
"strength_model": 1.0
}
},
"turbo": {
"class_type": "LoraLoaderModelOnly",
"_meta": {
"title": "Meridian turbo (3-forward DMD)"
},
"inputs": {
"model": [
"teach",
0
],
"lora_name": "meridian_turbo_lora.safetensors",
"strength_model": 1.0
}
},
"shift": {
"class_type": "MiniMaxH3SigmaShift",
"_meta": {
"title": "shift 3 (student); 12 for teacher alone"
},
"inputs": {
"model": [
"turbo",
0
],
"shift_video": 3.0,
"shift_audio": 3.0
}
},
"clip": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "qwen3vl_32b_minimax_h3_bf16.safetensors",
"type": "minimax"
}
},
"vae": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "minimax_h3_video_vae_fp16.safetensors"
}
},
"avae": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "minimax_h3_audio_vae_fp32.safetensors"
}
},
"ref": {
"class_type": "MiniMaxH3ReferenceToVideo",
"_meta": {
"title": "refs at the 480 class, target at the 768 class"
},
"inputs": {
"clip": [
"clip",
0
],
"vae": [
"vae",
0
],
"audio_vae": [
"avae",
0
],
"prompt": "subject_definitions:\n<Video 1> is the source video for the editing task.\n<Video 2> is a rough render of the same scene from the new camera: the pixels of <Video 1> re-projected through a point cloud, so wherever it shows content its colours, framing and layout are correct, and its flat mid-grey areas are holes where the source camera saw nothing.\n\nsummary:\n[video editing + viewpoint change] The target video shows exactly the same scene as <Video 1>, at exactly the same moments in time, filmed by the second camera that <Video 2> was rendered from. Every subject, every piece of clothing, the background, the lighting and the whole performance are the ones in <Video 1>; only the camera differs, so the same things are seen from a different angle and at a different distance. The target video is <Video 2> completed: its framing and everything it shows are kept, and its grey holes are filled with what belongs there.\n\nretention_analysis:\n<Video 1> (source video editing): fully_preserved - the subjects, their faces, hair, build and clothing, the background, the props and the lighting are the same objects seen from a new viewpoint, and the motion and its timing are frame for frame the motion of <Video 1>. Nothing is added, removed or restyled.\n<Video 2> (layout reference): fully_preserved - the camera path, the framing and the placement of everything it shows are kept exactly; its grey holes are not content and are filled in so that they agree with <Video 1>, and its speckles and jagged edges are cleaned up.\n\ndetailed_description:\n[Shot 1] One continuous shot of the scene of <Video 1>, framed exactly as <Video 2> is, frame for frame. The subjects perform the motion of <Video 1> with the same timing, in the same place, under the same lighting. The camera moves exactly as the camera of <Video 2> does, and there is no cut.\n\noverall_soundscape:\nNo music and no speech.",
"width": [
"geo",
2
],
"height": [
"geo",
3
],
"length": [
"geo",
4
],
"ref_image_size": "match",
"ref_videos.ref_video_0": [
"geo",
0
],
"ref_videos.ref_video_1": [
"geo",
1
]
}
},
"froz": {
"class_type": "MeridianFrozenPrompt",
"_meta": {
"title": "swap in the frozen prompt embed"
},
"inputs": {
"conditioning": [
"ref",
0
],
"latent": [
"ref",
1
],
"assets_dir": "/path/to/release_recam/assets"
}
},
"ks": {
"class_type": "KSampler",
"_meta": {
"title": "3 forwards on sigma 1.0 / 0.857 / 0.600"
},
"inputs": {
"model": [
"shift",
0
],
"positive": [
"froz",
0
],
"negative": [
"froz",
0
],
"latent_image": [
"ref",
1
],
"seed": 1234,
"steps": 3,
"cfg": 1.0,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1.0
}
},
"dec": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"ks",
0
],
"vae": [
"vae",
0
]
}
},
"mk": {
"class_type": "CreateVideo",
"inputs": {
"images": [
"dec",
0
],
"fps": 24.0
}
},
"save": {
"class_type": "SaveVideo",
"inputs": {
"video": [
"mk",
0
],
"filename_prefix": "meridian/out",
"format": "mp4",
"codec": "h264"
}
},
"geo": {
"class_type": "MeridianGeometry",
"_meta": {
"title": "VGGT-Omega unproject + re-render"
},
"inputs": {
"video": "/path/to/clip.mp4",
"args": "--pivot 0.5,0.55 --boom 0.35 --ease --sweep",
"repo": "/path/to/release_recam",
"python": "python"
}
}
} |