Four characters in one Anima LoRA: makeup toggle survival and 6/6 one-shot rate
Contents

I merged a fourth character (Kurara, a gal type) into my three-character merged LoRA (Kei, Kana, Koharu). Her makeup on/off toggle was already verified in a solo LoRA; the question was whether what baked cleanly solo survives the merge — above all, whether the bare-faced toggle survives when every multi-character training image shows her with makeup on.
Test environment
| Item | Details |
|---|---|
| Base model | Anima-Base v1.0 |
| Training tool | AnimaLoraToolkit (torch2.8.0+cu128 / ubuntu24.04) |
| Training GPU | RunPod RTX 5090 (volume 170GB) |
| Training config | rank256 / alpha256 / lr2e-5 / batch1 / accum4 / ep150 / save_every=1 / flip false (carried over from trio v2) |
| Data | 518 images → 896 files after weighted duplication (see below) |
| Generation check | ComfyUI, Turbo 8-step, cfg 1.0 |
Dataset (final, 518 images)
| Subset | Count | Contents / how it was made |
|---|---|---|
| Three-character proven set | 292 | The trio v2 set, unchanged |
| Kurara solo | 91 | 61 makeup + 30 bare-faced. Same design as her solo v3, tilted shots already replaced |
| Extra solos | 35 | Kei 12, Kana 12, Koharu 11. Full-body reinforcement so Kurara’s 91 doesn’t outnumber them; busts were already baked, so none needed |
| Lineup composites | 33 | 3 pairs ×6 + 3 trios ×4 + all four ×3. Composited directly without Codex (clean cutouts → normalized to measured height ratios → feet aligned) |
| Contact poses | 67 | 3 pairs ×14 + 3 trios ×6 + all four ×7. Codex-generated |
Captions follow the format proven on the three-character data: tags first, then a position phrase, then an outfit phrase. The identity anchors inside the position phrase are short and fixed (kurara=rose-brown hair+earrings+makeup / keichan=blonde+blue ribbon / kanachan=side ponytail+ahoge / koharu=short dark hair+red eyes). Kurara’s anchor always includes earrings/makeup, matching the additive design of the makeup toggle — every multi-character Kurara wears makeup.
What went wrong while building the data, and the fixes
1. AI-generated multi-character material inflates body proportions (measured +0.5 to 1 head)
Normalizing Codex (gpt-image) pair/trio outputs to the reference height and measuring on a 1/8 grid: Kana 5.5 → 6.5-7 heads tall, Kurara 6.4 → 7.3, Kei 6.2 → 7, Koharu 5.7 → 6.4.
Only the four-person layouts were safe (each body is drawn smaller to fit the row, which suppresses the leg-lengthening). My guess is that the reference Kurara is designed tall and slender, so in two-person layouts the partner gets stretched to harmonize with her.
The fix is a proportion constraint in the prompt, but a one-directional constraint over-corrected. With only “compact, 5.5-6 heads tall, heads LARGE” they shrank too far and went chibi. The final form pins both directions: “match the reference EXACTLY — neither taller/leggier NOR shorter/more chibi”.
There were side effects too. Bodies rendering small was solved with a framing instruction (fill most of the canvas height), and bust shots cropping off the head with “heads fully inside the frame with margin”.
2. Measure height differences from past accepted data
The Kana → Koharu gap came out too shallow in the composites (ratio 0.937, taken from a three-person standing image). Measuring the nude standing pair used as the height reference gave Koharu/Kana = 0.9212.
Final ratios with Kei as 1.0: Kurara = Kei = 1.0 / Kana = 0.951 / Koharu = 0.876. Every lineup composite is built by downscaling with these ratios only (no upscaling, LANCZOS). Mechanical compositing is more accurate and faster than asking an AI to draw someone “half a head shorter” in words. That settled the split: lineups by compositing, contact poses by Codex.
3. Height instructions for pairs/trios only hold when spelled out concretely
With just “half a head shorter”, some outputs shrank too much. What worked were prompts that state which part of one head lines up with which part of the other: “her eyes are at the level of their mouths”, “the top of her head is at their chin level, NOT lower”.
Exposure design (final)
AnimaLoraToolkit only has a global repeats setting (no per-subset repeats), so I built the weighting by physically duplicating files.
| Subset | Images | Copies | Effective exposure |
|---|---|---|---|
| Solo (except bare-faced) | 318 | ×2 | 636 |
| Kurara bare-faced | 30 | ×3 | 90 |
| Multi | 170 | ×1 | 170 |
| Total | 518 | → 896 files | 896/ep |
- Effective multi ratio 19.0% (adjusted to stay within the 23.8% proven in trio v2)
- Kurara makeup : bare-faced exposure = 2.5:1 (with 100 multi images all in makeup, the raw ratio skews to 5.4:1; tripling the bare-faced images pulls it back to roughly the 2:1 of her solo v3. If this collapses, the toggle doesn’t survive)
- steps/ep = 224, 33,600 steps over 150 epochs (about 23 hours on a healthy pod)
Epoch sampling strategy (final)
Multi-character output can’t bake before the solos do, so epoch judgment is designed around solos. Whether unprompted multi-person output stays at the right head count is down to Anima itself and the prompt; the job of my multi material is “no mixing when specified, height gaps and position words that hold”. For that reason, raw multi-person generations were left out of epoch judgment.
Each epoch gets one sample, rotating through six: (1) Kurara makeup bust (2) Kurara makeoff bust ((1)↔(2) form a toggle pair across adjacent epochs) (3) Kei (4) Kana (5) Koharu (6) the Kurara × Kana pair (the closest hues, my canary for color mixing).
The real trio/four-person judgment happens after training: narrow down to 3-5 candidate epochs on solos, then run a 14-image battery per checkpoint (6 pairs + 4 trios + 1 four-person + 3 toggles), 3 seeds each.
Multi-person images are generated wide (trio 1216×832 / four 1344×768). Cramming four people into a square adds resolution-driven distortion on top of any real mixing, and you can no longer tell which problem belongs to the LoRA.
Predictions before training
The four solo identities should bake without trouble (data and design are an extension of what’s proven). Kurara’s toggle should survive thanks to the ×3 bare-faced correction, though maybe weaker than solo; if it dies, rebuild with ×4.
Pairs shouldn’t mix with a fully specified prompt (trigger + position phrase + identity anchor + outfit phrase); the dangerous pair is Kurara × Kana (rose-brown × brown). Four at once will mix unprompted (expected behavior), so the question is how far full specification plus wide resolution separates them. Proportions are fixed on the data side; if outputs still come out leggy, the old AI-generated pairs from the three-character era are the prime suspect.
Training results
The pod (RTX 5090, $0.71/h) passed my smoke-test gate (0.30) at 0.38 it/s and ran the real job at 0.42-0.43 it/s (2.33 s/step) — a faster draw than the healthy trio v2 pod (2.45 s/step). Planned 224 steps/ep × 150 epochs, stopped at ep120 (reasons below), about 21.5 hours of actual runtime.
Early on it looked like “fast convergence”, but that seems to be a misread caused by the larger epochs: at 224 steps/ep, 1.45× trio’s, ep15 here equals about ep22 of trio-scale training. Converted to steps, the curve is nearly the same. The capacity difference of rank256 (Kurara’s solo was rank32) is real, though: her makeup toggle (earrings on/off) had already separated in the trainer’s built-in samples by ep14. A completely different ramp-up from solo v3, where the real judgment started at ep80+.

