How to use from the
Use from the
Diffusers library
pip install -U diffusers transformers accelerate
import torch
from diffusers import DiffusionPipeline

# switch to "mps" for apple devices
pipe = DiffusionPipeline.from_pretrained("krea/Krea-2-Raw,krea/Krea-2-Turbo", dtype=torch.bfloat16, device_map="cuda")
pipe.load_lora_weights("NeedAHugNOW/City-Pop-LoKr")

prompt = "two samurais in flowing robes doing a muay thai fight, one throws a high kick while the other leans back."
image = pipe(prompt).images[0]

Krea 2 City Pop LoKR

LoKR (Low-Rank Kronecker) adapters for Krea 2, trained on a curated dataset of 297 city pop paintings at 1024px resolution. The adapters capture a signature city-pop aesthetic: sharp geometric compositions, flat color blocks, pointillist texture, and atmospheric depth.

This is a first attempt and an educational endeavour. We identified several areas for improvement during development; a refined version is under development.

Two variants are provided, each trained for different objectives:

Adapter Role Training Objective Effective Rank Size
city-pop-texture Surface fidelity MSE reconstruction only 128 112 MB
city-pop-structure Compositional coherence MSE + perceptual feature matching 384 85 MB
Prompt
two samurais in flowing robes doing a muay thai fight, one throws a high kick while the other leans back.
Prompt
A deer grazing in the forest surrounded by dense trees and the sun bright in the sky.
Prompt
A solitary figure stands on a cliff, billowing clouds behind him.
Prompt
the port of antibes in the french riviera, large yachts and small sailboats are visible.
Prompt
an angel with metallic wings and a crown of flowers.
Prompt
A sorcerer in flowing midnight robes stands atop a cliff edge, arms raised as crackling energy gathers between his palms. The sky roils with energy, flowing down from the sky.
Prompt
A sunset over snowy mountains.
Prompt
A skateboarder doing a kickflip at blue hour, a puddle reflects the skateboarder.

Adapters

city-pop-texture

Trained with standard flow-matching MSE loss only. Excels at reproducing surface texture, color palette, and pointillist dot patterns. Best used as a final layer in multi-adapter stacks, or standalone at moderate strength (1.5-2.5) when you want style transfer without heavy structural intervention.

  • Loss: Velocity-prediction MSE only
  • LoKR: dim=32, alpha=32, factor=4 (effective rank 128, 264 modules)
  • Optimizer: AdamW8bit, LR=1e-4, constant schedule
  • Training: 16 epochs, 4752 steps, ~28.5h on RTX A4000 16GB
  • Loss trajectory: 0.088 -> 0.071 (19% reduction)

city-pop-structure

Trained with MSE reconstruction plus a perceptual feature-matching regularizer. This regularizer is active only during high-noise timesteps (t > 0.5) where global structure and composition are being formed, and decays across training so that MSE dominates the final epochs and locks in style/palette.

This adapter excels at maintaining compositional integrity and spatial coherence, especially at higher strengths (2.0-4.0) where the texture adapter begins to lose structure. It resists the "style collapse" failure mode where geometric primitives dominate at high inference strength.

  • Loss: MSE + perceptual feature matching
  • Perceptual schedule: Step-decay 50/30/20 (full weight in first 50% of training, 30% in middle, 10% in final phase)
  • Timestep gate: Perceptual loss active only at t > 0.5 (structure formation phase)
  • LoKR: dim=48, alpha=48, factor=8 (effective rank 384, 264 modules)
  • Optimizer: AdamW, LR=3e-5, cosine decay to 3e-6, 5% warmup
  • Training: 16 epochs, 4752 steps, ~35h on RTX A4000 16GB
  • Loss trajectory: 0.262 -> 0.090 (66% reduction)

Usage

ComfyUI

Load either adapter (or both stacked) via the standard LoRA Loader node. An example workflow is provided as workflow.json (and workflow.png with embedded workflow data). Split sigma workflow is recommended.

Stacked (recommended): structure adapter at strength 1.0 on the high-noise stage, texture adapter at strength 1.5 on the low-noise stage.

Krea-2 RAW base
  -> LoRA Loader (city-pop-structure, strength 1.0)  [high-noise stage]
  -> 1st KSampler
  -> Krea-2 base (Turbo or Turbofied Raw)
  -> LoRA Loader (city-pop-texture, strength 1.5)     [low-noise stage]
  -> 2nd KSampler -> decode

Inference Approaches

Two approaches were tested for the low-noise stage, both producing good results:

Turbofied Raw (Raw + Turbo LoRA) Turbo Model Direct
Variety Higher (Raw inherent diversity) Lower (stronger corrective tendency)
Artifacts Can distort limbs at handshake Turbo model corrects them automatically
Strength range Texture ~2.0 Texture ~1.5 (lower)
Step count More steps possible on Raw combo Fixed Turbo steps

Both approaches work well. The adapters were trained on Raw and transfer to Turbo directly without performance loss, contrary to common advice that training and inference weight mismatches degrade adapter quality. Choice between the two is preference-driven.

Prompting

The adapters respond strongly to prompt framing. No trigger word is needed โ€” the style emerges from adapter strength.

Works well:

  • Style-aligned terms: illustration, anime, painting, artwork
  • Concepts that don't fight the aesthetic: when paired with a style-aligned framing word, e.g. "illustration selfie"
  • Certain optical terms: depth of field, refraction, volumetric light

