My point was that it doesn't actually think like that. That, for example, it doesn't even necessarily draw a human at all when the prompt asks for a doctor; instead, it de-noises and the results moreso emerge than are precisely selected.
That said, you're right that we can add more code to try to guide things.
We could even just brute-force it by just re-generating images over-and-over, or tweaking them after generation, until they match exactly what we wanted.
And I think if you used a perfectly balanced dataset for training, you’d get these guardrails for free because the right probabilities would be baked into the model’s weights.
For example, say someone wants to generate a "US President" -- what would the ideal range of outputs be?
The article checked for just two things: sex (male or female) and skin-tone (I, II, III, IV, V, or VI). To date, all US Presidents have been male, and they were probably mostly skin-tones I or II (not bothering to check), except for Obama who was probably.. like IV or something (still not bothering to check).
So if we run StableDiffusion for a "US President", what would a "perfectly balanced" output look like? Should there be any women? What about the skin-tone distribution?
Also, Obama was a 2-term President, so.. if his skin-tone should somehow affect the distribution, should it have a stronger effect because he was in office for longer than average? Or should all US Presidents have the same effect regardless of their time in office? And either way, why?
https://colab.research.google.com/drive/1dlgggNa5Mz8sEAGU0wF...
You can see them define a custom color loss and apply it simultaneously with the regular diffusion loss. I've actually expanded this notebook to allow regional specification of the custom loss.
It's quite difficult to define a function that detects if an individual has 5 fingers or not. That's the real issue.