RamAnanth1 commited on
Commit
e5fbe97
·
1 Parent(s): b92c307

Update app.py

Browse files

Remove inpaint portion temporarily

Files changed (1) hide show
  1. app.py +72 -72
app.py CHANGED
@@ -27,12 +27,12 @@ pipe_img2img = StableDiffusionImg2ImgPipeline.from_pretrained(
27
  )
28
  pipe_img2img = pipe_img2img.to("cuda")
29
 
30
- pipe_inpaint = StableDiffusionInpaintPipeline.from_pretrained(
31
- "runwayml/stable-diffusion-inpainting",
32
- revision="fp16",
33
- torch_dtype=torch.float16,
34
- )
35
- pipe_inpaint = pipe_inpaint.to("cuda")
36
 
37
  def pgd(X, model, eps=0.1, step_size=0.015, iters=40, clamp_min=0, clamp_max=1, mask=None):
38
  X_adv = X.clone().detach() + (torch.rand(*X.shape)*2*eps-eps).cuda()
@@ -95,77 +95,77 @@ def process_image_img2img(raw_image,prompt):
95
 
96
  return [(init_image,"Source Image"), (adv_image, "Adv Image"), (image_nat,"Gen. Image Nat"), (image_adv, "Gen. Image Adv")]
97
 
98
- def process_image_inpaint(raw_image,mask, prompt):
99
- init_image = raw_image.convert('RGB').resize((512,512))
100
- mask_image = mask.convert('RGB')
101
- mask_image = ImageOps.invert(mask_image).resize((512,512))
102
-
103
- # Attack using embedding of random image from internet
104
- target_url = "https://bostonglobe-prod.cdn.arcpublishing.com/resizer/2-ZvyQ3aRNl_VNo7ja51BM5-Kpk=/960x0/cloudfront-us-east-1.images.arcpublishing.com/bostonglobe/CZOXE32LQQX5UNAB42AOA3SUY4.jpg"
105
- response = requests.get(target_url)
106
- target_image = Image.open(BytesIO(response.content)).convert("RGB")
107
- target_image = target_image.resize((512, 512))
108
-
109
- with torch.autocast('cuda'):
110
- mask, X = prepare_mask_and_masked_image(init_image, mask_image)
111
- X = X.half().cuda()
112
- mask = mask.half().cuda()
113
 
114
- # Here we attack towards the embedding of a random target image. You can also simply attack towards an embedding of zeros!
115
- target = pipe_inpaint.vae.encode(preprocess(target_image).half().cuda()).latent_dist.mean
116
 
117
- adv_X = pgd(X,
118
- target = target,
119
- model=pipe_inpaint.vae.encode,
120
- criterion=torch.nn.MSELoss(),
121
- clamp_min=-1,
122
- clamp_max=1,
123
- eps=0.06,
124
- step_size=0.01,
125
- iters=1000,
126
- mask=1-mask
127
- )
128
 
129
- adv_X = (adv_X / 2 + 0.5).clamp(0, 1)
130
 
131
- adv_image = to_pil(adv_X[0]).convert("RGB")
132
- adv_image = recover_image(adv_image, init_image, mask_image, background=True)
133
 
134
- # A good seed
135
- SEED = 9209
136
 
137
- # Uncomment the below to generated other images
138
- # SEED = np.random.randint(low=0, high=100000)
139
 
140
- torch.manual_seed(SEED)
141
- print(SEED)
142
 
143
- strength = 0.7
144
- guidance_scale = 7.5
145
- num_inference_steps = 100
146
 
147
- image_nat = pipe_inpaint(prompt=prompt,
148
- image=init_image,
149
- mask_image=mask_image,
150
- eta=1,
151
- num_inference_steps=num_inference_steps,
152
- guidance_scale=guidance_scale,
153
- strength=strength
154
- ).images[0]
155
- image_nat = recover_image(image_nat, init_image, mask_image)
156
 
157
- torch.manual_seed(SEED)
158
- image_adv = pipe_inpaint(prompt=prompt,
159
- image=adv_image,
160
- mask_image=mask_image,
161
- eta=1,
162
- num_inference_steps=num_inference_steps,
163
- guidance_scale=guidance_scale,
164
- strength=strength
165
- ).images[0]
166
- image_adv = recover_image(image_adv, init_image, mask_image)
167
 
168
- return [(init_image,"Source Image"), (adv_image, "Adv Image"), (image_nat,"Gen. Image Nat"), (image_adv, "Gen. Image Adv")]
169
 
170
 
171
  examples = [["dog.png", "dog under heavy rain and muddy ground real"]]
@@ -185,11 +185,11 @@ with gr.Blocks() as demo:
185
  input_prompt_img2img = gr.Textbox(label="Prompt")
186
  run_btn_img2img = gr.Button('Run')
187
 
188
- with gr.Tab("Simple Inpainting"):
189
- input_image_inpaint = gr.Image(type="pil", label = "Source Image")
190
- mask_image_inpaint = gr.Image(type="pil", label = "Mask")
191
- input_prompt_inpaint = gr.Textbox(label="Prompt")
192
- run_btn_inpaint = gr.Button('Run')
193
 
194
  with gr.Row():
195
  result_gallery = gr.Gallery(
@@ -197,7 +197,7 @@ with gr.Blocks() as demo:
197
  ).style(grid=[2], height="auto")
198
 
199
  run_btn_img2img.click(process_image_img2img, inputs = [input_image_img2img,input_prompt_img2img], outputs = [result_gallery])
200
- run_btn_inpaint.click(process_image_inpaint, inputs = [input_image_inpaint,mask_image_inpaint,input_prompt_inpaint], outputs = [result_gallery])
201
 
