Instructions to use NeedAHugNOW/City-Pop-LoKr with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use NeedAHugNOW/City-Pop-LoKr with Diffusers:
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] - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Draw Things
- DiffusionBee
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.
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
- musubi-tuner for the Krea-2 training framework
- Krea for the Krea-2 base model
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
Model tree for NeedAHugNOW/City-Pop-LoKr
Base model
krea/Krea-2-Raw


