noahfaire commited on
Commit
41b65c1
1 Parent(s): bb65923

uploaded og files

Browse files
Files changed (2) hide show
  1. app.py +78 -0
  2. requirements.txt +9 -0
app.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import inspect
2
+ import os
3
+ from typing import List, Optional, Union
4
+ import numpy as np
5
+ import torch
6
+ import PIL
7
+ import gradio as gr
8
+ from diffusers import StableDiffusionInpaintPipeline
9
+ from rembg import remove
10
+ import requests
11
+ from io import BytesIO
12
+ from huggingface_hub import login
13
+
14
+ token = os.getenv("WRITE_TOKEN")
15
+ login(token, True)
16
+
17
+ def image_grid(imgs, rows, cols):
18
+ assert len(imgs) == rows*cols
19
+
20
+ w, h = imgs[0].size
21
+ grid = PIL.Image.new('RGB', size=(cols*w, rows*h))
22
+ grid_w, grid_h = grid.size
23
+
24
+ for i, img in enumerate(imgs):
25
+ grid.paste(img, box=(i%cols*w, i//cols*h))
26
+ return grid
27
+
28
+
29
+ def predict(dict, prompt):
30
+ image = dict['image'].convert("RGB").resize((512, 512))
31
+ mask_image = dict['mask'].convert("RGB").resize((512, 512))
32
+ images = pipe(prompt=prompt, image=image, mask_image=mask_image).images
33
+ return(images[0])
34
+
35
+ def download_image(url):
36
+ response = requests.get(url)
37
+ return PIL.Image.open(BytesIO(response.content)).convert("RGB")
38
+
39
+ model_path = "runwayml/stable-diffusion-inpainting"
40
+
41
+ pipe = StableDiffusionInpaintPipeline.from_pretrained(
42
+ model_path,
43
+ revision="fp16",
44
+ torch_dtype=torch.float16,
45
+ use_auth_token=True
46
+ )
47
+
48
+ img_url = "https://cdn.faire.com/fastly/893b071985d70819da5f0d485f1b1bb97ee4f16a6e14ef1bdd4a086b3588be58.png" # wino
49
+ image = download_image(img_url).resize((512, 512))
50
+ inverted_mask_image = remove(data = image, only_mask = True)
51
+ mask_image = PIL.ImageOps.invert(inverted_mask_image)
52
+ prompt = "crazy portal universe"
53
+
54
+ guidance_scale=7.5
55
+ num_samples = 3
56
+ generator = torch.Generator(device="cpu").manual_seed(0) # change the seed to get different results
57
+ images = pipe(
58
+ prompt=prompt,
59
+ image=image,
60
+ mask_image=mask_image,
61
+ guidance_scale=guidance_scale,
62
+ generator=generator,
63
+ num_images_per_prompt=num_samples,
64
+ ).images
65
+ images.insert(0, image)
66
+ image_grid(images, 1, num_samples + 1)
67
+
68
+ gr.Interface(
69
+ predict,
70
+ title = 'Stable Diffusion In-Painting',
71
+ inputs=[
72
+ gr.Image(source = 'upload', tool = 'sketch', type = 'pil'),
73
+ gr.Textbox(label = 'prompt')
74
+ ],
75
+ outputs = [
76
+ gr.Image()
77
+ ]
78
+ ).launch(debug=True)
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ torch
2
+ rembg
3
+ ftfy
4
+ transformers
5
+ typing
6
+ diffusers
7
+ git+https://github.com/huggingface/diffusers.git
8
+ huggingface_hub
9
+ accelerate