CiaraRowles commited on
Commit
6975d9d
·
verified ·
1 Parent(s): 8c6de11
Files changed (1) hide show
  1. app.py +95 -145
app.py CHANGED
@@ -1,154 +1,104 @@
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
- import numpy as np
3
- import random
4
 
5
- # import spaces #[uncomment to use ZeroGPU]
6
- from diffusers import DiffusionPipeline
7
- import torch
 
8
 
9
- device = "cuda" if torch.cuda.is_available() else "cpu"
10
- model_repo_id = "stabilityai/sdxl-turbo" # Replace to the model you would like to use
11
-
12
- if torch.cuda.is_available():
13
- torch_dtype = torch.float16
14
- else:
15
- torch_dtype = torch.float32
16
-
17
- pipe = DiffusionPipeline.from_pretrained(model_repo_id, torch_dtype=torch_dtype)
18
- pipe = pipe.to(device)
19
-
20
- MAX_SEED = np.iinfo(np.int32).max
21
- MAX_IMAGE_SIZE = 1024
22
-
23
-
24
- # @spaces.GPU #[uncomment to use ZeroGPU]
25
- def infer(
26
- prompt,
27
- negative_prompt,
28
- seed,
29
- randomize_seed,
30
- width,
31
- height,
32
- guidance_scale,
33
- num_inference_steps,
34
- progress=gr.Progress(track_tqdm=True),
35
- ):
36
- if randomize_seed:
37
- seed = random.randint(0, MAX_SEED)
38
-
39
- generator = torch.Generator().manual_seed(seed)
40
-
41
- image = pipe(
42
- prompt=prompt,
43
- negative_prompt=negative_prompt,
44
- guidance_scale=guidance_scale,
45
- num_inference_steps=num_inference_steps,
46
- width=width,
47
- height=height,
48
- generator=generator,
49
- ).images[0]
50
-
51
- return image, seed
52
-
53
-
54
- examples = [
55
- "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
56
- "An astronaut riding a green horse",
57
- "A delicious ceviche cheesecake slice",
58
- ]
59
-
60
- css = """
61
- #col-container {
62
- margin: 0 auto;
63
- max-width: 640px;
64
- }
65
- """
66
 
67
- with gr.Blocks(css=css) as demo:
68
- with gr.Column(elem_id="col-container"):
69
- gr.Markdown(" # Text-to-Image Gradio Template")
70
-
71
- with gr.Row():
72
- prompt = gr.Text(
73
- label="Prompt",
74
- show_label=False,
75
- max_lines=1,
76
- placeholder="Enter your prompt",
77
- container=False,
78
- )
79
 
80
- run_button = gr.Button("Run", scale=0, variant="primary")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
 
82
- result = gr.Image(label="Result", show_label=False)
83
 
84
- with gr.Accordion("Advanced Settings", open=False):
85
- negative_prompt = gr.Text(
86
- label="Negative prompt",
87
- max_lines=1,
88
- placeholder="Enter a negative prompt",
89
- visible=False,
90
- )
91
 
92
- seed = gr.Slider(
93
- label="Seed",
94
- minimum=0,
95
- maximum=MAX_SEED,
96
- step=1,
97
- value=0,
98
- )
 
 
 
99
 
100
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
101
-
102
- with gr.Row():
103
- width = gr.Slider(
104
- label="Width",
105
- minimum=256,
106
- maximum=MAX_IMAGE_SIZE,
107
- step=32,
108
- value=1024, # Replace with defaults that work for your model
109
- )
110
-
111
- height = gr.Slider(
112
- label="Height",
113
- minimum=256,
114
- maximum=MAX_IMAGE_SIZE,
115
- step=32,
116
- value=1024, # Replace with defaults that work for your model
117
- )
118
-
119
- with gr.Row():
120
- guidance_scale = gr.Slider(
121
- label="Guidance scale",
122
- minimum=0.0,
123
- maximum=10.0,
124
- step=0.1,
125
- value=0.0, # Replace with defaults that work for your model
126
- )
127
-
128
- num_inference_steps = gr.Slider(
129
- label="Number of inference steps",
130
- minimum=1,
131
- maximum=50,
132
- step=1,
133
- value=2, # Replace with defaults that work for your model
134
- )
135
-
136
- gr.Examples(examples=examples, inputs=[prompt])
137
- gr.on(
138
- triggers=[run_button.click, prompt.submit],
139
- fn=infer,
140
- inputs=[
141
- prompt,
142
- negative_prompt,
143
- seed,
144
- randomize_seed,
145
- width,
146
- height,
147
- guidance_scale,
148
- num_inference_steps,
149
- ],
150
- outputs=[result, seed],
151
- )
152
-
153
- if __name__ == "__main__":
154
- demo.launch()
 
