Add ONNX(DirectML), Intel OpenVINO & Evaluations
Browse files- LICENSE.md +35 -0
- README.md +547 -44
- openvino_model_vae_decoder.fp32.bin +3 -0
- openvino_model_vae_decoder.fp32.xml +3 -0
- text_encoder/model.onnx +2 -2
- text_encoder/openvino_model.bin +3 -0
- text_encoder/openvino_model.xml +3 -0
- text_encoder_2/model.onnx +2 -2
- text_encoder_2/model.onnx.data +3 -0
- text_encoder_2/openvino_model.bin +3 -0
- text_encoder_2/openvino_model.xml +3 -0
- unet/model.onnx +2 -2
- unet/model.onnx.data +3 -0
- unet/openvino_model.bin +3 -0
- unet/openvino_model.xml +3 -0
- vae_decoder/model.onnx +2 -2
- vae_decoder/openvino_model.bin +3 -0
- vae_decoder/openvino_model.xml +3 -0
- vae_encoder/model.onnx +2 -2
- vae_encoder/openvino_model.bin +3 -0
- vae_encoder/openvino_model.xml +3 -0
LICENSE.md
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FFusionXL 1.0 RESEARCH LICENSE AGREEMENT
|
2 |
+
Copyright (c) 2023 FFusion AI Ltd. and Source Code Bulgaria Ltd.
|
3 |
+
|
4 |
+
This License Agreement (as may be amended in accordance with this License Agreement, �License�), between you, or your employer or other entity (if you are entering into this agreement on behalf of your employer or other entity) (�Licensee� or �you�) and FFusion AI Ltd. (�FFusion AI� or �we�) and Source Code Bulgaria Ltd. ("Source Code Bulgaria" or "we") applies to your use of any computer program, algorithm, source code, object code, software, models, or model weights that is made available by FFusion AI and Source Code Bulgaria under this License (�Software�) and any specifications, manuals, documentation, and other written information provided by FFusion AI and Source Code Bulgaria related to the Software (�Documentation�).
|
5 |
+
|
6 |
+
By using the Software, you agree to the terms of this License. If you do not agree to this License, then you do not have any rights to use the Software or Documentation (collectively, the �Software Products�), and you must immediately cease using the Software Products. If you are agreeing to be bound by the terms of this License on behalf of your employer or other entity, you represent and warrant to FFusion AI and Source Code Bulgaria that you have full legal authority to bind your employer or such entity to this License. If you do not have the requisite authority, you may not accept the License or access the Software Products on behalf of your employer or other entity.
|
7 |
+
|
8 |
+
Use-based Restrictions: The Software Products cannot be used for certain restricted uses. These include violating any applicable law or regulation, exploiting or harming minors, generating or disseminating false information or personal identifiable information that can harm an individual, defaming or harassing others, and more.
|
9 |
+
|
10 |
+
|
11 |
+
Output Generation: FFusion AI and Source Code Bulgaria claim no rights in the output generated using the Software Products. The user is accountable for the output they generate and its subsequent uses.
|
12 |
+
|
13 |
+
|
14 |
+
Updates and Runtime Restrictions: FFusion AI and Source Code Bulgaria reserve the right to restrict usage of the Software Products in violation of this License.
|
15 |
+
|
16 |
+
Disclaimer of Warranty and Limitation of Liability: The Software Products are provided on an "AS IS" basis, without warranties or conditions of any kind. FFusion AI and Source Code Bulgaria are not liable for damages arising as a result of this License or out of the use or inability to use the Software Products.
|
17 |
+
|
18 |
+
|
19 |
+
ATTRIBUTION
|
20 |
+
Together with any copies of the Software Products (as well as derivative works thereof or works incorporating the Software Products) that you distribute, you must provide (i) a copy of this License, and (ii) the following attribution notice: �FFusionXL 1.0 is licensed under the FFusionXL Research License, Copyright (c) FFusion AI Ltd. All Rights Reserved. FFusionXL-BASE is developed and maintained by FFusion.AI, a division of Source Code Bulgaria Ltd. All Rights Reserved.�
|
21 |
+
|
22 |
+
|
23 |
+
ADDITIONAL TERMS FOR FFUSION.AI
|
24 |
+
In addition to the terms set forth above, the following terms apply specifically to the FFusionXL-BASE model developed by FFusion.AI, a division of Source Code Bulgaria Ltd:
|
25 |
+
|
26 |
+
a. Any use of the FFusionXL-BASE model must include proper attribution to FFusion.AI and Source Code Bulgaria Ltd. in any publication or public work that includes results achieved by or data generated by the model.
|
27 |
+
|
28 |
+
b. The FFusionXL-BASE model is provided for non-commercial research purposes only. Any commercial use requires a separate license agreement with Source Code Bulgaria Ltd.
|
29 |
+
|
30 |
+
c. You may not reverse engineer, decompile, or disassemble the FFusionXL-BASE model.
|
31 |
+
|
32 |
+
d. You agree to indemnify and hold harmless Source Code Bulgaria Ltd. and its affiliates from any claims, damages, liabilities, costs, losses, and expenses (including reasonable attorney's fees) arising out of your use of the FFusionXL-BASE model.
|
33 |
+
|
34 |
+
|
35 |
+
Acknowledgement of Original Work and Modifications: This Software is based on the Stable Diffusion XL Base 1.0 model developed by Stability AI Ltd. FFusion AI and Source Code Bulgaria Ltd. have made modifications and enhancements to the original Software for the creation of the FFusionXL-BASE model. While FFusion AI and Source Code Bulgaria Ltd. maintain the rights to their modifications and enhancements, all rights to the original Software and associated intellectual property remain with Stability AI Ltd. Use of the FFusionXL-BASE model is subject to the terms of this License, as well as any terms and conditions set forth by Stability AI Ltd. for the use of the original Software.
|
README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
---
|
2 |
license: openrail++
|
3 |
base_model: diffusers/stable-diffusion-xl-base-1.0
|
4 |
tags:
|
@@ -11,67 +11,570 @@ tags:
|
|
11 |
inference: true
|
12 |
widget:
|
13 |
- text: >-
|
14 |
-
a
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
|
18 |
example_title: Donut FFusion
|
19 |
- text: >-
|
20 |
a cup of coffee with a tree in it, surreal art, awesome great composition,
|
21 |
-
surrealism
|
22 |
-
|
23 |
-
whimsical surrealism, surreal composition, trending artistic art,
|
24 |
-
surrealism art, surreal scene, surrealistic painting, surreal style,
|
25 |
-
surreal illustration
|
26 |
-
example_title: Coffee FFusion
|
27 |
- text: >-
|
28 |
-
brightly colored headphones with a splash of paint
|
29 |
-
to music,
|
30 |
-
beautiful digital artwork, headphones on, listening to music, music
|
31 |
-
poster, synesthesia, music in the air, listening to godly music, style
|
32 |
-
hybrid mix of beeple, headphones, digital artwork 4 k, side profile
|
33 |
-
artwork, no humans, planet, space, black background, cable, simple
|
34 |
-
background, concept art, cinematic, dramatic, intricate details, dark
|
35 |
lighting
|
36 |
example_title: Headset FFusion
|
37 |
- text: >-
|
38 |
-
|
39 |
-
surreal 3 d render, 3 d epic illustrations, 3 d artistic render, inspired
|
40 |
-
by Matthias Jung, environmental key art, erik johansson style, surreal
|
41 |
-
concept art, alexander jansson style, cube portals, masterpiece, 3
|
42 |
-
d render surrealistic digital artwork
|
43 |
example_title: Digital Fusion
|
44 |
-
|
45 |
-
a dog in colorful exploding clouds,dreamlike surrealism colorful smoke and fire coming
|
46 |
-
out of it,explosion of data fragments,exploding background,realistic
|
47 |
-
explosion,3d digital art 4k,fire and explosion,explosion,background
|
48 |
-
explosion,cinema 4 d art,shattering,beeple. hyperrealism,explosion
|
49 |
-
background,rendered in cinema 4 d,rendered in cinema4d,explosive
|
50 |
-
background
|
51 |
-
example_title: Dogo FFusion
|
52 |
language:
|
53 |
- en
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
---
|
55 |
|
56 |
-
|
57 |
-
[![ffusionXL-1-sdxl-base1.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/KwpZpMCx-T-JWNaRF8e6N.png)](https://huggingface.co/spaces/FFusion/FFusionXL-SDXL-DEMO)
|
58 |
<div style="display: flex; flex-wrap: wrap; gap: 2px;">
|
59 |
-
<a href="https://huggingface.co/FFusion/
|
60 |
-
|
61 |
-
|
62 |
-
<a href="https://huggingface.co/spaces/FFusion/FFusionXL-SDXL-DEMO" target="_blank" rel="noopener noreferrer">
|
63 |
-
<img src="https://img.shields.io/badge/-FFusionXL%20DEMO-brightpurple?style=for-the-badge&logo=appveyor" alt="FFusionXL BASE SDXL DEMO">
|
64 |
-
</a>
|
65 |
</div>
|
66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
-
|
70 |
-
|
|
|
71 |
|
72 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
from diffusers import DiffusionPipeline
|
74 |
import torch
|
75 |
|
76 |
-
pipe = DiffusionPipeline.from_pretrained("FFusion/FFusionXL-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
license: openrail++
|
3 |
base_model: diffusers/stable-diffusion-xl-base-1.0
|
4 |
tags:
|
|
|
11 |
inference: true
|
12 |
widget:
|
13 |
- text: >-
|
14 |
+
a dog in colorful exploding clouds, dreamlike surrealism colorful smoke and fire coming
|
15 |
+
out of it, explosion of data fragments, exploding background,realistic explosion, 3d digital art
|
16 |
+
example_title: Dogo FFusion
|
17 |
+
- text: >-
|
18 |
+
a sprinkled donut sitting on top of a table, colorful hyperrealism, everything is made of candy, hyperrealistic digital
|
19 |
+
painting, covered in sprinkles and crumbs, vibrant colors hyper realism,colorful smoke explosion background
|
20 |
example_title: Donut FFusion
|
21 |
- text: >-
|
22 |
a cup of coffee with a tree in it, surreal art, awesome great composition,
|
23 |
+
surrealism, ice cubes in tree, colorful clouds, perfectly realistic yet surreal
|
24 |
+
example_title: CoFFee FFusion
|
|
|
|
|
|
|
|
|
25 |
- text: >-
|
26 |
+
brightly colored headphones with a splash of colorful paint splash, vibing
|
27 |
+
to music, stunning artwork, music is life, beautiful digital artwork, concept art, cinematic, dramatic, intricate details, dark
|
|
|
|
|
|
|
|
|
|
|
28 |
lighting
|
29 |
example_title: Headset FFusion
|
30 |
- text: >-
|
31 |
+
high-quality game character digital design, Unreal Engine, Water color painting, Mecha- Monstrous high quality game fantasy rpg character design, dark rainbow Fur Scarf, inside of a Superficial Outhouse, at Twilight, Overdetailed art
|
|
|
|
|
|
|
|
|
32 |
example_title: Digital Fusion
|
33 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
language:
|
35 |
- en
|
36 |
+
model-index:
|
37 |
+
- name: FFusion/FFusionXL-BASE
|
38 |
+
results:
|
39 |
+
- task:
|
40 |
+
type: text-to-image
|
41 |
+
name: Text to Image Generation
|
42 |
+
dataset:
|
43 |
+
type: poloclub/diffusiondb
|
44 |
+
name: DiffusionDB
|
45 |
+
split: train
|
46 |
+
metrics:
|
47 |
+
- type: is
|
48 |
+
value: 4.9797071218490601
|
49 |
+
name: Inception Score
|
50 |
+
verified: true
|
51 |
+
- type: fid
|
52 |
+
value: 311.33686580590006
|
53 |
+
name: Fréchet Inception Distance
|
54 |
+
verified: true
|
55 |
+
- type: text-image-similarity
|
56 |
+
value: 14.368797302246094
|
57 |
+
name: Similarity Score (CLIP)
|
58 |
+
thumbnail: >-
|
59 |
+
https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/p54u7dEP1u8en0--NMEjS.png
|
60 |
---
|
61 |
|
62 |
+
![FFusionXL-openvino-onnx-directml.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/Yhp6RIF2oKbx7cLPXCxMe.png)
|
|
|
63 |
<div style="display: flex; flex-wrap: wrap; gap: 2px;">
|
64 |
+
<a href="https://huggingface.co/FFusion/"><img src="https://img.shields.io/badge/ONNX_Version-Available-brightgreen" alt="ONNX Version Available"></a>
|
65 |
+
<a href="https://huggingface.co/FFusion/"><img src="https://img.shields.io/badge/OpenVINO-Support-blue" alt="OpenVINO Support"></a>
|
66 |
+
<a href="https://huggingface.co/FFusion/"><img src="https://img.shields.io/badge/Compatibility-Intel%20|%20AMD%20|%20NVIDIA-orange" alt="Intel/AMD/NVIDIA Compatible"></a>
|
|
|
|
|
|
|
67 |
</div>
|
68 |
|
69 |
+
## 🌟 Overview
|
70 |
+
|
71 |
+
|
72 |
+
- 🚀 Fast Training: Optimized for high-speed training, allowing rapid experimentation.
|
73 |
+
- 🧩 Versatility: Suitable for various applications and standards, from NLP to Computer Vision.
|
74 |
+
- 🎓 Train Your Way: A base for training your own models, tailored to your needs.
|
75 |
+
- 🌐 Multilingual Support: Train models in multiple languages.
|
76 |
+
- 🛡️ Robust Architecture: Built on proven technologies to ensure stability and reliability.
|
77 |
+
|
78 |
+
|
79 |
+
## 📜 Model Description
|
80 |
+
|
81 |
+
FFusionXL "Base" is a foundational model designed to accelerate training processes. Crafted with flexibility in mind, it serves as a base for training custom models across a variety of standards, enabling innovation and efficiency.
|
82 |
+
|
83 |
+
|
84 |
+
<div style="display: flex; flex-wrap: wrap; gap: 2px;">
|
85 |
+
<a href="#"><img src="https://img.shields.io/badge/Safetensor-FP16%20%26%20FP32-blue" alt="Safetensor checkpoints"></a>
|
86 |
+
<a href="#"><img src="https://img.shields.io/badge/Diffusers(Safetensors)-FP16%20%26%20FP32-green" alt="Diffusers(safetensors)"></a>
|
87 |
+
<a href="#"><img src="https://img.shields.io/badge/Diffusers(PyTorch%20Bin)-FP16%20%26%20FP32-orange" alt="Diffusers(pytorch bin)"></a>
|
88 |
+
<a href="#"><img src="https://img.shields.io/badge/ONNX-Unoptimized%20FP32-red" alt="ONNX un-optimized FP32"></a>
|
89 |
+
<a href="#"><img src="https://img.shields.io/badge/ONNX%20Optimized-FP16%20DirectML%20Support-blueviolet" alt="ONNX Optimized FP16 full DirectML support"></a>
|
90 |
+
<a href="#"><img src="https://img.shields.io/badge/Intel®%20OpenVINO™-FP32%20%26%20FP16-brightgreen" alt="Intel® OpenVINO™ FP32 & FP16"></a>
|
91 |
+
</div>
|
92 |
+
|
93 |
+
|
94 |
+
|
95 |
+
**Available formats for training:**
|
96 |
+
- Safetensor checkpoints fp16 & fp32
|
97 |
+
- Diffusers(safetensors) FP 16 & FP32
|
98 |
+
- Diffusers(pytorch bin) FP16 & FP32
|
99 |
+
|
100 |
+
- ONNX un-optimzed FP32
|
101 |
+
- **ONNX Optimized** FP16 full **DirectML** support / AMD / NVIDIA
|
102 |
+
- Intel® OpenVINO™ FP32 - unoptimized
|
103 |
+
- **Intel® OpenVINO™** FP16
|
104 |
+
|
105 |
+
- **Trained by:** FFusion AI
|
106 |
+
- **Model type:** Diffusion-based text-to-image generative model
|
107 |
+
- **License:** [FFXL Research License](https://huggingface.co/FFusion/FFusionXL-09-SDXL/blob/main/LICENSE.md)
|
108 |
+
- **Model Description:** This is a trained model based on SDXL that can be used to generate and modify images based on text prompts. It is a [Latent Diffusion Model](https://arxiv.org/abs/2112.10752) that uses two fixed, pretrained text encoders ([OpenCLIP-ViT/G](https://github.com/mlfoundations/open_clip) and [CLIP-ViT/L](https://github.com/openai/CLIP/tree/main)).
|
109 |
+
- **Resources for more information:** [SDXL paper on arXiv](https://arxiv.org/abs/2307.01952).
|
110 |
+
|
111 |
+
## 📊 Model Sources
|
112 |
+
|
113 |
+
- **Demo:** [FFusionXL SDXL DEMO](https://huggingface.co/spaces/FFusion/FFusionXL-SDXL-DEMO)
|
114 |
+
![ffusionXL-Demo.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/qN9C9hn1lmhjD03wH34fo.png)
|
115 |
+
|
116 |
+
|
117 |
+
## Table of Contents
|
118 |
+
|
119 |
+
1. [📌 ONNX Version](#📌-onnx-version)
|
120 |
+
1. [🔖 ### 📌 ONNX Details](#🔖-###-📌-onnx-details)
|
121 |
+
2. [🔖 ### 📌 AMD Support for Microsoft® DirectML Optimization of Stable Diffusion](#🔖-###-📌-amd-support-for-microsoft®-directml-optimization-of-stable-diffusion)
|
122 |
+
3. [🔖 ### 📌 ONNX Inference Instructions](#🔖-###-📌-onnx-inference-instructions)
|
123 |
+
4. [🔖 ### 📌 Text-to-Image](#🔖-###-📌-text-to-image)
|
124 |
+
2. [📌 Intel® OpenVINO™ Version](#📌-intel®-openvino™-version)
|
125 |
+
1. [📌 OpenVINO Inference with FFusion/FFusionXL-BASE](#📌-openvino-inference-with-ffusion/ffusionxl-base)
|
126 |
+
2. [🔖 ### 📌 Installing Dependencies](#🔖-###-📌-installing-dependencies)
|
127 |
+
3. [🔖 ### 📌 Text-to-Image](#🔖-###-📌-text-to-image)
|
128 |
+
4. [🔖 ### 📌 Text-to-Image with Textual Inversion](#🔖-###-📌-text-to-image-with-textual-inversion)
|
129 |
+
5. [🔖 ### 📌 Image-to-Image](#🔖-###-📌-image-to-image)
|
130 |
+
6. [🔖 ### 📌 Refining the Image Output](#🔖-###-📌-refining-the-image-output)
|
131 |
+
3. [📜 Part 003: 🧨 Model Diffusers, Fast LoRa Loading, and Training](#📜-part-001:-🧨-model-diffusers,-fast-lora-loading,-and-training)
|
132 |
+
1. [📌 Model Diffusers: Unleashing the Power of FFusion/FFusionXL-BASE](#📌-model-diffusers:-unleashing-the-power-of-ffusion/ffusionxl-base)
|
133 |
+
2. [📌 Installing the dependencies](#📌-installing-the-dependencies)
|
134 |
+
3. [📌 Training](#📌-training)
|
135 |
+
4. [📌 Inference](#📌-inference)
|
136 |
+
5. [📌 Training](#📌-training)
|
137 |
+
6. [📌 Finetuning the text encoder and UNet](#📌-finetuning-the-text-encoder-and-unet)
|
138 |
+
7. [📌 Inference](#📌-inference)
|
139 |
+
4. [📌 Evaluation](#📌-evaluation)
|
140 |
+
|
141 |
+
|
142 |
+
|
143 |
+
|
144 |
+
|
145 |
+
|
146 |
+
### ### 📌 ONNX Version
|
147 |
+
![preview-ffusionAI__base_00026_ copy.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/tJgVy8KKQljYCgW3SH--K.jpeg)
|
148 |
+
|
149 |
+
We are proud to announce a fully optimized Microsoft ONNX Version exclusively compatible with the latest DirectML Execution Provider. All the ONNX files are optimized (Quantization) to fp16 for fast inference and training across all devices.
|
150 |
+
|
151 |
+
The Vae_Decoder is kept at fp32 with settings:
|
152 |
+
|
153 |
+
```json
|
154 |
+
"float16": false,
|
155 |
+
"use_gpu": true,
|
156 |
+
"keep_io_types": true,
|
157 |
+
"force_fp32_ops": ["RandomNormalLike"]
|
158 |
+
```
|
159 |
+
|
160 |
+
to avoid black screens and broken renders. As soon as a proper solution for a full fp16 VAE decoder arrives, we will update it. VAE encoder and everything else is fully optimized 🤟.
|
161 |
+
|
162 |
+
Our ONNX is OPTIMIZED using ONNX v8:
|
163 |
+
|
164 |
+
- **producer:** onnxruntime.transformers 1.15.1
|
165 |
+
- **imports:** ai.onnx v18, com.microsoft.nchwc v1, ai.onnx.ml v3, com.ms.internal.nhwc v19, ai.onnx.training v1, ai.onnx.preview.training v1, com.microsoft v1, com.microsoft.experimental v1, org.pytorch.aten v1, com.microsoft.dml v1, graph: torch_jit
|
166 |
+
|
167 |
+
|
168 |
+
#### 🔖 ### 📌 ONNX Details
|
169 |
+
|
170 |
+
**NETRON** Detrails:
|
171 |
+
![onxxapp-nutron-ffusionai.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/8dpibhpV7_Uo0B8_7zQXk.jpeg)
|
172 |
+
## Install
|
173 |
+
|
174 |
+
**macOS**: [**Download**](https://github.com/lutzroeder/netron/releases/latest) the `.dmg` file or run `brew install --cask netron`
|
175 |
+
|
176 |
+
**Linux**: [**Download**](https://github.com/lutzroeder/netron/releases/latest) the `.AppImage` file or run `snap install netron`
|
177 |
+
|
178 |
+
**Windows**: [**Download**](https://github.com/lutzroeder/netron/releases/latest) the `.exe` installer or run `winget install -s winget netron`
|
179 |
+
|
180 |
+
|
181 |
+
https://netron.app/
|
182 |
+
|
183 |
+
-- **NETRON browser version**: [Start **Text Encoder**](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/text_encoder/model.onnx)
|
184 |
+
[![Text Encoder1 FFusionXL.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/KdC7aG_qiUsLctMb6Ij3Y.jpeg)](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/text_encoder/model.onnx)
|
185 |
+
|
186 |
+
|
187 |
+
--**NETRON browser version**: [Start **Text Encoder 2**](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/text_encoder_2/model.onnx)
|
188 |
+
[![TextEncoder2 FFusionXL.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/faCpPKG1fHmqQmi7BdlbO.jpeg)](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/text_encoder_2/model.onnx)
|
189 |
+
|
190 |
+
--**NETRON browser version**: [Start **VAE decoder**](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/vae_decoder/model.onnx)
|
191 |
+
|
192 |
+
--**NETRON browser version**: [Start **VAE encoder**](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/vae_encoder/model.onnx)
|
193 |
+
[![VAE encoder FFUSION-ai-Screenshot_2016.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/pm824V7Fyv22x7yHjDsfE.jpeg)](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/vae_encoder/model.onnx)
|
194 |
+
|
195 |
+
--**NETRON browser version**: [Start **UNET**](https://netron.app/?url=https://huggingface.co/stabilityai/FFusion/FFusionXL-BASE/blob/main/unet/model.onnx)
|
196 |
+
|
197 |
+
|
198 |
+
|
199 |
+
##### 🔖 ### 📌 AMD Support for Microsoft® DirectML Optimization of Stable Diffusion
|
200 |
+
|
201 |
+
![FFusionXL-directML.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/AWcddnCm1rEpSW0Ta6beV.jpeg)
|
202 |
+
|
203 |
+
AMD has released support for Microsoft DirectML optimizations for Stable Diffusion, working closely with Microsoft for optimal performance on AMD devices.
|
204 |
+
|
205 |
+
[Microsoft DirectML](https://microsoft.github.io/DirectML/)
|
206 |
+
[AMD Microsoft DirectML Stable Diffusion](https://gpuopen.com/amd-microsoft-directml-stable-diffusion/)
|
207 |
+
|
208 |
+
|
209 |
+
#### 🔖 ### 📌 ONNX Inference Instructions
|
210 |
+
![Onnx-FFusionXL1.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/QJjulnRe4iJHhWPb1c2nY.jpeg)
|
211 |
+
|
212 |
+
|
213 |
+
|
214 |
+
##### 🔖 ### 📌 Text-to-Image
|
215 |
+
|
216 |
+
Here is an example of how you can load an ONNX Stable Diffusion model and run inference using ONNX Runtime:
|
217 |
+
|
218 |
+
```python
|
219 |
+
from optimum.onnxruntime import ORTStableDiffusionPipeline
|
220 |
+
|
221 |
+
model_id = "FFusion/FFusionXL-BASE"
|
222 |
+
pipeline = ORTStableDiffusionPipeline.from_pretrained(model_id)
|
223 |
+
prompt = "sailing ship in storm by Leonardo da Vinci"
|
224 |
+
images = pipeline(prompt).images
|
225 |
+
```
|
226 |
+
|
227 |
+
|
228 |
+
|
229 |
+
|
230 |
+
### ### 📌 Intel® OpenVINO™ Version
|
231 |
+
|
232 |
+
A converted Intel® OpenVINO™ model is also included for inference testing and training. No Quantization and optimization applied yet.
|
233 |
+
|
234 |
+
|
235 |
+
|
236 |
+
|
237 |
+
|
238 |
+
---
|
239 |
+
|
240 |
+
### ### 📌 OpenVINO Inference with FFusion/FFusionXL-BASE
|
241 |
+
|
242 |
+
#### 🔖 ### 📌 Installing Dependencies
|
243 |
+
|
244 |
+
Before using `OVStableDiffusionXLPipeline`, make sure to have `diffusers` and `invisible_watermark` installed. You can install the libraries as follows:
|
245 |
+
|
246 |
+
```bash
|
247 |
+
pip install diffusers
|
248 |
+
pip install invisible-watermark>=0.2.0
|
249 |
+
```
|
250 |
+
|
251 |
+
#### 🔖 ### 📌 Text-to-Image
|
252 |
+
|
253 |
+
Here is an example of how you can load a FFusion/FFusionXL-BASE OpenVINO model and run inference using OpenVINO Runtime:
|
254 |
+
|
255 |
+
```python
|
256 |
+
from optimum.intel import OVStableDiffusionXLPipeline
|
257 |
+
|
258 |
+
model_id = "FFusion/FFusionXL-BASE"
|
259 |
+
base = OVStableDiffusionXLPipeline.from_pretrained(model_id)
|
260 |
+
prompt = "train station by Caspar David Friedrich"
|
261 |
+
image = base(prompt).images[0]
|
262 |
+
image.save("train_station.png")
|
263 |
+
```
|
264 |
+
|
265 |
+
#### 🔖 ### 📌 Text-to-Image with Textual Inversion
|
266 |
+
|
267 |
+
First, you can run the original pipeline without textual inversion:
|
268 |
+
|
269 |
+
```python
|
270 |
+
from optimum.intel import OVStableDiffusionXLPipeline
|
271 |
+
import numpy as np
|
272 |
+
|
273 |
+
model_id = "FFusion/FFusionXL-BASE"
|
274 |
+
prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a beautiful cyber female wearing a black corset and pink latex shirt, scifi best quality, intricate details."
|
275 |
+
np.random.seed(0)
|
276 |
+
|
277 |
+
base = OVStableDiffusionXLPipeline.from_pretrained(model_id, export=False, compile=False)
|
278 |
+
base.compile()
|
279 |
+
image1 = base(prompt, num_inference_steps=50).images[0]
|
280 |
+
image1.save("sdxl_without_textual_inversion.png")
|
281 |
+
```
|
282 |
+
|
283 |
+
Then, you can load `charturnerv2` textual inversion embedding and run the pipeline with the same prompt again:
|
284 |
+
|
285 |
+
```python
|
286 |
+
# Reset stable diffusion pipeline
|
287 |
+
base.clear_requests()
|
288 |
+
|
289 |
+
# Load textual inversion into stable diffusion pipeline
|
290 |
+
base.load_textual_inversion("./charturnerv2.pt", "charturnerv2")
|
291 |
|
292 |
+
# Compile the model before the first inference
|
293 |
+
base.compile()
|
294 |
+
image2 = base(prompt, num_inference_steps=50).images[0]
|
295 |
+
image2.save("sdxl_with_textual_inversion.png")
|
296 |
+
```
|
297 |
|
298 |
+
![SDXL-preview.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/HocDOL_Tlxsqe9qKMRwyp.png)
|
299 |
+
![FFusi1onXL_with_textual_inveaarsion1.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/bkkQSPWD8Zt736eihubEi.png)
|
300 |
+
![FFusionXL_with_textual_inversion1.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/oX4CWQwbuQn4WiBDbOwM6.png)
|
301 |
|
302 |
+
|
303 |
+
#### 🔖 ### 📌 Image-to-Image
|
304 |
+
|
305 |
+
Here is an example of how you can load a PyTorch FFusion/FFusionXL-BASE model, convert it to OpenVINO on-the-fly, and run inference using OpenVINO Runtime for image-to-image:
|
306 |
+
|
307 |
+
```python
|
308 |
+
from optimum.intel import OVStableDiffusionXLImg2ImgPipeline
|
309 |
+
from diffusers.utils import load_image
|
310 |
+
|
311 |
+
model_id = "FFusion/FFusionXL-BASE-refiner-1.0"
|
312 |
+
pipeline = OVStableDiffusionXLImg2ImgPipeline.from_pretrained(model_id, export=True)
|
313 |
+
|
314 |
+
url = "https://huggingface.co/datasets/optimum/documentation-images/resolve/main/intel/openvino/sd_xl/castle_friedrich.png"
|
315 |
+
image = load_image(url).convert("RGB")
|
316 |
+
prompt = "medieval castle by Caspar David Friedrich"
|
317 |
+
image = pipeline(prompt, image=image).images[0]
|
318 |
+
pipeline.save_pretrained("openvino-FF-xl-refiner-1.0")
|
319 |
+
```
|
320 |
+
|
321 |
+
#### 🔖 ### 📌 Refining the Image Output
|
322 |
+
|
323 |
+
The image can be refined by making use of a model like `FFusion/FFusionXL-BASE-refiner-1.0`. In this case, you only have to output the latents from the base model.
|
324 |
+
|
325 |
+
```python
|
326 |
+
from optimum.intel import OVStableDiffusionXLImg2ImgPipeline
|
327 |
+
|
328 |
+
model_id = "FFusion/FFusionXL-BASE-refiner-1.0"
|
329 |
+
refiner = OVStableDiffusionXLImg2ImgPipeline.from_pretrained(model_id, export=True)
|
330 |
+
|
331 |
+
image = base(prompt=prompt, output_type="latent").images[0]
|
332 |
+
image = refiner(prompt=prompt, image=image[None, :]).images[0]
|
333 |
+
```
|
334 |
+
|
335 |
+
## 📜 Part 003: 🧨 Model Diffusers, Fast LoRa Loading, and Training
|
336 |
+
|
337 |
+
### ### 📌 Model Diffusers: Unleashing the Power of FFusion/FFusionXL-BASE
|
338 |
+
|
339 |
+
Whether you're an artist, researcher, or AI enthusiast, our model is designed to make your journey smooth and exciting.
|
340 |
+
Make sure to upgrade diffusers to >= 0.19.3:
|
341 |
+
```bash
|
342 |
+
pip install diffusers --upgrade
|
343 |
+
```
|
344 |
+
In addition, make sure to install `transformers`, `safetensors`, `accelerate`, and the invisible watermark:
|
345 |
+
```bash
|
346 |
+
pip install invisible_watermark transformers accelerate safetensors
|
347 |
+
```
|
348 |
+
|
349 |
+
You can use the model then as follows:
|
350 |
+
```python
|
351 |
from diffusers import DiffusionPipeline
|
352 |
import torch
|
353 |
|
354 |
+
pipe = DiffusionPipeline.from_pretrained("FFusion/FFusionXL-09-SDXL", torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
|
355 |
+
pipe.to("cuda")
|
356 |
+
|
357 |
+
# if using torch < 2.0
|
358 |
+
# pipe.enable_xformers_memory_efficient_attention()
|
359 |
+
|
360 |
+
prompt = "An astronaut riding a green horse"
|
361 |
+
|
362 |
+
images = pipe(prompt=prompt).images[0]
|
363 |
+
```
|
364 |
+
|
365 |
+
## 📜 Diffusers Training Guide: Training FFusion/FFusionXL-BASE with LoRA
|
366 |
+
|
367 |
+
# Stable Diffusion XL text-to-image fine-tuning
|
368 |
+
|
369 |
+
The `train_text_to_image_sdxl.py` script shows how to fine-tune Stable Diffusion XL (SDXL) on your own dataset.
|
370 |
+
|
371 |
+
🚨 This script is experimental. The script fine-tunes the whole model and often times the model overfits and runs into issues like catastrophic forgetting. It's recommended to try different hyperparamters to get the best result on your dataset. 🚨
|
372 |
+
|
373 |
+
## 📜 Running locally with PyTorch
|
374 |
+
|
375 |
+
### ### 📌 Installing the dependencies
|
376 |
+
|
377 |
+
Before running the scripts, make sure to install the library's training dependencies:
|
378 |
+
|
379 |
+
**Important**
|
380 |
+
|
381 |
+
To make sure you can successfully run the latest versions of the example scripts, we highly recommend **installing from source** and keeping the install up to date as we update the example scripts frequently and install some example-specific requirements. To do this, execute the following steps in a new virtual environment:
|
382 |
+
|
383 |
+
```bash
|
384 |
+
git clone https://github.com/huggingface/diffusers
|
385 |
+
cd diffusers
|
386 |
+
pip install -e .
|
387 |
+
```
|
388 |
+
|
389 |
+
Then cd in the `examples/text_to_image` folder and run
|
390 |
+
```bash
|
391 |
+
pip install -r requirements_sdxl.txt
|
392 |
+
```
|
393 |
+
|
394 |
+
And initialize an [🤗Accelerate](https://github.com/huggingface/accelerate/) environment with:
|
395 |
+
|
396 |
+
```bash
|
397 |
+
accelerate config
|
398 |
+
```
|
399 |
+
|
400 |
+
Or for a default accelerate configuration without answering questions about your environment
|
401 |
+
|
402 |
+
```bash
|
403 |
+
accelerate config default
|
404 |
+
```
|
405 |
+
|
406 |
+
Or if your environment doesn't support an interactive shell (e.g., a notebook)
|
407 |
+
|
408 |
+
```python
|
409 |
+
from accelerate.utils import write_basic_config
|
410 |
+
write_basic_config()
|
411 |
+
```
|
412 |
+
|
413 |
+
When running `accelerate config`, if we specify torch compile mode to True there can be dramatic speedups.
|
414 |
+
|
415 |
+
|
416 |
+
|
417 |
+
|
418 |
+
|
419 |
+
### ### 📌 Training
|
420 |
+
|
421 |
+
```bash
|
422 |
+
export MODEL_NAME="FFusion/FFusionXL-BASE"
|
423 |
+
export VAE="madebyollin/sdxl-vae-fp16-fix"
|
424 |
+
export DATASET_NAME="lambdalabs/pokemon-blip-captions"
|
425 |
+
|
426 |
+
accelerate launch train_text_to_image_sdxl.py \
|
427 |
+
--pretrained_model_name_or_path=$MODEL_NAME \
|
428 |
+
--pretrained_vae_model_name_or_path=$VAE \
|
429 |
+
--dataset_name=$DATASET_NAME \
|
430 |
+
--enable_xformers_memory_efficient_attention \
|
431 |
+
--resolution=512 --center_crop --random_flip \
|
432 |
+
--proportion_empty_prompts=0.2 \
|
433 |
+
--train_batch_size=1 \
|
434 |
+
--gradient_accumulation_steps=4 --gradient_checkpointing \
|
435 |
+
--max_train_steps=10000 \
|
436 |
+
--use_8bit_adam \
|
437 |
+
--learning_rate=1e-06 --lr_scheduler="constant" --lr_warmup_steps=0 \
|
438 |
+
--mixed_precision="fp16" \
|
439 |
+
--report_to="wandb" \
|
440 |
+
--validation_prompt="a cute Sundar Pichai creature" --validation_epochs 5 \
|
441 |
+
--checkpointing_steps=5000 \
|
442 |
+
--output_dir="sdxl-pokemon-model" \
|
443 |
+
--push_to_hub
|
444 |
+
```
|
445 |
+
|
446 |
+
**Notes**:
|
447 |
+
|
448 |
+
* The `train_text_to_image_sdxl.py`(diffusers/examples/text_to_image) script pre-computes text embeddings and the VAE encodings and keeps them in memory. While for smaller datasets like [`lambdalabs/pokemon-blip-captions`](https://hf.co/datasets/lambdalabs/pokemon-blip-captions), it might not be a problem, it can definitely lead to memory problems when the script is used on a larger dataset. For those purposes, you would want to serialize these pre-computed representations to disk separately and load them during the fine-tuning process. Refer to [this PR](https://github.com/huggingface/diffusers/pull/4505) for a more in-depth discussion.
|
449 |
+
* The training script is compute-intensive and may not run on a consumer GPU like Tesla T4.
|
450 |
+
* The training command shown above performs intermediate quality validation in between the training epochs and logs the results to Weights and Biases. `--report_to`, `--validation_prompt`, and `--validation_epochs` are the relevant CLI arguments here.
|
451 |
+
examples/text_to_image
|
452 |
+
### ### 📌 Inference
|
453 |
+
|
454 |
+
```python
|
455 |
+
from diffusers import DiffusionPipeline
|
456 |
+
import torch
|
457 |
+
|
458 |
+
model_path = "FFusion/FFusionXL-BASE" # <-- change this to your new trained model
|
459 |
+
pipe = DiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16)
|
460 |
+
pipe.to("cuda")
|
461 |
+
|
462 |
+
prompt = "A pokemon with green eyes and red legs."
|
463 |
+
image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]
|
464 |
+
image.save("pokemon.png")
|
465 |
+
```
|
466 |
+
|
467 |
+
## 📜 LoRA training example for Stable Diffusion XL (SDXL)
|
468 |
+
|
469 |
+
Low-Rank Adaption of Large Language Models was first introduced by Microsoft in [LoRA: Low-Rank Adaptation of Large Language Models](https://arxiv.org/abs/2106.09685) by *Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen*.
|
470 |
+
|
471 |
+
In a nutshell, LoRA allows adapting pretrained models by adding pairs of rank-decomposition matrices to existing weights and **only** training those newly added weights. This has a couple of advantages:
|
472 |
+
|
473 |
+
- Previous pretrained weights are kept frozen so that model is not prone to [catastrophic forgetting](https://www.pnas.org/doi/10.1073/pnas.1611835114).
|
474 |
+
- Rank-decomposition matrices have significantly fewer parameters than original model, which means that trained LoRA weights are easily portable.
|
475 |
+
- LoRA attention layers allow to control to which extent the model is adapted toward new training images via a `scale` parameter.
|
476 |
+
|
477 |
+
[cloneofsimo](https://github.com/cloneofsimo) was the first to try out LoRA training for Stable Diffusion in the popular [lora](https://github.com/cloneofsimo/lora) GitHub repository.
|
478 |
+
|
479 |
+
With LoRA, it's possible to fine-tune Stable Diffusion on a custom image-caption pair dataset
|
480 |
+
on consumer GPUs like Tesla T4, Tesla V100.
|
481 |
+
|
482 |
+
### ### 📌 Training
|
483 |
+
|
484 |
+
First, you need to set up your development environment as is explained in the [installation section](#installing-the-dependencies). Make sure to set the `MODEL_NAME` and `DATASET_NAME` environment variables. Here, we will use [Stable Diffusion XL 1.0-base](https://huggingface.co/FFusion/FFusionXL-BASE) and the [Pokemons dataset](https://huggingface.co/datasets/lambdalabs/pokemon-blip-captions).
|
485 |
+
|
486 |
+
**___Note: It is quite useful to monitor the training progress by regularly generating sample images during training. [Weights and Biases](https://docs.wandb.ai/quickstart) is a nice solution to easily see generating images during training. All you need to do is to run `pip install wandb` before training to automatically log images.___**
|
487 |
+
|
488 |
+
```bash
|
489 |
+
export MODEL_NAME="FFusion/FFusionXL-BASE"
|
490 |
+
export DATASET_NAME="lambdalabs/pokemon-blip-captions"
|
491 |
+
```
|
492 |
+
|
493 |
+
For this example we want to directly store the trained LoRA embeddings on the Hub, so
|
494 |
+
we need to be logged in and add the `--push_to_hub` flag.
|
495 |
+
|
496 |
+
```bash
|
497 |
+
huggingface-cli login
|
498 |
+
```
|
499 |
+
|
500 |
+
Now we can start training!
|
501 |
+
|
502 |
+
```bash
|
503 |
+
accelerate launch train_text_to_image_lora_sdxl.py \
|
504 |
+
--pretrained_model_name_or_path=$MODEL_NAME \
|
505 |
+
--dataset_name=$DATASET_NAME --caption_column="text" \
|
506 |
+
--resolution=1024 --random_flip \
|
507 |
+
--train_batch_size=1 \
|
508 |
+
--num_train_epochs=2 --checkpointing_steps=500 \
|
509 |
+
--learning_rate=1e-04 --lr_scheduler="constant" --lr_warmup_steps=0 \
|
510 |
+
--seed=42 \
|
511 |
+
--output_dir="sd-pokemon-model-lora-sdxl" \
|
512 |
+
--validation_prompt="cute dragon creature" --report_to="wandb" \
|
513 |
+
--push_to_hub
|
514 |
+
```
|
515 |
+
|
516 |
+
The above command will also run inference as fine-tuning progresses and log the results to Weights and Biases.
|
517 |
+
|
518 |
+
### ### 📌 Finetuning the text encoder and UNet
|
519 |
+
|
520 |
+
The script also allows you to finetune the `text_encoder` along with the `unet`.
|
521 |
+
|
522 |
+
🚨 Training the text encoder requires additional memory.
|
523 |
+
|
524 |
+
Pass the `--train_text_encoder` argument to the training script to enable finetuning the `text_encoder` and `unet`:
|
525 |
+
|
526 |
+
```bash
|
527 |
+
accelerate launch train_text_to_image_lora_sdxl.py \
|
528 |
+
--pretrained_model_name_or_path=$MODEL_NAME \
|
529 |
+
--dataset_name=$DATASET_NAME --caption_column="text" \
|
530 |
+
--resolution=1024 --random_flip \
|
531 |
+
--train_batch_size=1 \
|
532 |
+
--num_train_epochs=2 --checkpointing_steps=500 \
|
533 |
+
--learning_rate=1e-04 --lr_scheduler="constant" --lr_warmup_steps=0 \
|
534 |
+
--seed=42 \
|
535 |
+
--output_dir="sd-pokemon-model-lora-sdxl-txt" \
|
536 |
+
--train_text_encoder \
|
537 |
+
--validation_prompt="cute dragon creature" --report_to="wandb" \
|
538 |
+
--push_to_hub
|
539 |
+
```
|
540 |
+
|
541 |
+
### ### 📌 Inference
|
542 |
+
|
543 |
+
Once you have trained a model using above command, the inference can be done simply using the `DiffusionPipeline` after loading the trained LoRA weights. You
|
544 |
+
need to pass the `output_dir` for loading the LoRA weights which, in this case, is `sd-pokemon-model-lora-sdxl`.
|
545 |
+
|
546 |
+
```python
|
547 |
+
from diffusers import DiffusionPipeline
|
548 |
+
import torch
|
549 |
+
|
550 |
+
model_path = "takuoko/sd-pokemon-model-lora-sdxl"
|
551 |
+
pipe = DiffusionPipeline.from_pretrained("FFusion/FFusionXL-BASE", torch_dtype=torch.float16)
|
552 |
+
pipe.to("cuda")
|
553 |
+
pipe.load_lora_weights(model_path)
|
554 |
+
|
555 |
+
prompt = "A pokemon with green eyes and red legs."
|
556 |
+
image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]
|
557 |
+
image.save("pokemon.png")
|
558 |
+
```
|
559 |
+
|
560 |
+
|
561 |
+
### ### 📌 Evaluation
|
562 |
+
|
563 |
+
![evaluation-ffusionAI.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/NPrW6dc_JsAxZrZZRDC_M.jpeg)
|
564 |
+
![evaluation-ffusionXL.jpg](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/b0Z2M7wp-MqCXes595ulX.jpeg)
|
565 |
+
|
566 |
+
![image_comparisons.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/m890TYI3HTk6xYMPBrLQN.png)
|
567 |
+
![combined_FFigure.png](https://cdn-uploads.huggingface.co/production/uploads/6380cf05f496d57325c12194/I67ri4P06doH7l2n7x1G0.png)
|
568 |
+
|
569 |
+
|
570 |
+
Utilizing yuvalkirstain/PickScore_v1 model, this analysis was conducted by FFusion.AI. It serves as a vital contribution to the ongoing research in testing Stable Diffusion Models' prompt win rate and accuracy.
|
571 |
+
|
572 |
+
|
573 |
+
📧 For any inquiries or support, please contact di@ffusion.ai. We're here to help you every step of the way!
|
574 |
+
|
575 |
+
|
576 |
+
|
577 |
+
|
578 |
+
|
579 |
+
|
580 |
+
|
openvino_model_vae_decoder.fp32.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:2cccd5064c093ba6690a622ffacf92c59e1ffe5dd5a68c2af351a8fadc0a0970
|
3 |
+
size 197961232
|
openvino_model_vae_decoder.fp32.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:d2bae42a380fe5d3c37460b187b2fc5758de68333e53f08350bdcb613470ec0f
|
3 |
+
size 1024173
|
text_encoder/model.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:9b3219696dc3c6aad9dc7b5e2e190ba9a1f11742ba540b1ff42d0e6aa53116fc
|
3 |
+
size 246426368
|
text_encoder/openvino_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e7691637d14da4ec8905a473a2a877e4119c7c7ea99a9f60c4d5129798041a1e
|
3 |
+
size 246121702
|
text_encoder/openvino_model.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ba85772ce517c04ada1ffe10a31c3cd76e3ea54c99120f585f5320e48cd81d40
|
3 |
+
size 1223594
|
text_encoder_2/model.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:985bdf4dc6c5284aa06e1363d9134883d0105da96913f8031ac7aa2d8387a39a
|
3 |
+
size 1390097801
|
text_encoder_2/model.onnx.data
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5ea09303caf1385a6701d372684c246755cd23f546bfdec2fb1038b5a7891c57
|
3 |
+
size 2778639360
|
text_encoder_2/openvino_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:049b885604d855b5ce1b06c949ca16e4dcb75d6de7db6bd50cc69a39fcbb48c3
|
3 |
+
size 1389320426
|
text_encoder_2/openvino_model.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:1c829ab06d6b4bf04c6419b2f98d86bcfba42b70b306c665361a70fcd7fc742d
|
3 |
+
size 3258235
|
unet/model.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8b9d4f5c9eed99df968be84568a2ccfde39ec132b8ef936a291ced9f3962dd88
|
3 |
+
size 3607328
|
unet/model.onnx.data
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:a77668d99734dcf573f1e04fd223d1ccd4cde79a42b7c4258b6fddb4038eb7f2
|
3 |
+
size 5134736640
|
unet/openvino_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:400cd33a057aefcf055a5d86ff6a4bcecd7baa9a54afc8bf776c15b1edb67cb9
|
3 |
+
size 5134928342
|
unet/openvino_model.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:0034acc941225d41403a86c54226779052ce5a000a2429535053a1ee1e394901
|
3 |
+
size 25207274
|
vae_decoder/model.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:a428fe42f13642e47e25259de5d19ba12cd4176227175eeea79a659ee1d72e55
|
3 |
+
size 198017188
|
vae_decoder/openvino_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:94bf86a568389001c97902981acbaac159a8f4287974ce22c14352e042e3f523
|
3 |
+
size 98980700
|
vae_decoder/openvino_model.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:818f4e510f83ed1383447503e6474e28e06c2868e5f9ddc9a8b5d6e7f73aedee
|
3 |
+
size 1160670
|
vae_encoder/model.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3cf3164464b7594187556e0581fe8cb8b60531e0734bd50703aed428e0d8e8a5
|
3 |
+
size 68418533
|
vae_encoder/openvino_model.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:35710b592020344bee60e9d7bef7285f820df2618611b6568ddb50d51a9c9e27
|
3 |
+
size 68327712
|
vae_encoder/openvino_model.xml
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:2d0b8b1917662f2b9c463105b52112421fdf53f2f229c129d74974a8908c855f
|
3 |
+
size 987857
|