Sign In

Toudou Kirin (7+ outfits) | Gakusen Toshi Asterisk (NAI,IL,Pony)

140

979

468

38

Updated: Apr 11, 2025

characteranimewoman

Verified:

SafeTensor

Type

LoRA

Stats

475

420

202

Reviews

Published

Apr 11, 2025

Base Model

Illustrious

Training

Epochs: 20

Usage Tips

Strength: 1

Trigger Words

1girl, purple eyes, purple hair, long hair, hair between eyes, two side up, sidelocks, large breasts

Hash

AutoV2
2A80BDF923

Toudou Kirin is a supporting character from the series Gakusen Toshi Asterisk (The Asterisk War). This LoRA is mostly trained on her anime appearance, which aired in 2015-2016.

I used an experimental method to tag and train this LoRA, aiming for maximum flexibility. It should be very easy to change every aspect about her: hair, clothing, style/colors, body, etc. I have included a technical section at the end for those who are interested.

Usage

There is no activation word. The main tags are 1girl, purple eyes, purple hair, long hair, hair between eyes, two side up, sidelocks, large breasts

Outfits

Not all outfit tags are necessary. Mix and match to obtain the desired effect.

School uniform

school uniform, blazer, button badge, black bowtie, black skirt, pleated skirt, hip armor, black pantyhose, white boots

Note: The button badge (school emblem) is a lost cause. The SEA sweatshop animators did a bad job, and I'm too lazy to manually fix all >250 instances in the dataset. 😥 Inpainting with close-up, button badge and around 0.7 denoise can fix it slightly.

Accessories

This is the bag she uses to transport her katana.

weapon bag, over shoulder, strap, holding strap

When viewed from behind, add: tassel, button badge

School uniform, without blazer

black vest, strapless vest, collared shirt, short sleeves, white shirt, black bowtie, black skirt, pleated skirt, hip armor, black pantyhose, white boots

School uniform, cold weather

aqua poncho, white shirt, long sleeves, black bowtie, black skirt, pleated skirt, hip armor, black pantyhose, white boots

Note: Her white shirt sleeves can sometimes be colored aqua if too much is showing.

Exercise/training outfit

pink jersey, short sleeves, collarbone, button badge, pencil skirt, hip armor, black leggings, white socks, sneakers

Underwear

underwear only, pink bra, bow bra, cleavage, pink panties, bow panties

underwear only, blue bra, bow bra, cleavage, blue panties, bow panties

Naked towel

nude cover, holding towel, hair down, wet hair

Note: Do not use two side up because her hair is down.

Swimsuit

white bikini, white sports bra, button badge, cleavage

Disguise

black hat, rabbit hat, blue shirt, dress shirt, blue necktie, blue skirt, frilled skirt, white pantyhose, black boots, knee boots

Note: Do not use two side up when she is wearing her hat because her hat covers it up.

Formal dress

black dress, strapless dress, collarbone, cleavage, lace choker, wrist scrunchie, hair scrunchie, strappy heels

Note: There were no detailed shots of her shoes in the anime, but it looks like she wears black strappy heels.

Locations

Arena/training room

arena, audience

Swordplay

I strongly suggest reading the Danbooru wiki on the relevant tags. The logic is not intuitive.

  • Katana on hip in sheath, hands not touching it: katana, sheath, sheathed

  • Left hand grasping sheath, right hand about to grasp hilt, blade is not visible, popular quickdraw stance: katana, holding sword, sheath, sheathed, ready to draw, iaidou

  • Left hand grasping sheath, right hand grasping hilt, blade is visible, partially unsheathed: katana, holding sword, sheath, unsheathing

  • Left hand grasping empty sheath, right hand holding katana, fully unsheathed, empty sheath is visible: katana, holding sword, sheath, unsheathed, holding sheath

  • Both hands holding katana, fully unsheathed, sheath is not visible: katana, holding sword, two-handed

