Tech 7 min read

Pulling 6 Decoration-Laden Samples from the LoRA Training Set Made the Angry Sweat Drops Disappear

IkesanContents

At the end of the previous LoRA experiment, I traced the sweat drops on ep08 angry back to the kanachan_nervous.png training sample and concluded that “cleaning up the training source is the real fix.” This article is the experiment that tests whether actually doing that cleanup works.

The training config is identical to last time. The only change is removing 6 images from the training set. The question is whether that’s enough to make the sweat go away.

The 6 samples I removed and why

Excluded from かなちゃんカラー/:

FileReason
kanachan_nervous.pngVisible sweat drops on face and neck. The culprit identified last time
kanachan_drunk.pngDrool drawn from open mouth down to the neck
kanachan_disgusted.pngGreenish “queasy” tint on the face
kanachan_yandere.pngLost eye highlights + dark shadow. Overlaps too much with the base model’s archetypal expression
kanachan_solid_circle_eyes.pngCaption says solid circle eyes but the image shows normal eyes (caption/image mismatch)
kanachan_suprised.pngSame caption as surprised, just a duplicate from a filename typo

Sweat, drool, color effects, and eye shadows are exactly the categories I called out last time as “decorations that get bound to the character concept on face close-ups.” solid_circle_eyes is noise from a caption that doesn’t match the image. suprised is a typo duplicate of surprised with identical caption — no benefit to keeping it just for sample count.

53 images, retrained. The only deltas from the previous run: output_name changed to kanachan_v17_dim16_clean to keep the file separate from the old V17, and sample_prompts got an angry prompt (with sweat, sweat drop in the negative for tracking) and a full body prompt added.

Training steps dropped from 5,900 to 5,300, wall time on the 4090 dropped from 51 minutes to 41 minutes. Total cost is still about $1.

ep08 angry: sweat completely gone

The comparison images use the same generation conditions as the previous article (ComfyUI, seed=42, cfg=7, steps=28, sampler=euler_a, generated at 1024×1024, then face-aligned with lbpcascade_animeface). Left to right: training source / old V17 ep08 / new V17 ep08.

training source angry old V17 ep08 angry new V17 clean ep08 angry

The sweat drops that appeared on the forehead, temples, neck, and hair in old V17 ep08 are completely absent in new V17 ep08 — not a single drop. The “kanachan + sweat got bound through the nervous sample” hypothesis is confirmed.

The new V17 still gets pulled toward the base model’s anime angry archetype with bared teeth and exaggerated expression — same tendency as before. But the decorative sweat itself is no longer in the source, so the path for it to leak in is gone. That makes it clear that “expression intensity interpretation” and “decoration leakage” are two separate axes. The previous article was looking at both mixed together, which made the analysis impossible to separate.

angry across epochs

In the old V17, ep05/06 were almost sweat-free, ep07 started showing small drops at the temples, and ep08 spread it to the neck and hair (verified in the previous article). How does the new V17 clean look at the same epochs? Left to right: ep05 / ep06 / ep07 / ep08.

ep05 angry ep06 angry ep07 angry ep08 angry

No sweat on any of ep05 through ep08. Last time I observed that “the LoRA pulls in adjacent concepts more strongly as the effect strengthens.” If sweat isn’t on the adjacency side anymore, the strengthening effect has nothing to pull in — that’s exactly what shows here.

ep06 produced “closed-mouth restrained anger” (bonus finding)

In the previous article I wrote: “None of the epochs reproduce the closed-mouth restrained anger from the training source. With only 59 images of training data, the character-specific emotion suppression style isn’t picked up — the base model’s anime anger archetype wins.” The new V17 ep06 overturned that.

new V17 clean ep06 angry

Closed mouth, furrowed brow, restrained displeasure. It only shows up at ep06 — ep07 and ep08 go back to bared teeth — so it doesn’t always appear. But the old V17 never observed this expression once across all 10 epochs, so even a single epoch hitting it is meaningful.

Removing the decorative elements (sweat, color effects, eye shadows) likely reduced the adjacent concepts being pulled in by the angry prompt. With decorations mixed in, the LoRA learns “kanachan + anger + sweat + strong color + open mouth” as one bundle, and the bundle gets denser as epochs progress. With fewer components in the bundle, there might be more room for an in-between state — neither base-model-like nor source-like — to surface mid-training.

smile portrait: face fidelity preserved

The 6 removed samples should not have damaged character likeness, but it’s worth confirming.

training source smile old V17 ep08 smile new V17 clean ep08 smile

Face fidelity is comparable to old V17. The 6 removed samples were emotion-heavy expressions; the neutral ones — smile, wink, closed_eyes — are still in. The core samples that define the character’s facial features are preserved.

smile across epochs

For checking how stable character formation is. Left to right: ep01 / ep02 / ep03 / ep04, then ep05 / ep06 / ep07 / ep08, ending with ep09 / final (ep10).

ep01 smile ep02 smile ep03 smile ep04 smile ep05 smile ep06 smile ep07 smile ep08 smile ep09 smile final smile

The character is mostly there by ep01 (same trend as before). The side ponytail and blue scrunchie lock in by ep02, and ep03–ep04 round it out. From ep05 onward the differences are minimal — the perceived peak is anywhere in ep06–ep08, depending on taste.

full body school uniform

I added a full body, school uniform prompt to sample_prompts, so I can also track whole-body balance per epoch.

new V17 clean ep08 full body

The standard combination — blazer + red tie + pleated skirt + knee-high socks — comes out reliably. As I noted in the previous article, full body shots are a domain where decorations don’t really interfere, so the 6-sample removal has no effect here.

Worth noting: in this generation the side ponytail (which should be on the left side, viewer’s right) ended up on the wrong side. This isn’t specific to the new V17 clean — it’s a known SDXL LoRA quirk where left/right occasionally flips, fixable with a different seed. Has nothing to do with the source cleanup, so I left the image as-is.

The “rough” look isn’t the LoRA, it’s the generation settings

The new V17 clean images shown above are all sd-scripts internal samples generated automatically during training, and they have a slightly rough quality at the hair edges and skin shading. To avoid giving the impression that the LoRA itself is the problem, here’s what the same checkpoint produces in ComfyUI with realistic generation settings.

The settings:

ItemValue
CheckpointWAI-Illustrious v17 + new LoRA kanachan_v17_dim16_clean.safetensors (final epoch)
LoRA strengthmodel 1.0 / clip 0.8
steps / cfg30 / 6
sampler / schedulereuler_a / karras
denoise1.0
Resolution832×1216 (portrait)
Positive (key parts)kanachan, left side ponytail, medium hair, double parted bangs, ahoge, pure white collared shirt, red necktie, navy skirt, sheer pantyhose, ... plus masterpiece, best quality, amazing quality, absurdres
Negative (key parts)Standard quality negatives plus explicit exclusions for off-character hairstyles like right side ponytail / twin tails / high ponytail / two side up, plus text-related tags like (text:1.5) / signature / watermark

Bust-up smile (compare with the sd-scripts smile samples above).

ComfyUI proper smile

Bust-up angry (compare with the sd-scripts angry samples above).

ComfyUI proper angry

Full body.

ComfyUI proper full body

The rough hair and uniform texture from the training samples is gone. Skin showing through the sheer pantyhose, gloss on the loafers, shading on the ribbon tie — all come through cleanly. The “rough” look isn’t a LoRA problem; it was just the combination of sd-scripts’ built-in lightweight sampling path, overly simple prompts, and no scheduler.