Tech 7 min read

Character LoRA won't stand straight on Anima-Base: cut posed data, don't add it

IkesanContents

Update 2026-06-06: A follow-up — I merged keichan and kanachan into a single LoRA and tested whether the two can actually interact → Two characters, one Anima LoRA: hugs hold, lap-sit breaks (stack vs interleave)

The previous keichan LoRA v2 was baked on Anima-Base v1.0 with off-distribution, Gemini-sourced data and became a “usable LoRA that fires from the trigger alone.” But one piece of homework remained. Even when I specify standing, the legs bend / spread / fall into a walking stance — it won’t stand upright.

The v2 article concluded the cause was “pose and angle: the trigger word embodies the training data’s distribution as-is,” and ended by proposing a data-design fix (the v3 plan): “replace the 44 posed full-body standing illustrations with a few upright turnaround shots to lighten the whole set.”

This article is the answer key to that. First I failed with a half-measure (v3), then I properly subtracted material (v4) and it was fixed. A character LoRA’s broken pose is fixed by subtracting material, not adding it.

v3: cleaning just the standing tag failed

The first fix (v3) was “caption hygiene.” I stripped the standing tag from posed full-body images, re-tagged them with their actual pose (walking / squatting / contrapposto, etc.), and kept standing only on purely upright images. I also added 10 upright turnaround shots (8 upright at varied angles + 2 upright bust-ups). Conversely, I dropped 1 image that was originally tagged standing but whose pose couldn’t be classified. 70 + 10 − 1 = 79 images.

My read was “if standing contamination is the cause, cleaning the tags should fix it.” It missed.

Local verification (Anima-Base + Turbo 8-step, uprightness for front/side/3-4/behind scored ○/△/× — good/partial/fail — by Codex). Results below.

epochv3 standing score
ep30○2 △2 ×4
ep60○1 ×7 (worse, if anything)

Far from leaning more upright the deeper it baked, at ep60 7 of 7 were walking / bent / weight-shifted. Even cleaning the standing tag didn’t make it stand upright.

And v3 didn’t just clean tags. It also added 10 upright turnaround shots. Even with good upright material added, it didn’t improve. Tag cleanup and adding material are both “non-subtractive” measures, and both struck out. At this point you can start to see that the fix that eventually works isn’t on the “adding” side.

The culprit isn’t standing: it’s the pose distribution the trigger absorbed

Recall the v2 conclusion. standing is a thin receptacle; the lead role for pose is the trigger word. keichan is present in every posed full-body image, so it absorbs the pose signal most strongly. No matter how clean you make the standing tags, the trigger keichan itself carries the “posed full body.”

What clinched it was a material comparison with kanachan (a separate character LoRA that stands upright). Counting the full-body composition of both characters:

kanachan (stands)keichan v3 (posed)
Full body1452
└ of which standing1113
walking017
└ other posed~0~10

Of kanachan’s 14 full-body images, 11 are upright; 0 walking. keichan, by contrast, has 17 walking out of 52 full-body. And most of those were originally “walking / motion character illustrations” that didn’t even carry a standing tag. So v3’s standing cleanup only touched the tip of the iceberg.

The source of “legs raised / bent” was these 17 walking (mid-stride = one leg forward/up) + leg up / curtsey / squat. All of it had been baked into the trigger. It wasn’t a standing-tag problem — the full-body pose distribution the trigger absorbed was the problem.

v4: subtracting 36 posed full-body images

The fix is clear. Cut the posed full bodies.

  • Cut 36: walking 17 + squatting / leg up / curtsey / contrapposto / legs apart + unverified full bodies
  • Keep 43: 25 bust-ups (the core of identity) + 1 upright back view + 7 verified clean upright clothed full bodies + 10 upright turnaround

79 → 43 images. The design principle is “leave pose to the base (Anima); the LoRA only learns identity” (taking v2’s lesson “don’t include what the base can already produce” to its conclusion). Since the base can produce both standing and walking, there’s no need to bake pose into the trigger. It mirrors kanachan’s lean profile.

Result: zero ×, upright on standing

I baked v4 under the same conditions and verified.

epochv3v4
ep30○2 △2 ×4○4 △4 ×0
ep60○1 ×7○6 △2 ×0
ep90○6 △2 ×0
ep120○6 △2 ×0
ep150○6 △2 ×0

keichan v4 standing score trend (vs v3)

v4 is zero × across all epochs. The remaining △2 is just the 3/4 shot being a cowboy shot each time, where the legs are cropped out and can’t be judged — not a defect. Every judgeable composition (front, side, back) is ○. Codex too stated at ep60: “it has become a LoRA that, on standing, extends both legs straight and stands naturally upright.

It’s the complete opposite of v3 collapsing to ×7 at ep60. And because v4 has no breaking element (pose signal) from the start, it never broke from ep30→150 and didn’t degrade even when baked deep.

Lining up v3 and v4 at the same ep60 and the same composition set (front/side/3-4/behind × 2 seed) makes it obvious. The top row (v3) bends the legs / walking stance; the bottom row (v4) stands straight.

v3 vs v4 ep60 pose-check grid comparison (top = v3 posed / bottom = v4 upright)

v4 ep150 pose-check grid (front/side/3-4/behind)

Identity (color, face, blue ribbon, intakes) locks early at ep30 like v2 and stays stable to ep150. The intakes stay moderate (the ceiling for an element the base is weak at, same as v2). The best ep is ep120–150.

v4 faces per ep (identity convergence ep30→150, built-in samples)

Subtract rather than add

  • A character LoRA’s broken pose is fixed by subtracting data, not adding it. Just adding upright samples (v3’s 10 added turnaround) was a drop in the bucket against 17 walking images.
  • A generic tag (standing) is a receptacle; pose is carried by the trigger. Tag cleanup won’t fix it. You have to change the image distribution the trigger absorbs = physically reduce the posed full bodies.
  • “Don’t include what the base can produce; bake only identity.” Leave pose to the base and have the LoRA concentrate on the character’s signature points (face, hair, accessories). As a result the material gets lighter (79→43). “Padding the count” actually does harm.
  • If you want dynamic poses, specify them at inference and the base produces them. Putting posed material into training and polluting the default is a loss.

To draw the line: “fixing by subtracting” only holds when the base can produce that pose. Here the base produces both standing and an upright stance fine, so I just had to subtract the extra poses baked into the trigger (you could also brute-force it with repeats or strength, but subtracting was the quickest). Conversely, poses the base can’t produce (low-angle) or shapes it’s weak at (intakes) have to be exaggerated and added, not subtracted. Whether you subtract or add is decided by the base’s coverage.

The “data-design guidelines (v3 plan)” I laid out in v2 are validated by this v4. Next, I’m testing whether this lean keichan and a similarly lean kanachan can be baked into two characters in one LoRA (separate article).