Does not work well:

  • Photography terms: snapshot, photograph, photorealism โ€” severely diminishes adapter effectiveness
  • The adapter wants prompts that live in the same conceptual space as the training data. Photography vocabulary pulls the model toward a different manifold than where the adapter operates. Can be made to work using high strength but this approach has its cons.

Comparison: Texture vs Structure vs Stacked

Below: same prompt, four configurations.

Base (no adapter) Texture only Structure only Stacked (structure + texture)
base texture structure stacked

Prompt: A young woman with pink and aqua two-tone hair tied in a messy updo, wearing large over-ear headphones, reclining lazily in a plush magenta armchair beside a tall apartment window. She wears a loose yellow romper with black trim and black slide sandals, one leg kicked up casually against the window frame. A sleek black cat with glowing yellow eyes sits on the dark floor looking up at her. The room is dim and moody with silhouettes of large potted plants, while intense sunlight floods in from the window revealing a sunlit urban cityscape with tall buildings and green vines outside.

Inference Tips

  • Strength range: texture adapter works well from 1.0-3.0. structure adapter is stable from 1.0-2.5 but holds structure up to 4.0 on in-distribution content.
  • Out-of-distribution content: For non-architectural subjects (organic shapes, foliage, etc.), keep total combined strength under 3.0 to avoid geometric over-imposition. The structure adapter will fight OOD shapes at higher strengths โ€” that is by design.
  • Resolution: Optimal at 1024-1536px. At 2048px, macro structure holds but fine details (faces, fingers) degrade โ€” the adapter's effective rank bandwidth is sufficient for global geometry but not high-frequency spatial encoding beyond training resolution.
  • Sampler settings: Works with standard Krea-2 sampler/scheduler settings. Tested with Euler and Beta57.

Training Details

Dataset

  • Modified musubi-tuner framework
  • 297 samples, long edge 1024px
  • Bucketed by aspect ratio (no upscaling)
  • 1 image per batch (batch_size=1)
  • Text captions pre-cached to disk (text encoder not loaded during training)
  • Captioning was basic; certain surface texture concepts from the training data tend to bleed into generation as a side effect. Improved captioning would likely reduce this.

Hardware

Trained on a single RTX A4000 16GB (Ampere) with block offloading:

Parameter city-pop-texture city-pop-structure
Precision bf16 bf16
Block swap 26/28 blocks 26/28 blocks
Gradient checkpointing Yes Yes
Peak VRAM ~13 GB ~14.2 GB

Architecture

Both adapters target all 264 linear layers in Krea-2's MMDiT using the LoKR (Kronecker product) parameterization. The Kronecker decomposition factorizes each weight update as A (kron) B, where the factor parameter controls the rank-to-parameter ratio. Higher factor = more rank per parameter, more expressive per MB.

city-pop-texture city-pop-structure
dim 32 48
alpha 32 48
factor 4 8
Effective rank 128 384
Modules 264 264
File size 112 MB 85 MB

The structure adapter's higher effective rank (384 vs 128) gives it 3x the rank capacity per parameter, allowing it to learn more complex spatial decompositions needed for structural coherence.

Comparison

Metric city-pop-texture city-pop-structure
Surface texture fidelity Strong Moderate
Color palette match Strong Moderate
Compositional stability Moderate Strong
High-strength resilience (ID) Up to 3.0 Up to 4.0+
High-strength resilience (OOD) Up to 1.5 Up to 2.0
Style collapse resistance Lower Higher
Best use Standalone or top layer Stacking, high-strength

Limitations

  • OOD geometric over-imposition: At high strengths, the adapters impose geometric vocabulary (sharp verticals, parallel structures) onto content that doesn't naturally have it, among other negative effects of using adapters at those values. This is inherent to style-transfer adapters trained on a single-scope dataset.
  • Text rendering: Neither adapter addresses Krea-2 raw's slight base text-rendering limitations. The base model can produce spelling errors regardless of adapter.
  • Single-scope bias: The 297-image dataset is exclusively limited to a single artstyle. The adapters are specialized for this specific aesthetic and will not generalize to other painting styles without fine-tuning.
  • Captioning: The captioning pipeline was basic. Certain texture concepts from the training data bleed into generation. Improved captioning would likely improve concept isolation.
  • Resolution: Optimal at 1024-1536px. Fine details degrade at 2048px due to effective rank bandwidth limits.
  • First attempt: This is an educational project and a first attempt. Several mistakes were identified during development. An improved version is under development.

Artist Acknowledgement

This project is a labour of love for non-commercial, research, and educational purposes only. The author respects and supports the original artist and does not claim to reproduce, replace, or compete with their work. If the artist wishes, they are welcome to reach out and the repo will be taken down immediately.

Acknowledgements

License

These adapters are Derivatives of Krea 2, licensed under the Krea 2 Community License Agreement. The original Krea 2 model has been modified through LoKR adapter training. "Krea 2" is a mark of Krea.ai, Inc. These adapters are not official Krea products and are not endorsed by Krea.

Commercial use is permitted under the terms of the Krea 2 Community License, subject to the revenue threshold and other conditions specified therein. Users must implement appropriate content filtering measures as required by Section 4.2 of the license agreement.

Krea 2 is licensed under the Krea 2 Community License Agreement. For more information, visit https://krea.ai/krea-2-licensing.


Trained July 2026. Feedback and issue reports welcome.

Downloads last month
10
Inference Examples
Examples
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for NeedAHugNOW/City-Pop-LoKr

Base model

krea/Krea-2-Raw
Adapter
(166)
this model