--- license: apache-2.0 base_model: Qwen/Qwen-Image-Edit pipeline_tag: image-to-image tags: - comfyui - novel-view-synthesis - camera-control - fp8 - qwen-image-edit - diffusion-single-file --- # MetaView for ComfyUI (fp8-scaled, Lightning 8-step fused) Single-file ComfyUI checkpoint of **[MetaView](https://huggingface.co/Kwai-Kolors/MetaView)** — *Monocular Novel View Synthesis with Scale-Aware Implicit Geometry Priors* (ECCV 2026, [arXiv:2607.12000](https://arxiv.org/abs/2607.12000)) — pre-fused and quantized for fast, low-VRAM inference. Give it one photo and a camera move (yaw / pitch / radius) and it re-renders the scene from the new viewpoint. ![Example: left = input photo, right = generated novel view at yaw −30°, pitch +15° (8 steps, CFG 1.0)](assets/example_yaw-30_pitch15.png) *Left: input photo · Right: generated novel view (yaw −30°, pitch +15°, 8 steps / CFG 1.0, this checkpoint)* ## What's inside | Component | Detail | |---|---| | Base | [Qwen/Qwen-Image-Edit](https://huggingface.co/Qwen/Qwen-Image-Edit) transformer (original release) | | Graft | MetaView `model-2500-best` delta: `_3D_in` projection + per-block `prope_attn` parallel 3D attention (PRoPE camera-aware rope), kept bf16 | | Speed | [Qwen-Image-Edit-Lightning-8steps-V1.0](https://huggingface.co/lightx2v/Qwen-Image-Lightning) LoRA fused at alpha 0.125 → **8 steps, CFG 1.0** | | Quantization | 841 base layers fp8_e4m3fn, per-tensor scale = amax/448, ComfyUI-native `weight_scale` convention; sensitive layers (img_in / txt_in / proj_out / norms / biases) and all MetaView layers bf16 | | Size | 26.5 GB (vs ~41 GB bf16 stack) — runs on a 16 GB GPU via ComfyUI weight streaming | Quantization is effectively lossless in practice (max per-layer relative error ~0.03% typical; outputs match the bf16 reference within run-to-run sampler noise). ## Requirements Load with the **[Enviral Design node pack](https://github.com/EnviralDesign/comfyUI-enviral-design-node-pack)** (`MetaViewModelLoader`, `MetaViewDA3Loader`, `MetaView3DConditioning`) — the grafted architecture is not detected by stock loaders. Everything else is stock ComfyUI. Companion models: | Model | File / dir | Where | |---|---|---| | Text encoder | `qwen_2.5_vl_7b_fp8_scaled.safetensors` → `models/text_encoders/` | [Comfy-Org/Qwen-Image_ComfyUI](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI) | | VAE | `qwen_image_vae.safetensors` → `models/vae/` | [Comfy-Org/Qwen-Image_ComfyUI](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI) | | 3D features | `DA3-GIANT-1.1/` (whole dir) → `models/depth_anything_3/` | [depth-anything/DA3-GIANT-1.1](https://huggingface.co/depth-anything/DA3-GIANT-1.1) | | Depth | `DA3NESTED-GIANT-LARGE-1.1/` (whole dir) → `models/depth_anything_3/` | [depth-anything/DA3NESTED-GIANT-LARGE-1.1](https://huggingface.co/depth-anything/DA3NESTED-GIANT-LARGE-1.1) | This file goes in `models/diffusion_models/`. ## Usage Example workflow ships with the node pack (`workflows/`). Wiring summary: ``` LoadImage ──┬─▶ MetaView3DConditioning (yaw / pitch / radius, auto_radius) ─▶ positive ─▶ SamplerCustom └─▶ TextEncodeQwenImageEdit (image, no vae) ────────────────────▶ (via conditioning node) MetaViewDA3Loader ─▶ (da3_model) LATENT from MetaView3DConditioning ─▶ SamplerCustom + MetaViewSigmas MetaViewModelLoader ─▶ MODEL ─▶ SamplerCustom (euler, CFG 1.0, sigmas from MetaViewSigmas) ─▶ VAEDecode ─▶ Save ``` - **Sampler:** stock `SamplerCustom` + euler at **CFG 1.0**, sigmas from the pack's `MetaViewSigmas` node (8 steps default). Lightning is fused — do not add another speed LoRA, and use `MetaViewSigmas` rather than a named scheduler (it reproduces the exact Qwen-Image flow-match schedule the model expects). - **Prompt:** the trigger phrase `镜头视角转到指定位置` ("move the camera to the specified position"). Extra text after it is best-effort — the model's first-class use is promptless scene mutation. - **Camera:** yaw/pitch in degrees; `auto_radius` derives orbit radius from scene depth (recommended). - Wire the **VAE into MetaView3DConditioning** (not into the text encode node) so the reference latent lands at generation resolution. - Precision note: the loader tags the fp8 layers `full_precision_matrix_mult` (Comfy-Org scaled-fp8 convention) — weights stay fp8 in RAM/VRAM and dequantize to bf16 for each matmul. No launch flags needed; `--fast fp8_matrix_mult` does not apply to these layers (this model's outputs degrade under fp8 activation matmul, so the loader opts out per-layer). ## License & attribution This checkpoint is a merge of Apache-2.0 licensed weights and is released under **Apache-2.0**: [Kwai-Kolors/MetaView](https://huggingface.co/Kwai-Kolors/MetaView) © Kuaishou (ECCV 2026) · [Qwen/Qwen-Image-Edit](https://huggingface.co/Qwen/Qwen-Image-Edit) © Alibaba Cloud · [lightx2v Qwen-Image-Lightning](https://huggingface.co/lightx2v/Qwen-Image-Lightning). Note: the Depth-Anything-3 models used by the conditioning stage (not contained in this file) are **CC-BY-NC-4.0 (non-commercial)** — evaluate accordingly for commercial pipelines.