This Lora is trained on mostly real images and a few anime/illustration images (~99% to ~1% ratio) to keep it flexible enough to still generate in anime style.
Triggers (as of 3.3):
asian, asian_japanese, asian_chinese, asian_korean, european, european_irish, european_french, european_german, european_italian, african, african_east, african_west, latina, thai, arab, indian, iranian, native_american, polynesianNote: no need to use generalized and specific triggers together (asian and asian_chinese for example)
The lora can be used without triggers as a style lora (example image with tifa, aerith and yuffie in a group hug)Currently the lora supports the following races & ethnicities:
E.Asian (Japanese / Korean / Chinese)
European (General European / Irish / french / german / italian)
African (General african / east / west)
Latina
Thai
Indian
Iranian
Arab
Indigenous American (as of v3.3. Native American in older versions)
Polynesian
The Above list is for version 3.3
Please refer to the list of triggers for the supported tags for older versions
For version 3.3 (both Pony and Illustrious), I decided to try frequency-based tagging instead of the common "prune anything you want the model to generate".
So basically any tag that appears with less than 20% frequency gets pruned, as well as anything above 95% and anything that's insignificant enough to be considered as 'noise' such as 'mole', 'mole on breast', mole on face', etc.
It does make the model slightly less flexible, so possibly pruning under 10/15% could be better.Description
Same as the Illustrious version 3.3
Some things got trained much better than in the Illustrious LoRa, some much worse.
The actual data set for the two is identical.
Pony generates male characters much easier (just '1boy' as opposed to '1boy, male, man' in illustrious), but that may just be the checkpoint I tested with.
FAQ
Comments (21)
Iranian tag gives girls Pink Hair
What did they mean by this?
Would be nice if you could mix race like say, European-Hawiian or Irish-polynesian or nordic-japanese.
You should be able to, there are 2 ways to do it: use 2 races at lower weights or use a |.
So for example: (european:0.5), (polynesian:0.5) or (european | polynesian).
It isn't perfect but it works somewhat, I uploaded a post with some example: https://civitai.com/posts/22299908
I didn't see much difference from african_east to african_west, but it definitely helps with some models that doesn't generate black models. I was trying with one and using 2.5 force in (dark-skinned, very dark skin) and it was still making people white when scaling. It helped - and didn't mess up the style of the model, very good.
Glad it helped you!
The differences between african_east and west are very subtle at the moment because they both share training with 'african' (without east / west), and because east and west variations use about 45 images each for training.
As I find and sort more images between them the east and west variants will be more distinct.
goated racism lora
No idea how you got to that conclusion...
Different races exit. That's just a fact of life.
Fantastic work and for a truly great purpose. Thank you so much for all of your work on this indispensable LoRA.
Thank you! Hope it will be useful for your future generations.
thanks for adding the different african types :)
You're very welcome!
Thanks for taking the time to develop this LoRA. I can clearly see that a lot of effort went into it, and the results definitely help create more authentic-looking ethnicities, which is incredibly valuable.
I’ve seen comments like Xmattar’s calling this a “goated racism LoRA.” While I understand the frustration behind such remarks, I believe the issue is more nuanced, yet solvable. With thoughtful refinement, this LoRA could become a powerful tool for creators who care about representation and complexity.
One thing I’ve noticed while using this LoRA is that the current trigger words tend to collide with the base model’s cultural and geographic associations. SDXL tends to treat tokens like “arab,” “polynesian,” or “european” not just as ethnic descriptors, but also as prompts to inject scenery, attire, and stereotypical motifs.
This creates a situation where the LoRA is supplying a phenotype, while SDXL is supplying the context. The two can blend in ways that feel... misguided.
This isn’t a flaw in the LoRA so much as an artifact of how SDXL was trained. But it does mean the trigger tokens carry more baggage than intended. In practice, the combination of this LoRA + SDXL-based checkpoints can generate a whole stereotypical setting, not just a set of facial features - as if ethnicity must be tethered to a visual cliché.
The LoRA is essentially telling the model:
"This is what an [ethnicity] person looks like,"
while the checkpoint automatically adds:
"Great! I’ll paint them with all of the stereotypes associated with that ethnicity."
If I may offer a suggestion for future updates: a more unique naming scheme, such as fictional or alphanumeric tokens, could completely avoid this problem. You could combine the LoRA shorthand (RE3) with ISO alpha-3 codes, for example:
▻ re3_JPN → Japan
▻ re3_DEU → Germany
▻ re3_IRN → Iran
And for the trickier cases, synthetic tokens work well:
▻ re3_GHA → Ghana (West African)
▻ re3_KEN → Kenya (East African)
▻ re3_SAU → Saudi Arabia (Arab)
▻ re3_INDAM → Indigenous American
These are only suggestions. Despite revealing a few quirks, I genuinely appreciate this LoRA and plan to keep using it. It adds an extra step to my workflow when I need to neutralize the injected bias, but it’s worth it for the expressive range it unlocks.
Thanks for the tip and kind words, I'll keep it in mind.
Originally I used triggers that are somewhat known to the model on purpose since the LoRa was much smaller and I wanted to use concept bleeding to my advantage.
I did however forget about this entirely as the dataset more than tripled since.
@SBlaidd For sure, that totally makes sense. I try to use checkpoint biases to my advantage also. That's absolutely a valid strategy. 💯
I use Illustrious, so I can't say if this bleed is present for everyone else. Although, based on the user submitted content, it doesn't appear to be a huge issue. It may be that I only notice it so often because I prototype my OC characters with very minimal prompts to start with. So, where many people stuff a ton of tokens initially, my initial prompt is literally more along the lines of:
"masterpiece, cinematic, [gender], [hair and eyes], [action], wearing comfortable clothing, {indoors|outdoors}"
This lets me see what biases the model has, so I can selectively add them to the negatives. However, when I use ethnicity tokens - even without the LoRA enabled - I get things like an Indigenous American standing in the wilderness wearing animal hide clothing with red, white, and blue patterns that consist of stars and stripes.
Maybe that's a Fooocus-specific quirk hidden in their "prompt magic," but tokens like indigenous_american seems to be parsed as indigenous + american, and what is generalized comes off as a cultural backhand from SDXL. 😅
Can you please do a new ethnic helper for Z-Image Turbo? I want to move on from Illustrious and Pony Models. Don't forget about Quen Image 2512 and Flux 2. But Z-Image Turbo seems to be the hot one at the moment.
I'll look into it. But I unless it runs and can be trained on a rx 7900 xtx it's unlikely.
@SBlaidd No rush. Most of the community seems to be waiting for the full version anyways.
Now that Z-Image-Base is out, will you be pursuing an ethnic helper for that? Can your hardware train a LoRA for it?
@olternaut Honestly, still too early for me to know. Training times got longer as the dataset grew (and I'm currently messing around with it to optimize the results as much as I can), so until I get to actually try it I won't know for sure (And that will most likely be after I finish with the Illustrious version so if something's wrong I'll know it's not the dataset/captions at least)