Pulling 6 Decoration-Laden Samples from the LoRA Training Set Made the Angry Sweat Drops Disappear
Contents
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 かなちゃんカラー/:
| File | Reason |
|---|---|
kanachan_nervous.png | Visible sweat drops on face and neck. The culprit identified last time |
kanachan_drunk.png | Drool drawn from open mouth down to the neck |
kanachan_disgusted.png | Greenish “queasy” tint on the face |
kanachan_yandere.png | Lost eye highlights + dark shadow. Overlaps too much with the base model’s archetypal expression |
kanachan_solid_circle_eyes.png | Caption says solid circle eyes but the image shows normal eyes (caption/image mismatch) |
kanachan_suprised.png | Same 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.
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.
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.
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.
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).
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.
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:
| Item | Value |
|---|---|
| Checkpoint | WAI-Illustrious v17 + new LoRA kanachan_v17_dim16_clean.safetensors (final epoch) |
| LoRA strength | model 1.0 / clip 0.8 |
| steps / cfg | 30 / 6 |
| sampler / scheduler | euler_a / karras |
| denoise | 1.0 |
| Resolution | 832×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).
Bust-up angry (compare with the sd-scripts angry samples above).
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.