202
 
203
  demo.launch(debug=True)
 
27
  )
28
  pipe_img2img = pipe_img2img.to("cuda")
29
 
30
+ # pipe_inpaint = StableDiffusionInpaintPipeline.from_pretrained(
31
+ # "runwayml/stable-diffusion-inpainting",
32
+ # revision="fp16",
33
+ # torch_dtype=torch.float16,
34
+ # )
35
+ # pipe_inpaint = pipe_inpaint.to("cuda")
36
 
37
  def pgd(X, model, eps=0.1, step_size=0.015, iters=40, clamp_min=0, clamp_max=1, mask=None):
38
  X_adv = X.clone().detach() + (torch.rand(*X.shape)*2*eps-eps).cuda()
 
95
 
96
  return [(init_image,"Source Image"), (adv_image, "Adv Image"), (image_nat,"Gen. Image Nat"), (image_adv, "Gen. Image Adv")]
97
 
98
+ # def process_image_inpaint(raw_image,mask, prompt):
99
+ # init_image = raw_image.convert('RGB').resize((512,512))
100
+ # mask_image = mask.convert('RGB')
101
+ # mask_image = ImageOps.invert(mask_image).resize((512,512))
102
+
103
+ # # Attack using embedding of random image from internet
104
+ # target_url = "https://bostonglobe-prod.cdn.arcpublishing.com/resizer/2-ZvyQ3aRNl_VNo7ja51BM5-Kpk=/960x0/cloudfront-us-east-1.images.arcpublishing.com/bostonglobe/CZOXE32LQQX5UNAB42AOA3SUY4.jpg"
105
+ # response = requests.get(target_url)
106
+ # target_image = Image.open(BytesIO(response.content)).convert("RGB")
107
+ # target_image = target_image.resize((512, 512))
108
+
109
+ # with torch.autocast('cuda'):
110
+ # mask, X = prepare_mask_and_masked_image(init_image, mask_image)
111
+ # X = X.half().cuda()
112
+ # mask = mask.half().cuda()
113
 
114
+ # # Here we attack towards the embedding of a random target image. You can also simply attack towards an embedding of zeros!
115
+ # target = pipe_inpaint.vae.encode(preprocess(target_image).half().cuda()).latent_dist.mean
116
 
117
+ # adv_X = pgd(X,
118
+ # target = target,
119
+ # model=pipe_inpaint.vae.encode,
120
+ # criterion=torch.nn.MSELoss(),
121
+ # clamp_min=-1,
122
+ # clamp_max=1,
123
+ # eps=0.06,
124
+ # step_size=0.01,
125
+ # iters=1000,
126
+ # mask=1-mask
127
+ # )
128
 
129
+ # adv_X = (adv_X / 2 + 0.5).clamp(0, 1)
130
 
131
+ # adv_image = to_pil(adv_X[0]).convert("RGB")
132
+ # adv_image = recover_image(adv_image, init_image, mask_image, background=True)
133
 
134
+ # # A good seed
135
+ # SEED = 9209
136
 
137
+ # # Uncomment the below to generated other images
138
+ # # SEED = np.random.randint(low=0, high=100000)
139
 
140
+ # torch.manual_seed(SEED)
141
+ # print(SEED)
142
 
143
+ # strength = 0.7
144
+ # guidance_scale = 7.5
145
+ # num_inference_steps = 100
146
 
147
+ # image_nat = pipe_inpaint(prompt=prompt,
148
+ # image=init_image,
149
+ # mask_image=mask_image,
150
+ # eta=1,
151
+ # num_inference_steps=num_inference_steps,
152
+ # guidance_scale=guidance_scale,
153
+ # strength=strength
154
+ # ).images[0]
155
+ # image_nat = recover_image(image_nat, init_image, mask_image)
156
 
157
+ # torch.manual_seed(SEED)
158
+ # image_adv = pipe_inpaint(prompt=prompt,
159
+ # image=adv_image,
160
+ # mask_image=mask_image,
161
+ # eta=1,
162
+ # num_inference_steps=num_inference_steps,
163
+ # guidance_scale=guidance_scale,
164
+ # strength=strength
165
+ # ).images[0]
166
+ # image_adv = recover_image(image_adv, init_image, mask_image)
167
 
168
+ # return [(init_image,"Source Image"), (adv_image, "Adv Image"), (image_nat,"Gen. Image Nat"), (image_adv, "Gen. Image Adv")]
169
 
170
 
171
  examples = [["dog.png", "dog under heavy rain and muddy ground real"]]
 
185
  input_prompt_img2img = gr.Textbox(label="Prompt")
186
  run_btn_img2img = gr.Button('Run')
187
 
188
+ # with gr.Tab("Simple Inpainting"):
189
+ # input_image_inpaint = gr.Image(type="pil", label = "Source Image")
190
+ # mask_image_inpaint = gr.Image(type="pil", label = "Mask")
191
+ # input_prompt_inpaint = gr.Textbox(label="Prompt")
192
+ # run_btn_inpaint = gr.Button('Run')
193
 
194
  with gr.Row():
195
  result_gallery = gr.Gallery(
 
197
  ).style(grid=[2], height="auto")
198
 
199
  run_btn_img2img.click(process_image_img2img, inputs = [input_image_img2img,input_prompt_img2img], outputs = [result_gallery])
200
+ # run_btn_inpaint.click(process_image_inpaint, inputs = [input_image_inpaint,mask_image_inpaint,input_prompt_inpaint], outputs = [result_gallery])
201
 
202
 
203
  demo.launch(debug=True)