The question. Text prompts control what an image shows far better than how it feels. Can Stable Diffusion be steered cheaply toward a target emotion, and which conditioning route works best?
Approaches
Three ways to condition Stable Diffusion 1.5 on eight emotions (amusement, anger, awe, contentment, disgust, excitement, fear, sadness), trained on EmoSet, with RAF-DB for portraits:
- Learned emotion tokens with LoRA. Eight new tokens such as
<awe>are learned jointly with LoRA adapters (rank 32) on the UNet’s attention layers. - Classifier guidance. A noise-aware classifier on the diffusion latents steers sampling with its gradients, with no change to the UNet.
- Multimodal conditioning. BLIP captions combined with EmotionCLIP emotion embeddings, with an optional emotion-classifier loss during training.
Results
- Efficient. LoRA trains 0.4% of the model’s parameters, which makes training 15× faster and uses 80% less memory than full fine-tuning.
- Measured. Every approach is scored by an emotion classifier on its own generations (EmotionCLIP for scenes, a ViT for portraits), with confusion matrices and per-emotion accuracy.