Spaces:
Sleeping
Sleeping
File size: 2,513 Bytes
6d580b8 9c9afb9 6d580b8 bcfb055 35d2c61 51cca02 32767fa 9c9afb9 35d2c61 bcfb055 8c84c61 6d580b8 50a090f 6d580b8 18ca939 40329b6 50a090f 6d580b8 bcfb055 6d580b8 bcfb055 6d580b8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# Portrait Photo Generator App
# Imports
from PIL import Image, ImageFilter
import numpy as np
from transformers import pipeline
import gradio as gr
import os
model = pipeline("image-segmentation", model="facebook/detr-resnet-50-panoptic")
pred = []
def img_resize(image):
width = 1280
width_percent = (width / float(image.size[0]))
height = int((float(image.size[1]) * float(width_percent)))
return image.resize((width, height))
def image_objects(image):
global pred
image = img_resize(image)
pred = model(image)
pred_object_list = [str(i)+'_'+x['label'] for i, x in enumerate(pred)]
return gr.Dropdown.update(choices = pred_object_list, interactive = True)
def get_seg(image, object):
image = img_resize(image)
#blur_image_reverse_mask = blur_image*mask_array_three_channel_invert
seg_box=[]
for i in range(len(pred)):
#object_number = int(object.split('_')[0])
mask_array = np.asarray(pred[i]['mask'])/255
image_array = np.asarray(image)
mask_array_three_channel = np.zeros_like(image_array)
mask_array_three_channel[:,:,0] = mask_array
mask_array_three_channel[:,:,1] = mask_array
mask_array_three_channel[:,:,2] = mask_array
segmented_image = image_array*mask_array_three_channel
seg_out=segmented_image.astype(np.uint8)
seg_box.append(seg_out)
return(seg_box)
app = gr.Blocks()
with app:
gr.Markdown(
"""
## Portrait Photo Generator
- Create stunning portrait photos by blurring the background of your selected object.
- Adjust the blurring strength using the slider.
""")
with gr.Row():
with gr.Column():
gr.Markdown(
"""
### Input Image
""")
image_input = gr.Image(type="pil")
with gr.Row():
with gr.Column():
object_output = gr.Dropdown(label="Select Object From Dropdown")
with gr.Row():
with gr.Column():
seg_btn = gr.Button(label="Run")
gal1=gr.Gallery(type="filepath").style(grid=4)
seg_btn.click(get_seg, inputs=[image_input,object_output], outputs=gal1)
image_input.change(fn=image_objects,
inputs=image_input,
outputs=object_output
)
object_output.change(fn=blurr_object,
inputs=[image_input, object_output, blur_slider],
outputs=[image_output])
app.launch() |