1
+ import torch
2
+ import spaces
3
+ from diffusers import StableDiffusionPipeline, DDIMScheduler, AutoencoderKL
4
+ from transformers import AutoFeatureExtractor
5
+ from demo_use_stylecode import process_single_image
6
+
7
+ from ip_adapter.ip_adapter_instruct import IPAdapterInstruct
8
+ from huggingface_hub import hf_hub_download
9
  import gradio as gr
10
+ import cv2
 
11
 
12
+ base_model_path = "SG161222/Realistic_Vision_V4.0_noVAE"
13
+ vae_model_path = "stabilityai/sd-vae-ft-mse"
14
+ image_encoder_path = "laion/CLIP-ViT-H-14-laion2B-s32B-b79K"
15
+ ip_ckpt = hf_hub_download(repo_id="CiaraRowles/stylecodes", filename="stylecodes_sd15_v1.bin", repo_type="model")
16
 
17
+ safety_model_id = "CompVis/stable-diffusion-safety-checker"
18
+ safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id)
19
+ safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
+ device = "cuda"
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ noise_scheduler = DDIMScheduler(
24
+ num_train_timesteps=1000,
25
+ beta_start=0.00085,
26
+ beta_end=0.012,
27
+ beta_schedule="scaled_linear",
28
+ clip_sample=False,
29
+ set_alpha_to_one=False,
30
+ steps_offset=1,
31
+ )
32
+ vae = AutoencoderKL.from_pretrained(vae_model_path).to(dtype=torch.float16)
33
+ pipe = StableDiffusionPipelineCFG.from_pretrained(
34
+ base_model_path,
35
+ scheduler=noise_scheduler,
36
+ vae=vae,
37
+ torch_dtype=torch.float16,
38
+ feature_extractor=safety_feature_extractor,
39
+ safety_checker=safety_checker
40
+ ).to(device)
41
 
 
42
 
43
+ cv2.setNumThreads(1)
 
 
 
 
 
 
44
 
45
+ @spaces.GPU(enable_queue=True)
46
+ def generate_image(images, prompt, negative_prompt,instruct_query, scale, nfaa_negative_prompt, progress=gr.Progress(track_tqdm=True)):
47
+
48
+
49
+
50
+
51
+ image = images
52
+ yield None
53
+
54
+ base_size = 512
55
 
56
+ # Calculate new width and height
57
+
58
+
59
+ image = process_single_image(image_path="",prompt=prompt,num_inference_steps=20,image=image)
60
+
61
+ yield image
62
+
63
+
64
+
65
+ def swap_to_gallery(images):
66
+ return gr.update(value=images, visible=True), gr.update(visible=True), gr.update(visible=False)
67
+
68
+ def remove_back_to_files():
69
+ return gr.update(visible=False), gr.update(visible=False), gr.update(visible=True)
70
+ css = '''
71
+ h1{margin-bottom: 0 !important}
72
+ '''
73
+ with gr.Blocks(css=css) as demo:
74
+ gr.Markdown("# IP-Adapter-Instruct demo")
75
+ gr.Markdown("Demo for the [CiaraRowles/IP-Adapter-Instruct model](https://huggingface.co/CiaraRowles/IP-Adapter-Instruct)")
76
+ with gr.Row():
77
+ with gr.Column():
78
+ files = gr.Image(
79
+ label="Input image",
80
+ type="pil"
81
+ )
82
+ uploaded_files = gr.Gallery(label="Your image", visible=False, columns=5, rows=1, height=125)
83
+ with gr.Column(visible=False) as clear_button:
84
+ remove_and_reupload = gr.ClearButton(value="Remove and upload new ones", components=files, size="sm")
85
+ prompt = gr.Textbox(label="Prompt",
86
+ info="Try something like 'a photo of a man/woman/person'",
87
+ placeholder="A photo of a [man/woman/person]...")
88
+ )
89
+ negative_prompt = gr.Textbox(label="Negative Prompt", placeholder="low quality")
90
+ submit = gr.Button("Submit")
91
+ with gr.Accordion(open=False, label="Advanced Options"):
92
+ nfaa_negative_prompts = gr.Textbox(label="Appended Negative Prompts", info="Negative prompts to steer generations towards safe for all audiences outputs", value="naked, bikini, skimpy, scanty, bare skin, lingerie, swimsuit, exposed, see-through")
93
+ scale = gr.Slider(label="Scale", value=0.8, step=0.1, minimum=0, maximum=2)
94
+ with gr.Column():
95
+ gallery = gr.Gallery(label="Generated Images")
96
+
97
+ submit.click(fn=generate_image,
98
+ inputs=[files, prompt, negative_prompt,instruct_query, scale, nfaa_negative_prompts],
99
+ outputs=gallery)
100
+
101
+ gr.Markdown("This demo includes extra features to mitigate the implicit bias of the model and prevent explicit usage of it to generate content with faces of people, including third parties, that is not safe for all audiences, including naked or semi-naked people.")
102
+ gr.Markdown("based on: https://huggingface.co/spaces/multimodalart/Ip-Adapter-FaceID")
103
+
104
+ demo.launch()