zw89 sdart commited on
Commit
14d83f6
0 Parent(s):

Duplicate from sdart/SD_txt2img

Browse files

Co-authored-by: Stable Diffusion Art <sdart@users.noreply.huggingface.co>

Files changed (5) hide show
  1. .gitattributes +34 -0
  2. README.md +14 -0
  3. app.py +65 -0
  4. model.py +67 -0
  5. requirements.txt +9 -0
.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: SD Txt2img
3
+ emoji: 😻
4
+ colorFrom: purple
5
+ colorTo: gray
6
+ sdk: gradio
7
+ sdk_version: 3.29.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: creativeml-openrail-m
11
+ duplicated_from: sdart/SD_txt2img
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ def generateImage(prompt, n_prompt, modelName):
4
+
5
+ return models[modelName].process(prompt, n_prompt)
6
+
7
+
8
+
9
+
10
+ def create_demo():
11
+
12
+ with gr.Blocks() as demo:
13
+ with gr.Column():
14
+ prompt = gr.Textbox(label='Prompt')
15
+ n_prompt = gr.Textbox(
16
+ label='Negative Prompt',
17
+ value=
18
+ 'ugly, disfigured, deformed'
19
+ )
20
+
21
+ modelName = gr.Dropdown(choices = list(models.keys()),
22
+ label = "Model",
23
+ value=list(models.keys())[0])
24
+
25
+ run_button = gr.Button('Run')
26
+ gr.Markdown("### [Stable Diffusion Art](https://stable-diffusion-art.com/) -- tutorials and resources. Read [Model license](https://huggingface.co/spaces/CompVis/stable-diffusion-license).")
27
+ result = gr.Gallery(label='Output',
28
+ show_label=False,
29
+ elem_id='gallery').style(columns=1, rows=1, preview=True)
30
+
31
+
32
+ inputs = [
33
+ prompt,
34
+ n_prompt,
35
+ modelName,
36
+ ]
37
+
38
+ prompt.submit(
39
+ fn=generateImage,
40
+ inputs=inputs,
41
+ outputs=result
42
+ )
43
+ n_prompt.submit(
44
+ fn=generateImage,
45
+ inputs=inputs,
46
+ outputs=result
47
+ )
48
+
49
+ run_button.click(
50
+ fn=generateImage,
51
+ inputs=inputs,
52
+ outputs=result
53
+ )
54
+ return demo
55
+
56
+
57
+ if __name__ == '__main__':
58
+ from model import Model
59
+ models = {
60
+ "Stable Diffusion v1.5": Model("runwayml/stable-diffusion-v1-5"),
61
+ "Realistic Vision v2.0": Model("SG161222/Realistic_Vision_V2.0"),
62
+ "Anything v3.0": Model("Linaqruf/anything-v3.0")
63
+ }
64
+ demo = create_demo()
65
+ demo.queue().launch()
model.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+
4
+ from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
5
+ from diffusers import DPMSolverMultistepScheduler
6
+ import torch
7
+ import PIL.Image
8
+ import numpy as np
9
+ import datetime
10
+
11
+ # Check environment
12
+ print(f"Is CUDA available: {torch.cuda.is_available()}")
13
+ # True
14
+ print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
15
+ # Tesla T4
16
+
17
+
18
+ device = "cuda"
19
+
20
+
21
+
22
+ class Model:
23
+ def __init__(self, modelID):
24
+ #modelID = "runwayml/stable-diffusion-v1-5"
25
+
26
+ self.modelID = modelID
27
+ self.pipe = StableDiffusionPipeline.from_pretrained(modelID, torch_dtype=torch.float16)
28
+ self.pipe = self.pipe.to(device)
29
+ self.pipe.scheduler = DPMSolverMultistepScheduler.from_config(self.pipe.scheduler.config)
30
+ self.pipe.enable_xformers_memory_efficient_attention()
31
+
32
+ #self.pipe = StableDiffusionPipeline.from_pretrained(modelID)
33
+ #prompt = "a photo of an astronaut riding a horse on mars"
34
+ #n_prompt = "deformed, disfigured"
35
+
36
+ def process(self,
37
+ prompt: str,
38
+ negative_prompt: str,
39
+ guidance_scale:int = 7,
40
+ num_images:int = 1,
41
+ num_steps:int = 20,
42
+ ):
43
+ seed = np.random.randint(0, np.iinfo(np.int32).max)
44
+ generator = torch.Generator(device).manual_seed(seed)
45
+ now = datetime.datetime.now()
46
+ print(now)
47
+ print(self.modelID)
48
+ print(prompt)
49
+ print(negative_prompt)
50
+ with torch.inference_mode():
51
+ images = self.pipe(prompt=prompt,
52
+ negative_prompt=negative_prompt,
53
+ guidance_scale=guidance_scale,
54
+ num_images_per_prompt=num_images,
55
+ num_inference_steps=num_steps,
56
+ generator=generator).images
57
+
58
+ return images
59
+
60
+
61
+
62
+ # image = pipeline(prompt=prompt,
63
+ # negative_prompt = n_prompt,
64
+ # num_inference_steps = 2,
65
+ # guidance_scale = 7).images
66
+
67
+
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ --extra-index-url https://download.pytorch.org/whl/cu113
2
+ torch
3
+ accelerate==0.18.0
4
+ diffusers==0.16.0
5
+ gradio==3.30.0
6
+ safetensors==0.3.0
7
+ torchvision==0.15.1
8
+ transformers==4.28.1
9
+ xformers==0.0.18