ep80/90/100: solos and the toggle plateau, and unclothed prompts start producing nudes
I compared ep80/90/100 under local production conditions (ComfyUI, Anima-Base, LoRA strength 1.0, solo = Turbo 8-step/cfg 1.0, multi = non-Turbo 25-step/cfg 4.0, seed 42 fixed). The four solo identities and Kurara’s toggle were already settled at ep80 and didn’t change through ep100.

The toggle shows up exactly as it did solo: in the earrings.

In the trio era, local inference had a conflict where Kana crushed Kei into dark hair; this time it simply didn’t happen with anchor + position-phrase prompts. No weight counterweights ((kanachan:0.8) and the like) needed either.
One change did depend on the epoch. Multi-person prompts with no outfit specified start producing nudes from around ep90. The training data contains nude standing pairs used to bake in the height reference, and the eval prompt “two girls standing side by side facing the viewer” matched those captions exactly. A safe tag didn’t prevent it. Adding an outfit phrase brought back full clothing on the same epoch and seed. Since every multi caption in the training data ends with an outfit phrase, this is the model following its data distribution, not overfitting. The operating rule: multi-person prompts always carry an outfit phrase.
The ep100 full judgment: trios, four-person, poses, close contact
Judged with fully specified prompts (trigger + position phrase + identity anchor + outfit phrase) at wide resolutions (trio 1216x832 / four 1344x768). All three trios and the four-person lineup held across seeds 42/1234/9999: zero color mixing, correct head count, height staircase preserved (Kurara = Kei > Kana by half a head > Koharu).


