

# Boring Embeddings Quick Start

These Stable Diffusion embeddings capture what it means for an image to be uninteresting. 
This is useful because it allows you to instruct your model NOT to produce images that look uninteresting. 
If you're using the [Automatic1111 Stable Diffusion WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui), 
just download one of the pt files into your stable-diffusion-webui\embeddings directory and use 
the embedding's name in your NEGATIVE prompt for more interesting outputs.  
<table>
  <tr>
    <td style="text-align: center;"><div style="text-align: center;"><img src="boring_folder.png" alt="Download a .pt file to stable-diffusion-webui\embeddings" style="max-height: 300px; display: inline-block;"></div></td>
    <td style="text-align: center;"><div style="text-align: center;"><img src="boring_automatic1111_interface.png" alt="Type the embedding's name (without the .pt extension) in your negative prompt" style="max-height: 300px; display: inline-block;"></div></td>
  </tr>
  <tr>
    <td style="text-align: center;"><strong style="font-size: larger;">Download a .pt file to stable-diffusion-webui\embeddings</strong></td>
    <td style="text-align: center;"><strong style="font-size: larger;">Type the embedding's name (without the .pt extension) in your negative prompt</strong></td>
  </tr>
</table>
<br>
<br>


## Model Description

The motivation for Boring embeddings is that negative embeddings like [Bad Prompt](https://huggingface.co/datasets/Nerfgun3/bad_prompt), 
whose training is described [here](https://www.reddit.com/r/StableDiffusion/comments/yy2i5a/i_created_a_negative_embedding_textual_inversion/) 
depend on manually curated lists of tags describing features people do not want their images to have, such as "deformed hands".  Some problems with this approach are:  
* Manually compiled lists will inevitably be incomplete.  
* Models might not always understand the tags well due to a dearth of training images labeled with these tags.  
* It can only capture named concepts.  If there exist unnamed yet visually unappealing concepts that just make an image look wrong, but for reasons that cannot be succinctly explained, they will not be captured by a list of tags.  

To address these problems, we employ textual inversion on a set of images automatically extracted from popular art sites 
such as e621.net, derpibooru.org, and danbooru.donmai.us.  Each of these sites is a rich resource of millions of 
hand-labeled artworks which allow users to express their approval of an artwork by either up-voting it or marking it as a favorite. 
The Boring embeddings were specifically trained on artworks automatically selected from these sites according to the criteria 
that no user has ever favorited them, and they have 0 or only a very small number of up or down votes.  The Boring embeddings 
thus learned to produce uninteresting low-quality images, so when they are used in the negative prompt of a stable diffusion image generator, 
the model avoids making mistakes that would make the generation more boring.  
<br>
<br>


![Hamburger Comparison](hamburger_comparison.jpg)
<br>
<br>


## Versions

### **boring_e621**:
- **Description**: The first proof of concept of this idea.  It is less refined than the other versions, but its less-intense effect might still be desirable.
- **Training Data Description**: A random selection of about 200 several-month-old images from e621.net having 0 favorites, fewer than 10(ish) up or down votes, and not having the tag "comic".
- **Model Trained On**: [YE18](https://huggingface.co/Doubleyobro/yiffy-e18).
- **Use Case**: Legacy.  Maybe still useful on Stable Diffusion 1.4 or 1.5-based models if you want a less intense effect.
- **Trigger Word**: by boring_e621
<br>


### **boring_e621_v4**:
- **Description**: Extends the basic Boring embedding idea with several improvements including:
  - Tweaks to how data was selected for inclusion.
  - Initialized with text "by <average vector representation of 100 low-scoring e621 artist names>" (which means that you should not have to use the word "by" to trigger it anymore)
- **Training Data Description**: About 600 several-month-old images from e621.net having 0 favorites and a score of 0.  (Comic pages are no longer excluded)
- **Model Trained On**: [YE18](https://huggingface.co/Doubleyobro/yiffy-e18).
- **Use Case**: The most general purpose embedding.  Probably the best Boring embedding for most SD 1.4 or 1.5 based models.
- **Trigger Word**: boring_e621_v4
<br>


### **boring_e621_fluffyrock_v4**:
- **Description**: A version of boring_e621_v4 trained on a different popular model that understands e621 tags.
- **Training Data Description**: Identical training set to boring_e621_v4.
- **Model Trained On**: [fluffyrock-576-704-832-960-1088-lion-low-lr-e27](https://huggingface.co/lodestones/furryrock-model-safetensors).
- **Use Case**: Best for models having Fluffyrock in their ancestry, but might not work well on versions with "v-pred" in the name.
- **Trigger Word**: boring_e621_fluffyrock_v4
<br>


### **boring_pony_v1**:
- **Description**: A proof of concept using a dataset collected from derpibooru.org and trained on a model that understands derpibooru tags.
- **Training Data Description**: About 200 several-month-old images from derpibooru.org having 0 favorites, a score of <= 0, and fewer than 5 total up or down votes.
- **Model Trained On**: [Pony Diffusion V4](https://huggingface.co/AstraliteHeart/pony-diffusion-v4)
- **Use Case**: None yet.  It performs better on Pony Diffusion V4 than this model's in-built score-based negative-embedding-like tag (derpibooru_p_low), but less well than boring_e621_v4.
- **Trigger Word**: boring_pony_v1
<br>


### **boring_sdxl_v1**:
- **Description**: An sdxl embedding hacked together from just boring_e621_fluffyrock_v4 (the clip_l component), and the 0 vector (the clip_g component).  Made with [this tool](https://huggingface.co/spaces/FoodDesert/Embedding_Converter).
- **Training Data Description**: n/a
- **Model Trained On**: n/a
- **Use Case**: Works better on [Pony Diffusion V6](https://civitai.com/models/257749/pony-diffusion-v6-xl) than on the base sdxl model.
- **Trigger Word**: boring_sdxl_v1
<br>
<br>


# Bias, Risks, and Limitations
* Using these negative embeddings sacrifices some fidelity to the prompt in exchange for improved overall quality.  For example, characters in the image may disappear or change eye/skin color.
* Using these negative embeddings may introduce unexpected or undesired content into the image to make it look less boring.
* Unlike other negative embeddings, the Boring embeddings are not intended to fix problems like extra limbs or deformed hands.
<br>
<br>


# Evaluation

To qualitatively illustrate how well the Boring embeddings have learned to improve image quality, we apply them to a small set of simple sample prompts using the base Stable Diffusion 1.5 model.

![Performance on Simple Prompts](comparison.jpg)

As we can see, putting these embeddings in the negative prompt yields a more delicious burger, a more vibrant and detailed landscape, a prettier pharoah, and a more 3-d-looking aquarium.
Hyperparameters were tuned based on manual evaluations of grids like these.
<br>


{"license": "apache-2.0", "tags": ["textual inversion embeddings", "image-generation", "stable diffusion", "AI Art"], "title": "Boring_Embeddings"}
textual inversion embeddings image-generation stable diffusion AI Art license:apache-2.0 region:us
TAGS
#textual inversion embeddings #image-generation #stable diffusion #AI Art #license-apache-2.0 #region-us 

Boring Embeddings Quick Start
=============================


These Stable Diffusion embeddings capture what it means for an image to be uninteresting.
This is useful because it allows you to instruct your model NOT to produce images that look uninteresting.
If you're using the Automatic1111 Stable Diffusion WebUI,
just download one of the pt files into your stable-diffusion-webui\embeddings directory and use
the embedding's name in your NEGATIVE prompt for more interesting outputs.



  

  

Model Description
-----------------


The motivation for Boring embeddings is that negative embeddings like Bad Prompt,
whose training is described here
depend on manually curated lists of tags describing features people do not want their images to have, such as "deformed hands". Some problems with this approach are:


* Manually compiled lists will inevitably be incomplete.
* Models might not always understand the tags well due to a dearth of training images labeled with these tags.
* It can only capture named concepts. If there exist unnamed yet visually unappealing concepts that just make an image look wrong, but for reasons that cannot be succinctly explained, they will not be captured by a list of tags.


To address these problems, we employ textual inversion on a set of images automatically extracted from popular art sites
such as URL, URL, and URL. Each of these sites is a rich resource of millions of
hand-labeled artworks which allow users to express their approval of an artwork by either up-voting it or marking it as a favorite.
The Boring embeddings were specifically trained on artworks automatically selected from these sites according to the criteria
that no user has ever favorited them, and they have 0 or only a very small number of up or down votes. The Boring embeddings
thus learned to produce uninteresting low-quality images, so when they are used in the negative prompt of a stable diffusion image generator,
the model avoids making mistakes that would make the generation more boring.  



!Hamburger Comparison
  

  



Versions
--------


### boring\_e621:


* Description: The first proof of concept of this idea. It is less refined than the other versions, but its less-intense effect might still be desirable.
* Training Data Description: A random selection of about 200 several-month-old images from URL having 0 favorites, fewer than 10(ish) up or down votes, and not having the tag "comic".
* Model Trained On: YE18.
* Use Case: Legacy. Maybe still useful on Stable Diffusion 1.4 or 1.5-based models if you want a less intense effect.
* Trigger Word: by boring\_e621


### boring\_e621\_v4:


* Description: Extends the basic Boring embedding idea with several improvements including:
	+ Tweaks to how data was selected for inclusion.
	+ Initialized with text "by <average vector representation of 100 low-scoring e621 artist names>" (which means that you should not have to use the word "by" to trigger it anymore)
* Training Data Description: About 600 several-month-old images from URL having 0 favorites and a score of 0. (Comic pages are no longer excluded)
* Model Trained On: YE18.
* Use Case: The most general purpose embedding. Probably the best Boring embedding for most SD 1.4 or 1.5 based models.
* Trigger Word: boring\_e621\_v4


### boring\_e621\_fluffyrock\_v4:


* Description: A version of boring\_e621\_v4 trained on a different popular model that understands e621 tags.
* Training Data Description: Identical training set to boring\_e621\_v4.
* Model Trained On: fluffyrock-576-704-832-960-1088-lion-low-lr-e27.
* Use Case: Best for models having Fluffyrock in their ancestry, but might not work well on versions with "v-pred" in the name.
* Trigger Word: boring\_e621\_fluffyrock\_v4


### boring\_pony\_v1:


* Description: A proof of concept using a dataset collected from URL and trained on a model that understands derpibooru tags.
* Training Data Description: About 200 several-month-old images from URL having 0 favorites, a score of <= 0, and fewer than 5 total up or down votes.
* Model Trained On: Pony Diffusion V4
* Use Case: None yet. It performs better on Pony Diffusion V4 than this model's in-built score-based negative-embedding-like tag (derpibooru\_p\_low), but less well than boring\_e621\_v4.
* Trigger Word: boring\_pony\_v1


### boring\_sdxl\_v1:


* Description: An sdxl embedding hacked together from just boring\_e621\_fluffyrock\_v4 (the clip\_l component), and the 0 vector (the clip\_g component). Made with this tool.
* Training Data Description: n/a
* Model Trained On: n/a
* Use Case: Works better on Pony Diffusion V6 than on the base sdxl model.
* Trigger Word: boring\_sdxl\_v1


Bias, Risks, and Limitations
============================


* Using these negative embeddings sacrifices some fidelity to the prompt in exchange for improved overall quality. For example, characters in the image may disappear or change eye/skin color.
* Using these negative embeddings may introduce unexpected or undesired content into the image to make it look less boring.
* Unlike other negative embeddings, the Boring embeddings are not intended to fix problems like extra limbs or deformed hands.


Evaluation
==========


To qualitatively illustrate how well the Boring embeddings have learned to improve image quality, we apply them to a small set of simple sample prompts using the base Stable Diffusion 1.5 model.


!Performance on Simple Prompts


As we can see, putting these embeddings in the negative prompt yields a more delicious burger, a more vibrant and detailed landscape, a prettier pharoah, and a more 3-d-looking aquarium.
Hyperparameters were tuned based on manual evaluations of grids like these.
  




### boring\_e621:


* Description: The first proof of concept of this idea. It is less refined than the other versions, but its less-intense effect might still be desirable.
* Training Data Description: A random selection of about 200 several-month-old images from URL having 0 favorites, fewer than 10(ish) up or down votes, and not having the tag "comic".
* Model Trained On: YE18.
* Use Case: Legacy. Maybe still useful on Stable Diffusion 1.4 or 1.5-based models if you want a less intense effect.
* Trigger Word: by boring\_e621 ### boring\_e621\_v4:


* Description: Extends the basic Boring embedding idea with several improvements including:
	+ Tweaks to how data was selected for inclusion.
	+ Initialized with text "by <average vector representation of 100 low-scoring e621 artist names>" (which means that you should not have to use the word "by" to trigger it anymore)
* Training Data Description: About 600 several-month-old images from URL having 0 favorites and a score of 0. (Comic pages are no longer excluded)
* Model Trained On: YE18.
* Use Case: The most general purpose embedding. Probably the best Boring embedding for most SD 1.4 or 1.5 based models.
* Trigger Word: boring\_e621\_v4 ### boring\_e621\_fluffyrock\_v4:


* Description: A version of boring\_e621\_v4 trained on a different popular model that understands e621 tags.
* Training Data Description: Identical training set to boring\_e621\_v4.
* Model Trained On: fluffyrock-576-704-832-960-1088-lion-low-lr-e27.
* Use Case: Best for models having Fluffyrock in their ancestry, but might not work well on versions with "v-pred" in the name.
* Trigger Word: boring\_e621\_fluffyrock\_v4 ### boring\_pony\_v1:


* Description: A proof of concept using a dataset collected from URL and trained on a model that understands derpibooru tags.
* Training Data Description: About 200 several-month-old images from URL having 0 favorites, a score of <= 0, and fewer than 5 total up or down votes.
* Model Trained On: Pony Diffusion V4
* Use Case: None yet. It performs better on Pony Diffusion V4 than this model's in-built score-based negative-embedding-like tag (derpibooru\_p\_low), but less well than boring\_e621\_v4.
* Trigger Word: boring\_pony\_v1 ### boring\_sdxl\_v1:


* Description: An sdxl embedding hacked together from just boring\_e621\_fluffyrock\_v4 (the clip\_l component), and the 0 vector (the clip\_g component). Made with this tool.
* Training Data Description: n/a
* Model Trained On: n/a
* Use Case: Works better on Pony Diffusion V6 than on the base sdxl model.
* Trigger Word: boring\_sdxl\_v1


Bias, Risks, and Limitations
============================


* Using these negative embeddings sacrifices some fidelity to the prompt in exchange for improved overall quality. For example, characters in the image may disappear or change eye/skin color.
* Using these negative embeddings may introduce unexpected or undesired content into the image to make it look less boring.
* Unlike other negative embeddings, the Boring embeddings are not intended to fix problems like extra limbs or deformed hands.


Evaluation
==========


To qualitatively illustrate how well the Boring embeddings have learned to improve image quality, we apply them to a small set of simple sample prompts using the base Stable Diffusion 1.5 model.


!Performance on Simple Prompts


As we can see, putting these embeddings in the negative prompt yields a more delicious burger, a more vibrant and detailed landscape, a prettier pharoah, and a more 3-d-looking aquarium.
Hyperparameters were tuned based on manual evaluations of grids like these.
TAGS
#textual inversion embeddings #image-generation #stable diffusion #AI Art #license-apache-2.0 #region-us 
 ### boring\_e621:


* Description: The first proof of concept of this idea. It is less refined than the other versions, but its less-intense effect might still be desirable.
* Training Data Description: A random selection of about 200 several-month-old images from URL having 0 favorites, fewer than 10(ish) up or down votes, and not having the tag "comic".
* Model Trained On: YE18.
* Use Case: Legacy. Maybe still useful on Stable Diffusion 1.4 or 1.5-based models if you want a less intense effect.
* Trigger Word: by boring\_e621 ### boring\_e621\_v4:


* Description: Extends the basic Boring embedding idea with several improvements including:
	+ Tweaks to how data was selected for inclusion.
	+ Initialized with text "by <average vector representation of 100 low-scoring e621 artist names>" (which means that you should not have to use the word "by" to trigger it anymore)
* Training Data Description: About 600 several-month-old images from URL having 0 favorites and a score of 0. (Comic pages are no longer excluded)
* Model Trained On: YE18.
* Use Case: The most general purpose embedding. Probably the best Boring embedding for most SD 1.4 or 1.5 based models.
* Trigger Word: boring\_e621\_v4 ### boring\_e621\_fluffyrock\_v4:


* Description: A version of boring\_e621\_v4 trained on a different popular model that understands e621 tags.
* Training Data Description: Identical training set to boring\_e621\_v4.
* Model Trained On: fluffyrock-576-704-832-960-1088-lion-low-lr-e27.
* Use Case: Best for models having Fluffyrock in their ancestry, but might not work well on versions with "v-pred" in the name.
* Trigger Word: boring\_e621\_fluffyrock\_v4 ### boring\_pony\_v1:


* Description: A proof of concept using a dataset collected from URL and trained on a model that understands derpibooru tags.
* Training Data Description: About 200 several-month-old images from URL having 0 favorites, a score of <= 0, and fewer than 5 total up or down votes.
* Model Trained On: Pony Diffusion V4
* Use Case: None yet. It performs better on Pony Diffusion V4 than this model's in-built score-based negative-embedding-like tag (derpibooru\_p\_low), but less well than boring\_e621\_v4.
* Trigger Word: boring\_pony\_v1 ### boring\_sdxl\_v1:


* Description: An sdxl embedding hacked together from just boring\_e621\_fluffyrock\_v4 (the clip\_l component), and the 0 vector (the clip\_g component). Made with this tool.
* Training Data Description: n/a
* Model Trained On: n/a
* Use Case: Works better on Pony Diffusion V6 than on the base sdxl model.
* Trigger Word: boring\_sdxl\_v1


Bias, Risks, and Limitations
============================


* Using these negative embeddings sacrifices some fidelity to the prompt in exchange for improved overall quality. For example, characters in the image may disappear or change eye/skin color.
* Using these negative embeddings may introduce unexpected or undesired content into the image to make it look less boring.
* Unlike other negative embeddings, the Boring embeddings are not intended to fix problems like extra limbs or deformed hands.


Evaluation
==========


To qualitatively illustrate how well the Boring embeddings have learned to improve image quality, we apply them to a small set of simple sample prompts using the base Stable Diffusion 1.5 model.


!Performance on Simple Prompts


As we can see, putting these embeddings in the negative prompt yields a more delicious burger, a more vibrant and detailed landscape, a prettier pharoah, and a more 3-d-looking aquarium.
Hyperparameters were tuned based on manual evaluations of grids like these.
TAGS
#textual inversion embeddings #image-generation #stable diffusion #AI Art #license-apache-2.0 #region-us 
### boring\_e621:


* Description: The first proof of concept of this idea. It is less refined than the other versions, but its less-intense effect might still be desirable.
* Training Data Description: A random selection of about 200 several-month-old images from URL having 0 favorites, fewer than 10(ish) up or down votes, and not having the tag "comic".
* Model Trained On: YE18.
* Use Case: Legacy. Maybe still useful on Stable Diffusion 1.4 or 1.5-based models if you want a less intense effect.
* Trigger Word: by boring\_e621### boring\_e621\_v4:


* Description: Extends the basic Boring embedding idea with several improvements including:
	+ Tweaks to how data was selected for inclusion.
	+ Initialized with text "by <average vector representation of 100 low-scoring e621 artist names>" (which means that you should not have to use the word "by" to trigger it anymore)
* Training Data Description: About 600 several-month-old images from URL having 0 favorites and a score of 0. (Comic pages are no longer excluded)
* Model Trained On: YE18.
* Use Case: The most general purpose embedding. Probably the best Boring embedding for most SD 1.4 or 1.5 based models.
* Trigger Word: boring\_e621\_v4### boring\_e621\_fluffyrock\_v4:


* Description: A version of boring\_e621\_v4 trained on a different popular model that understands e621 tags.
* Training Data Description: Identical training set to boring\_e621\_v4.
* Model Trained On: fluffyrock-576-704-832-960-1088-lion-low-lr-e27.
* Use Case: Best for models having Fluffyrock in their ancestry, but might not work well on versions with "v-pred" in the name.
* Trigger Word: boring\_e621\_fluffyrock\_v4### boring\_pony\_v1:


* Description: A proof of concept using a dataset collected from URL and trained on a model that understands derpibooru tags.
* Training Data Description: About 200 several-month-old images from URL having 0 favorites, a score of <= 0, and fewer than 5 total up or down votes.
* Model Trained On: Pony Diffusion V4
* Use Case: None yet. It performs better on Pony Diffusion V4 than this model's in-built score-based negative-embedding-like tag (derpibooru\_p\_low), but less well than boring\_e621\_v4.
* Trigger Word: boring\_pony\_v1### boring\_sdxl\_v1:


* Description: An sdxl embedding hacked together from just boring\_e621\_fluffyrock\_v4 (the clip\_l component), and the 0 vector (the clip\_g component). Made with this tool.
* Training Data Description: n/a
* Model Trained On: n/a
* Use Case: Works better on Pony Diffusion V6 than on the base sdxl model.
* Trigger Word: boring\_sdxl\_v1


Bias, Risks, and Limitations
============================


* Using these negative embeddings sacrifices some fidelity to the prompt in exchange for improved overall quality. For example, characters in the image may disappear or change eye/skin color.
* Using these negative embeddings may introduce unexpected or undesired content into the image to make it look less boring.
* Unlike other negative embeddings, the Boring embeddings are not intended to fix problems like extra limbs or deformed hands.


Evaluation
==========


To qualitatively illustrate how well the Boring embeddings have learned to improve image quality, we apply them to a small set of simple sample prompts using the base Stable Diffusion 1.5 model.


!Performance on Simple Prompts


As we can see, putting these embeddings in the negative prompt yields a more delicious burger, a more vibrant and detailed landscape, a prettier pharoah, and a more 3-d-looking aquarium.
Hyperparameters were tuned based on manual evaluations of grids like these.