Instructions to use yijunwang2/krea2-anygles with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use yijunwang2/krea2-anygles with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline from diffusers.utils import load_image # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("krea/Krea-2-Turbo", dtype=torch.bfloat16, device_map="cuda") pipe.load_lora_weights("yijunwang2/krea2-anygles") prompt = "Turn this cat into a dog" input_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png") image = pipe(image=input_image, prompt=prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
Krea 2 Anygles: Human Viewpoint and Camera Control
Krea 2 Anygles turns one human image into a new camera view while retaining the person, pose, clothing, visual style, and surrounding scene. It controls horizontal orbit, camera elevation, and camera distance with an aligned 3D human normal and a short camera instruction.
ComfyUI nodes and workflow | Interactive Space | Krea 2 functional adapters collection
To our knowledge, this is the first publicly released Krea 2 LoRA focused on controllable human camera viewpoints. This is a scoped community claim based on searching public Krea 2 model repositories at release preparation time; it does not cover private or unreleased work.
At a glance
Original-source independent generation. Each animation keeps the source fixed on the left and shows independently generated camera views on the right. Every frame starts from the original source image rather than the preceding output.
Waterfront studio · photography![]() |
Market square · painterly![]() |
Museum terrace · stylized 3D![]() |
Mountain station · anime![]() |
Combined camera trajectory
Azimuth, elevation, and camera distance move together along one smooth closed path. Every frame is generated independently from the original source image; the animation does not feed generated frames back into the model.
Important: The Hugging Face auto-generated Diffusers snippet and ordinary LoRA loaders do not provide the spatial-control input required by this model. Use the included
example.pyand custom pipeline, or the linked Anygles ComfyUI nodes and workflow.
Practical comparison
The following animations compare the same source requests. Left: Qwen. The
baseline uses Qwen/Qwen-Image-Edit-2511 with
fal/Qwen-Image-Edit-2511-Multiple-Angles-LoRA and
Qwen-Image-Edit-2511-Lightning-4steps-V1.0, run with an INT8 ConvRot DiT,
FP8 Qwen2.5-VL 7B, four Euler/simple steps, CFG 1, shift 3.1, and angle-LoRA
strength 1.0. Right: Anygles.
360° horizontal orbit
Low-to-high camera elevation
Far-to-near camera distance
Comparison protocol. Both methods receive the original source independently for every generated frame. Every displayed output is the first result from its frozen prompt and seed; there are no retries, interpolated frames, or selected replacements. Qwen uses its documented native camera descriptors plus a literal relative camera instruction for intermediate values. Qwen does not receive Anygles' target normal, so this is a practical feature comparison rather than an identical-conditioning ablation.
Capabilities
- Full horizontal orbit — continuous control across a complete 360° turn;
- Stronger elevation control — move the viewpoint above or below the input while retaining natural body proportions across the demonstrated sweep;
- Camera distance control — move from closer framing to wider views;
- Combined camera motion — vary azimuth, elevation, and distance together along a smooth trajectory;
- Independent generation — every view can start from the original source, avoiding recursive edit drift;
- Source-aware framing — retain the source aspect ratio with 16-pixel-aligned output dimensions;
- Multiple visual domains — photography, painting, stylized 3D, and anime;
- Prompt extensibility — append optional user text after the generated camera instruction.
Reference-control ranges. The included tools currently expose elevation from −60° to +60° and camera distance from 0.6× to 1.8× as practical operating ranges. These are interface guardrails, not claimed hard limits of the adapter. The release sweeps shown above cover elevation from −45° to +45° and distance from 1.35× (farther) to 0.78× (closer). The combined trajectory demonstrates all three controls changing together rather than treating each axis only in isolation.
The current release supports one clear human subject. It is not designed for animals, general objects, crowds, or exact reconstruction of a complete 3D scene.
ComfyUI
Install the custom nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/alexw5702-afk/krea2-anygles
cd krea2-anygles
pip install -r requirements.txt
Download the human-mesh checkpoint after accepting its SAM License:
hf download facebook/sam-3d-body-dinov3 \
--local-dir ComfyUI/models/sam3d_body
Place krea2_anygles_rank32.safetensors in ComfyUI/models/loras, restart
ComfyUI, and drag
krea2_anygles_workflow.json
onto the canvas.
ComfyUI requirements
- A current ComfyUI build with native Krea 2 support.
krea2_turbo_int8_convrot.safetensorsinComfyUI/models/diffusion_models.qwen3vl_4b_fp8_scaled.safetensorsinComfyUI/models/text_encoders.qwen_image_vae.safetensorsinComfyUI/models/vae.- Krea 2 Anygles LoRA
in
ComfyUI/models/loras. facebook/sam-3d-body-dinov3underComfyUI/models/sam3d_body.
ComfyUI nodes
- Krea2 Anygles Camera resizes one source to an aligned canvas, recovers its human mesh, rotates it using yaw/elevation/distance, renders the target normal, and assembles the camera prompt.
- Krea2 Anygles Encode sends the source to Qwen3-VL and Krea 2's clean reference path, and encodes the full-canvas target normal.
- Krea2 Anygles Load LoRA applies the adapter and separately retains its spatial projection instead of silently dropping that nonstandard tensor.
- Krea2 Anygles Model Patch injects aligned normal tokens at the noisy image input and caches the clean visual-reference K/V.
The workflow wiring is:
Load Image -> Anygles Camera -> Anygles Encode
Load Diffusion Model -> Anygles Load LoRA -> Anygles Model Patch -> KSampler
Anygles Encode.positive -> KSampler.positive
Anygles Camera.width/height -> EmptySD3LatentImage -> KSampler.latent_image
KSampler -> VAE Decode -> Save Image
Recommended settings: 8 steps, Euler, simple scheduler, CFG 1.0, adapter strength 1.0, VLM reference enabled, and reference K/V cache enabled. SAM 3D Body and Krea 2 execute sequentially so their full models do not need to remain on the GPU at the same time.
Input contract
Anygles uses two aligned inputs:
- Original image — sent to Qwen3-VL and Krea 2 as a clean visual reference;
- Target normal — rendered at the requested camera pose, with exactly the same width and height as the output canvas.
The model-facing camera instruction uses the same left-only relative-angle
representation as training. For example, a UI request for +50° to the right
is represented by the equivalent 310° move to the left:
Same figure. Move the camera 310 degrees to the left relative to the input view.
The signed UI remains intuitive: negative yaw moves left and positive yaw moves right. Only the internal text is normalized to the training convention. Elevation and distance instructions are added only when requested. Optional user text is appended unchanged.
Recommended settings
| Setting | Value |
|---|---|
| Inference base | krea/Krea-2-Turbo |
| Steps | 8 |
| Guidance scale | 0.0 in Diffusers / CFG 1.0 in ComfyUI |
| LoRA scale | 1.0 |
| Reference maximum edge | 384 px |
| Source reference in Qwen3-VL | enabled |
| Reference K/V cache | enabled |
| Spatial control | full-canvas target normal |
Portable Python usage
Install the dependencies and authenticate for the gated base models:
pip install -r requirements.txt
hf auth login
# SAM 3D Body inference source (tested revision shown for reproducibility)
git clone https://github.com/facebookresearch/sam-3d-body.git
git -C sam-3d-body checkout b5c765a0d89d789985e186d396315e7590887b94
# After accepting the SAM 3D Body model license:
hf download facebook/sam-3d-body-dinov3 \
--local-dir checkpoints/sam-3d-body-dinov3
Accept the access terms for both krea/Krea-2-Turbo and
facebook/sam-3d-body-dinov3 before downloading. The included requirements
cover the dependency set used by the normal-preparation path; the SAM 3D Body
source and its gated checkpoint remain separate downloads under the SAM
License.
Prepare one aligned target normal:
python prepare_normal.py \
--source person.webp \
--output target_normal.png \
--yaw 50 \
--elevation 0 \
--distance 1.0 \
--sam3d-root ./sam-3d-body \
--checkpoint ./checkpoints/sam-3d-body-dinov3/model.ckpt \
--mhr-model ./checkpoints/sam-3d-body-dinov3/assets/mhr_model.pt
Generate one image:
python example.py \
--source person.webp \
--normal target_normal.png \
--output result.webp \
--yaw 50 \
--elevation 0 \
--distance 1.0 \
--prompt "soft afternoon light" \
--steps 8 \
--seed 42
How it works
- A human mesh is recovered once from the source image.
- The mesh is rotated around the pelvis and rendered as an aligned target normal inside the source-aspect-ratio canvas.
- The original image remains the semantic and identity reference.
- The target normal is VAE-encoded and injected through the spatial Control-LoRA projection at the noisy-image input.
- The short relative-camera sentence supplies the intended view semantics.
Showcase policy
The showcase sources are synthetic original-character images generated from the unmodified Krea 2 base model. They do not depict real identities, brands, or existing fictional characters. The retained sequences use fixed first attempts. One weaker source from the original eight-source presentation pool is omitted as a complete sequence; no frame inside a retained sequence was replaced or selected.
Limitations
- Hidden sides and background content are generated rather than recovered from measured geometry; accessories, text, fingers, and occluded details can change.
- Poor body recovery, severe occlusion, tiny subjects, or multiple people can produce incorrect normal control.
- Large camera changes can alter lighting, local background structure, or body proportions.
- Elevation and distance are useful controls, not calibrated scene reconstruction.
- Quantized runtimes can differ at the pixel level from the portable BF16 example.
Responsible use
Use reference images only when you have the subject's consent or another lawful basis. Do not use this model for deceptive impersonation, fraud, harassment, non-consensual intimate imagery, biometric identification, or misleading political or media content.
Deployments must follow the Krea 2 Acceptable Use Policy, implement appropriate content moderation, and disclose AI-generated content where required.
License and attribution
The Anygles weights are a derivative of Krea 2 Turbo and are distributed under
the Krea 2 Community License Agreement.
LICENSE.pdf and NOTICE are included. Pipeline and helper code are provided
under Apache License 2.0 in PIPELINE_LICENSE.
Automatic normal preparation uses Meta's SAM 3D Body as a separate dependency
under the SAM License; SAM model weights are not included. The ComfyUI
reference-attention path includes the attribution chain documented in its
NOTICE.
This is an unofficial community release and is not endorsed by Krea, Meta, Qwen, fal, or Ostris. Training data and training infrastructure are not distributed.
- Downloads last month
- 302



