|
--- |
|
license: openrail++ |
|
language: |
|
- en |
|
- ja |
|
- es |
|
- zh |
|
widget: |
|
- text: a beautiful illustration of a fantasy forest |
|
tags: |
|
- stable-diffusion |
|
- sygil-diffusion |
|
- text-to-image |
|
- sygil-devs |
|
- finetune |
|
- stable-diffusion-1.5 |
|
inference: true |
|
pinned: true |
|
--- |
|
|
|
|
|
# About the model |
|
----------------- |
|
This model is a fine-tune of Stable Diffusion v1.5, trained on the [Imaginary Network Expanded Dataset](https://github.com/Sygil-Dev/INE-dataset), with the big advantage of allowing the use of multiple namespaces (labeled tags) to control various parts of the final generation. |
|
While current models usually are prone to “context errors” and need substantial negative prompting to set them on the right track, the use of namespaces in this model (eg. “species:seal” or “studio:dc”) stop the model from misinterpreting a seal as the singer Seal, or DC Comics as Washington DC. |
|
This model is also able to understand other languages besides English, currently it can partially understand prompts in Chinese, Japanese and Spanish. More training is already being done in order to have the model completely understand those languages and have it work just like how it works with English prompts. |
|
|
|
As the model is fine-tuned on a wide variety of content, it’s able to generate many types of images and compositions, and easily outperforms the original model when it comes to portraits, architecture, reflections, fantasy, concept art, anime, landscapes and a lot more without being hyper-specialized like other community fine-tunes that are currently available. |
|
|
|
**Note: The prompt engineering techniques needed are slightly different from other fine-tunes and the original SD 1.5, so while you can still use your favorite prompts, for best results you might need to tweak them to make use of namespaces. A more detailed guide will be available shortly, but the examples here and this [Dataset Explorer](https://huggingface.co/spaces/Sygil/INE-dataset-explorer) should be able to start you off on the right track. |
|
|
|
If you find our work useful, please consider supporting us on [OpenCollective](https://opencollective.com/sygil_dev)! |
|
|
|
This model is still in its infancy, so feel free to give us feedback on our [Discord Server](https://discord.gg/UjXFsf6mTu) or on the discussions section on huggingface. We plan to improve it with more, better tags in the future, so any help is always welcome 😛 |
|
[![Join the Discord Server](https://badgen.net/discord/members/fTtcufxyHQ?icon=discord)](https://discord.gg/UjXFsf6mTu) |
|
|
|
|
|
# Showcase |
|
![Showcase image](pictures/showcase-6.jpg) |
|
|
|
|
|
## Examples |
|
|
|
Using the [🤗's Diffusers library](https://github.com/huggingface/diffusers) to run Sygil Diffusion in a simple and efficient manner. |
|
|
|
```bash |
|
pip install diffusers transformers accelerate scipy safetensors |
|
``` |
|
Running the pipeline (if you don't swap the scheduler it will run with the default DDIM, in this example we are swapping it to DPMSolverMultistepScheduler): |
|
|
|
```python |
|
import torch |
|
from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler |
|
|
|
model_id = "Sygil/Sygil-Diffusion" |
|
|
|
# Use the DPMSolverMultistepScheduler (DPM-Solver++) scheduler here instead |
|
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16) |
|
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config) |
|
pipe = pipe.to("cuda") |
|
|
|
prompt = "a beautiful illustration of a fantasy forest" |
|
image = pipe(prompt).images[0] |
|
|
|
image.save("fantasy_forest_illustration.png") |
|
``` |
|
|
|
**Notes**: |
|
- Despite not being a dependency, we highly recommend you to install [xformers](https://github.com/facebookresearch/xformers) for memory efficient attention (better performance) |
|
- If you have low GPU RAM available, make sure to add a `pipe.enable_attention_slicing()` after sending it to `cuda` for less VRAM usage (to the cost of speed). |
|
|
|
## Available Checkpoints: |
|
- [Sygil Diffusion v0.1](https://huggingface.co/Sygil/Sygil-Diffusion/blob/main/sygil-diffusion-v0.1.ckpt): Trained for 800,000 steps |
|
- [sygil-diffusion-v0.2_1651404_lora.ckpt](https://huggingface.co/Sygil/Sygil-Diffusion/blob/main/sygil-diffusion-v0.2_1651404_lora.ckpt): Resumed from Sygil Diffusion v0.1 and now up to 1.65 million steps. |
|
|
|
## Training |
|
|
|
**Training Data**: |
|
The model was trained on the following dataset: |
|
- [Imaginary Network Expanded Dataset](https://github.com/Sygil-Dev/INE-dataset) dataset. |
|
|
|
**Hardware and others** |
|
- **Hardware:** 1 x Nvidia RTX 3050 8GB GPU |
|
- **Hours Trained:** 610 hours approximately. |
|
- **Optimizer:** AdamW |
|
- **Adam Beta 1**: 0.9 |
|
- **Adam Beta 2**: 0.999 |
|
- **Adam Weight Decay**: 0.01 |
|
- **Adam Epsilon**: 1e-8 |
|
- **Gradient Checkpointing**: True |
|
- **Gradient Accumulations**: 4 |
|
- **Batch:** 1 |
|
- **Learning rate:** warmup to 1e-7 for 10,000 steps and then kept constant |
|
- **Lora unet Learning Rate**: 1e-7 |
|
- **Lora Text Encoder Learning Rate**: 1e-7 |
|
- **Resolution**: 512 pixels |
|
- **Total Training Steps:** 1,489,983 |
|
|
|
Developed by: [ZeroCool94](https://github.com/ZeroCool940711) at [Sygil-Dev](https://github.com/Sygil-Dev/) |
|
|
|
## Community Contributions: |
|
- [Kevin Turner (keturn)](https://huggingface.co/keturn): created the [INE-dataset-explorer](https://huggingface.co/spaces/Sygil/INE-dataset-explorer) space for better browsing of the INE dataset. |
|
|
|
*This model card is based on the [Stable Diffusion v1](https://github.com/CompVis/stable-diffusion/blob/main/Stable_Diffusion_v1_Model_Card.md) and [DALL-E Mini model card](https://huggingface.co/dalle-mini/dalle-mini).* |
|
|
|
|
|
# License |
|
This model is open access and available to all, with a CreativeML Open RAIL++-M License further specifying rights and usage. [Please read the full license here](https://huggingface.co/stabilityai/stable-diffusion-2/blob/main/LICENSE-MODEL) |