Note: holding sheath is specifically for holding an empty sheath. If the katana is sheathed use holding sword instead, even if her hand is not on the hilt.

Other useful combat-related tags:

  • fighting stance

  • battle, clash, sparks

  • slashing, attack trail, smear frame

  • speed lines, motion blur

  • dust cloud, debris

Nerd shit

Here I summarize each step of the process I used to create this LoRA.

I rewatched the anime with mpv and took many PNG screenshots, pausing and framestepping where necessary. I selected the useful images and with Krita I cropped, rotated, and duplicated/mirrored them. For the manga I chose the highest quality sources I could find then cropped and segmented a few good shots of her on a white background. For the official art I checked Danbooru and the promotional site for the anime.

Dataset:

  • 955 anime screenshots

  • 7 manga segments

  • 6 pieces of official art

This is overkill, but I pushed forward just to see what would happen.

I used TagGUI with SmilingWolf/wd-eva02-large-tagger-v3 to autotag, fixed all the mistakes it made, then added all the tags it missed. This took a long time and made me question the utility of autotaggers. It's better to tag it yourself, assuming you can read the Danbooru wiki. The tagging strategy I used is "keep only the tags you want to learn (delete all unwanted tags)" which gave the most flexibility in my tests.

I used the following chaiNNer-org pipelines to cleanup the dataset:

  • Anime: upscale (2x_AnimeJaNai_HD_V3_Compact) → resize to side (2048, shorter side, upscale only, lanczos) → stretch contrast (keep colors, percentile 0.01) → upscale (2x_AniScale2_ESRGAN_i16_110K) → resize to side (4096, shorter size, downscale only, lanczos) → save (lossless webp)

  • Manga: upscale (1x_wtp_descreenton_compact) → change color model (rgb to gray) → resize to side (1024, shorter side, upscale only, lanczos) → stretch contrast (keep colors, percentile 0.01) → upscale (4x-DWTP-ds-esrgan-5) → resize to side (4096, shorter side, downscale only, lanczos) → change color model (rgb to gray) → save (lossless webp)

The reason I keep these high resolution intermediates is so I can redraw or inpaint if necessary. Lossless WebP is smaller than PNG, which saves some space. To generate the final training images I use a custom Python script and GraphicsMagick to downscale and crop the dataset into the closest SDXL buckets because I don't trust OneTrainer to do this correctly. An example: gm convert upscale/anime/mpv-shot0833.webp -resize 832x1216^ -gravity center -crop 832x1216+0+0 -define webp:lossless=true ../v1/anime/mpv-shot0833.webp

I used OneTrainer to train the LoRA. Here are my settings:

  • LoRA: rank 24, alpha 24, dropout probability 0.4

  • Data types: TF32 training, FP32 fallback, FP32 LoRA weight, FP32 base model weight, no overrides, FP16 output

  • Concepts: disable image augmentation, enable tag shuffling

  • Epochs 20, batch size 4, gradient checkpointing, (4760 steps total)

  • Optimizer: Prodigy (beta2=0.99, slice=1, defaults)

  • LR scheduler: constant

  • Text encoder: only train TE1 (CLIP_L), not TE2 (CLIP_G), dropout probability 0.2, stop training at epoch 10

  • Timestep: logit normal distribution, shift 3.15

  • Loss weight function: debiased estimation loss

VRAM usage is 25-30 GB. Training time is 5-7 hours depending on the base checkpoint.

Rank 16 (possibly lower) seems appropriate for a character with only one outfit, but for a character with several outfits a higher rank was required. Alpha as a hyperparameter is a mistake and should always be equal to rank. Never use BF16 precision because it sacrifices too much quality: it uses 7 bits for the significand compared to 10 bits for TF32/FP16. The relatively high dropout probability is what I think improves quality the most, but it works best with a large dataset and a long training time. To prevent overtraining the text encoder I stop it halfway. Everything else is experimental. Source: it came to me in a dream.