All four trained pose words (holding hands in a row, jumping with arms up, shoulder hug, peace signs) worked, and compositions absent from the training data (sitting on the floor, walking, pointing at the sky) came out intact too. The pose vocabulary belongs to the Anima base; my multi data only has to secure character separation, height gaps, and position words — the division of labor the design intended. Close contact was tested with the same prompt as the trio post, “hugging each other tightly, cheek to cheek, close together”: faces touching, no face fusion.

makeoff doesn’t work in multi-person contexts
Specifying makeoff on Kurara in a multi-person prompt doesn’t remove her makeup, and the earrings don’t disappear either — they morph into a different design and stay. All 100 multi-character training images show Kurara in makeup, so “2girls + makeoff” is a combination that appears in zero training images. Even pushing to (makeoff:1.6) didn’t flip it. The trio-era “Kana dominance” could be pushed through with prompt weights, but that was a conflict between triggers; this is a conflict with the training distribution itself, a different beast.

Tag contamination onto Kei standing next to her: zero. Fixing it in data would mean mixing bare-faced Kurara into the multi set, but growing the multi set is the flip side of the “multiple people appear without being asked” risk, so I passed this time.
Position phrases aren’t layout control, they prevent design bleed
Dropping the position phrases (far left / second from the left…) from a four-person prompt with an untrained pose (pointing at the sky), Kana’s side ponytail and scrunchie bled onto Koharu. The same prompt without position phrases survived on a trained composition (the close hug), so this is an edge case that only appears at “no position phrases × untrained pose”. Adding the position phrases back brought the bleed to zero on the same seed.


Why everyone’s eyes get embellished in close-contact busts
In close-contact busts, all four characters get visibly fancier eyes than in solo full-body shots (more highlights, drawn-in lashes, blush). I suspected Kurara’s makeup was spreading, but a three-person hug without Kurara looked exactly the same, which killed that theory.

I think two layers stack up. (1) Solos dominate the exposure (×2 weighting, 636/ep), so the LoRA imprints hard there; multi-person busts have thin coverage, and the Anima base’s native style (anime = big sparkly eyes, especially since this one leans moe) shows through. (2) On top of that, the eye-embellishing style of Codex (gpt-image), which produced the multi material, adds in the same direction. Solo busts = Gemini-made simple eyes, close-contact multi = Codex-made. The generation tool’s style gets baked in per composition context.
The same effect also runs the other way. The four characters come from mixed origins (Kana = old Gemini with a slightly bigger head, Kei = Gemini style-matched + QIE with a smaller face, Koharu = Gemini + Codex, Kurara = almost all Codex), and their measured proportions differ by about a full head — yet in multi-person output the height differences hold while the stylization evens out into one coherent picture. The base’s style is smoothing out the per-character stylization gaps. Even if I unify the multi material’s art style for v2, matching the eye treatment alone is enough; full proportion unification isn’t needed (Anima absorbs it).
Solo separation starts to crumble at ep110
At ep110, Kei’s design elements (crown braid + blue ribbon) bled into Kurara’s solo bust. ep80/90/100 are clean on the same seed, so stacking epochs let the multi-data co-occurrence (Kei is always standing next to her) start leaking into solo contexts.

Changing seeds shows the ep110 bleed is probabilistic, seed-dependent (s42 bleeds, s1234 clean). The degradation mode isn’t “always broken” but “bleeds at a low rate”.

Last time, with the trio, I misread prompt-driven fusion as “mixing = undertrained” and ran to ep150. This time the judgment prompts were established, so I could call it early from the outputs and stopped training at ep120. The pick policy: from the ep100-to-under-110 range, take the highest epoch that passes every probe with zero bleed.
Picking the epoch on the bleed-vs-proportion trade-off
I went through ep95-110 with the most bleed-sensitive probe (Kurara solo bust, multiple seeds) plus the toggle, pairs, and the four-person lineup. The braid bleed doesn’t start at some point — it exists at low probability across the whole range, as a probabilistic phenomenon.
| ep | Kurara bust bleed rate | Four-person proportions | Notes |
|---|---|---|---|
| 95 | 1/4 | too leggy | |
| 100 | 1/8 (lowest in range) | middle, acceptable | picked |
| 102 | 1/4 | — | |
| 105 | 3/4 | — | |
| 108 | 3/4 | tightest | ribbon also invades makeoff |
| 110 | 1/2 | — | signs of face overfitting |

