Warning: This workflow is heavily outdated and most stuff has been changed in the past 6 months. I'm leaving the post up as a general reference but I currently don't have time to update it. If you are interested in how I train the LoRAs, please let me know, so I know its not a waste of time to update this post. Thanks and love you guys <3
Iâve been getting a lot of questions about how I manage to create so many LoRAs, especially with multiple outfits per character, so I thought Iâd just write up my full workflow in one place.
Hopefully this helps anyone whoâs curious or trying to build something similar themselves!
TLDR at the end!
The single most important part of my workflow is a custom app I wrote using Streamlit. Honestly, without it, I couldnât do even half of what Iâm doing right now. The app acts as a central hub where almost everything happens: creating screencaps, managing a database, assigning images, defining prompts, starting trainings, and even preparing uploads for Civitai. If thereâs one piece of advice I can give right away, itâs this: reduce friction as much as possible. Every manual step you can automate will save you hours in the long run.
The first step is creating screencaps for a full anime. I wonât explain how I do that in detail, for obvious reasons, but thereâs plenty of information out there if youâre willing to research it. This part is mostly about getting a large and consistent image base to work with.
Once I have the screencaps, I use a script to split them into visually similar clusters. These clusters arenât perfect, but theyâre good enough as a starting point. After that, I manually merge clusters that belong to the same character into one large character cluster. This step still needs human judgment, and I donât think thatâs avoidable (yet).
That big character cluster then gets split again into smaller clusters. The goal here is to separate different outfits. In theory, this should be easy. In practice, this is the slowest and most annoying part of the entire workflow. If youâre struggling with outfit separation: youâre not doing anything wrong. Itâs genuinely hard, and I still havenât found a perfect solution for it.
If an outfit ends up with too few images, I make a call. If itâs just a single, uninteresting outfit, I usually drop it. If the outfit is visually distinct or important for the character, Iâll use image augmentation-ui to expand the dataset. This is a great way to make smaller outfits viable without overfitting.
Next comes tagging. I tag all images using PixAI Tagger v0.9 and then look at the tags per outfit. Seeing how often a tag actually appears makes prompt creation much easier and more consistent. This is also where I clean up bad tags and add trigger words for each outfit.
This trigger-word step is extremely important. Models get confused very easily when outfits are similar. A shirt with white thighhighs and a tank top with white thighhighs might share most of their tags, and the model will happily mix them together. By giving each outfit its own trigger word, youâre basically telling the model: âThese are separate concepts. Donât blend them.â
A good way to think about it is folders. Instead of throwing all outfit images into one giant folder, youâre giving the model multiple clearly labeled folders. When you later ask for one specific outfit, the model knows exactly where to look.
Once the base character prompt and all outfit prompts are ready, training starts. I use a direct connection from my Streamlit app to kohya_ss, which lets me queue multiple trainings and run them automatically. The number of training steps is calculated based on the number of images. This is important, because a character with 2,000 images needs very different settings than one with only 10.
Important note: since today (12/28/25) I am using kohya_ss on a wsl2 Linux subsystem to make use of triton, which is.. well lets just say the windows support is limited. Training times CAN be reduced, depending on your GPU. In my case, the 5090 is now training more than 3x faster as it did on windows. If you are building a streamlit app, don't worry. The streamlit app can seamlessly connect to the wsl2 system, which also means, that lora training queueing is still possible. Sidenote: Streamlit CAN be built directly in wsl2, but I recommend building it in windows and then applying scripts to the wsl2 system. Streamlit has too many dependencies that are either unstable or single-user maintained on linux.
After training, I generate 30 images using different prompts and outfits. I also include a few âbasicâ prompted outfits to show that the model isnât locked into only the trained ones. From those 30 images, I manually select the 20 best and move them into a separate folder together with the LoRA. Thatâs also why some preview images might look a bit off. Theyâre not perfect, but theyâre still the best representatives compared to the ones that got scrapped.
If a model doesnât turn out the way I want, I retrain it. This can happen for many reasons: too little data, too many outfits, very unique clothing, or just bad luck. Thanks to automatic step calculation, I can adjust a step multiplier manually. Depending on how broken the LoRA is, I usually land somewhere between 1.3x and 1.7x steps, and I never go beyond 2x.
Finally, I queue the upload to Civitai, double-check the model and prompts, save it to the right collection, and make sure the first image is PG or PG-13. Otherwise, the model wonât count toward the creator score. No idea why thatâs a thing, but it is what it is, so I work with it.
TLDR
Create screencaps for a full anime
Automatically cluster screencaps by visual similarity
Manually merge clusters into one cluster per character
Split each character cluster into smaller clusters to separate outfits
Drop unimportant outfits or augment small ones using image-augmentation-ui
Tag all images with PixAI Tagger v0.9
Clean up tags and define trigger words per outfit
Train the base character + outfit triggers via kohya_ss (steps auto-calculated by image count)
Generate test images with all outfits and some generic prompts
Manually select the best preview images
Retrain with higher step multiplier if needed (â1.3xâ1.7x, max 2x)
Upload to Civitai, ensure PG/PG-13 first image, add to collection
Iâll keep updating this post if my workflow changes or improves. This isnât âthe perfect wayâ, itâs just what currently works best for me.
If youâre experimenting with your own setup, take whatâs useful, ignore the rest, and adapt it to your needs.
For those asking if I can share the files of my streamlit app; I can't just spill all the beans ;) streamlit is easy to understand and I've set up everything in less than 3 months without much prior knowledge, I believe in all of you, you can do it too!
And if youâve got questions, feel free to ask!
Changelog
12/28/2025: changed my tagging setup from deepdanbooru to pixai tagger, thanks to the helpful comment <3
12/28/2025: added kohya_ss switch to wsl2/linux as a note