Meanwhile, proportions and poses tighten as epochs go on. The ep95 four-person shot leans leggy; ep108 is the most compact. The two move in opposite directions — separation is best at shallow epochs, proportions at deep ones — and the crossing point was ep100.

Stopping at ep120 and picking from the range cut both training time and cost by about 30% versus last time.
I picked ep100 (anima-4char-v1_epoch100).
- Multi-person prompts require an outfit phrase and position phrases (no outfit = nudes appear; no positions = the design-bleed edge case)
- Kurara’s makeoff doesn’t work with multiple people in frame (a combination absent from the training data)
- Kurara’s solo bust bleeds Kei’s braid at a low rate (1/8). If it shows, reroll the seed
- Close-contact busts embellish everyone’s eyes (Anima base style × Codex material stacking). If it bothers you, pull back to fuller-body framing
Scene-image lessons from making the hero image
The hero at the top (four girls laughing in a classroom at sunset) came out of ep100, but not in one shot; a few rules for multi-person scene images firmed up along the way.
Position phrases along one row came out flat. Writing them as depth instead of left-right (close foreground / middle distance / far background) produced a three-layer composition.
Giving an asymmetric accessory to a character seen from behind broke down. Putting Kana in the near foreground over-the-shoulder (from behind) drew her side ponytail tied on the wrong side. A tie that reads as “right” from the front must read as “left” from behind — the model doesn’t solve that flip. Swapping the role to Koharu, whose hair is symmetric, fixed it.
In scene compositions, the generic “school uniforms” shuffled the uniform parts (Kei got a necktie instead of her ribbon, Kurara’s earrings bled onto Koharu). Lineups were fine with the generic word, but scenes needed per-character outfit phrases to pin everyone down.
Cuts with broken hands were faster to reframe out (hands not visible) than to fix.
A Turbo (8-step/cfg 1) hires second pass melted the linework into watercolor. Anima handles large canvases natively, so generating at 2016x1152 in one pass was the right call — it also solved the face pixel-starvation at the same time.
One-shot rate (ep100, 6 random seeds)
The usual one-shot rate: with a fully specified prompt (position phrases + anchors + outfit phrase), how many generations meet all conditions (four people, no color mixing, correct order, height gaps, no face fusion) with zero retakes.
| Composition | One-shot rate |
|---|---|
| Four-person lineup (fully specified, 1344x768) | 6/6 |
| Four-person cheek-to-cheek (1344x768) | 6/6 |

For the six close-contact images I zoomed into each head one by one, since at thumbnail size you miss braid and earring bleed. Kurara’s earrings were on Kurara only, Kana’s ahoge and scrunchie on Kana only — every detail on its rightful owner. The trio needed weight counterweights ((kanachan:0.8)) against local-inference conflicts; going to four characters and reaching 6/6 on plain prompts, I put down to the established prompt design (position phrases + anchors + outfit phrase) and the multi captions written in the same format (ending with position and outfit phrases).
Predictions vs results
The four solo identities went as predicted, all locked by ep80. I expected Kurara’s toggle to “survive but weaken”; with the ×3 bare-faced correction it separated from ep14 and remained fully intact at ep100. What I hadn’t predicted was the constraint that it doesn’t work in multi-person contexts.
The Kurara × Kana color mixing I was bracing for never appeared. What appeared instead was the low-rate bleed of Kei’s design into Kurara’s solo shots — co-occurrence leaking from the multi data in the opposite direction. Four-person prompts mixed when unspecified, as predicted, but full specification carried them to 6/6 one-shot. Proportions were solved on the data side, and the imprint kept tightening with epochs (95 leggy → 108 compact).
518 images, rank256, about 21.5 hours, $16. Because the data, training config, and judgment prompts carried over from the three-character era, most of the time went not into the training itself but into deciding where to stop and sorting spec from defect.
By the way, about the hero image: the faces look slightly softer to me than they did with three characters.
On how many characters Anima can put in one image — I once saw a post claiming ten, but that almost certainly wasn’t a one-shot; it would have taken repeated rolls, and surely not with a LoRA like this one on top. I have no intention of pouring enough LoRA work into a ten-character model, but I do want a look at five, so if I find the time I’ll try five as a last step. My guess is that four or five is the ceiling for keeping everyone’s design intact in a single frame.