Spaces:
Runtime error
Runtime error
Commit
·
30e735a
1
Parent(s):
95b7555
add backyard
Browse files- app.py +32 -13
- examples/backyard_additions.jpg +0 -0
- model.py +10 -3
app.py
CHANGED
|
@@ -4,13 +4,17 @@ import os
|
|
| 4 |
from model import VirtualStagingToolV2
|
| 5 |
|
| 6 |
|
| 7 |
-
def predict(image, style, color_preference):
|
| 8 |
init_image = image.convert("RGB").resize((512, 512))
|
| 9 |
|
| 10 |
vs_tool = VirtualStagingToolV2(diffusion_version="stabilityai/stable-diffusion-2-inpainting")
|
|
|
|
|
|
|
|
|
|
| 11 |
output_images, transparent_mask_image = vs_tool.virtual_stage(
|
| 12 |
image=init_image, style=style, color_preference=color_preference, number_images=1)
|
| 13 |
-
|
|
|
|
| 14 |
|
| 15 |
|
| 16 |
image_blocks = gr.Blocks()
|
|
@@ -31,21 +35,34 @@ with image_blocks as demo:
|
|
| 31 |
["Bohemian", "Coastal", "Contemporary", "Farmhouse", "French country",
|
| 32 |
"Glam", "Industrial", "Japandi", "Mid-century modern", "Minimal", "Modern",
|
| 33 |
"Rustic", "Scandinavian", "Traditional", "Transitional", ],
|
| 34 |
-
label="Design theme", elem_id="input-style"
|
|
|
|
| 35 |
)
|
| 36 |
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
with gr.Column():
|
| 45 |
-
mask_image = gr.Image(label="Mask image", elem_id="mask-img").style(height=400)
|
| 46 |
-
image_out = gr.Image(label="Output", elem_id="output-img").style(height=400)
|
| 47 |
|
| 48 |
-
btn.click(fn=predict, inputs=[image, style, color_preference], outputs=[image_out, mask_image])
|
| 49 |
|
| 50 |
gr.Markdown("## Image Examples")
|
| 51 |
gr.Examples(
|
|
@@ -56,7 +73,9 @@ with image_blocks as demo:
|
|
| 56 |
os.path.join(os.path.dirname(__file__),
|
| 57 |
"examples/oct-2019-idh-bathroom-reno-ideas-new-gallery-2.jpg"),
|
| 58 |
os.path.join(os.path.dirname(__file__),
|
| 59 |
-
"examples/tips-for-decorating-a-beautiful-bedroom-1976169-hero-e960fbb8311c4b9b875a1813962d34eb.jpg")
|
|
|
|
|
|
|
| 60 |
],
|
| 61 |
inputs=image
|
| 62 |
)
|
|
|
|
| 4 |
from model import VirtualStagingToolV2
|
| 5 |
|
| 6 |
|
| 7 |
+
def predict(image, style, backyard_style, color_preference):
|
| 8 |
init_image = image.convert("RGB").resize((512, 512))
|
| 9 |
|
| 10 |
vs_tool = VirtualStagingToolV2(diffusion_version="stabilityai/stable-diffusion-2-inpainting")
|
| 11 |
+
if backyard_style:
|
| 12 |
+
style = backyard_style
|
| 13 |
+
|
| 14 |
output_images, transparent_mask_image = vs_tool.virtual_stage(
|
| 15 |
image=init_image, style=style, color_preference=color_preference, number_images=1)
|
| 16 |
+
|
| 17 |
+
return output_images[0], transparent_mask_image
|
| 18 |
|
| 19 |
|
| 20 |
image_blocks = gr.Blocks()
|
|
|
|
| 35 |
["Bohemian", "Coastal", "Contemporary", "Farmhouse", "French country",
|
| 36 |
"Glam", "Industrial", "Japandi", "Mid-century modern", "Minimal", "Modern",
|
| 37 |
"Rustic", "Scandinavian", "Traditional", "Transitional", ],
|
| 38 |
+
label="Design theme", elem_id="input-style",
|
| 39 |
+
info="only select if the image is NOT a backyard"
|
| 40 |
)
|
| 41 |
|
| 42 |
+
backyard_style = gr.Dropdown(
|
| 43 |
+
["Beautiful garden", "Charming playhouse garden landscaping",
|
| 44 |
+
"Cottage garden's colorful planting palette", "Cozy corner with fire pit and seating",
|
| 45 |
+
"Garden landscaping with gravel landscaping", "Hip california garden landscaping",
|
| 46 |
+
"Lush green lawn", "Mediterranean garden landscaping",
|
| 47 |
+
"Moss garden", "Outdoor dining and sitting area",
|
| 48 |
+
"Party-ready outdoor space with pool, spa, and fire feature",
|
| 49 |
+
"Resort-style landscaping and pool", "Round swimming pool with lawn and pool house"],
|
| 50 |
+
label="Backyard design theme", elem_id="input-backyard-style",
|
| 51 |
+
info="only select if the image is a backyard"
|
| 52 |
)
|
| 53 |
+
|
| 54 |
+
color_preference = gr.Textbox(placeholder='Enter color preference',
|
| 55 |
+
label="Color preference", elem_id="input-color")
|
| 56 |
+
btn = gr.Button("Inpaint!").style(
|
| 57 |
+
margin=False,
|
| 58 |
+
rounded=(False, True, True, False),
|
| 59 |
+
full_width=False,
|
| 60 |
+
)
|
| 61 |
with gr.Column():
|
| 62 |
+
mask_image = gr.Image(label="Mask image", elem_id="mask-img", type="pil").style(height=400)
|
| 63 |
+
image_out = gr.Image(label="Output", elem_id="output-img", type="pil").style(height=400)
|
| 64 |
|
| 65 |
+
btn.click(fn=predict, inputs=[image, style, backyard_style, color_preference], outputs=[image_out, mask_image])
|
| 66 |
|
| 67 |
gr.Markdown("## Image Examples")
|
| 68 |
gr.Examples(
|
|
|
|
| 73 |
os.path.join(os.path.dirname(__file__),
|
| 74 |
"examples/oct-2019-idh-bathroom-reno-ideas-new-gallery-2.jpg"),
|
| 75 |
os.path.join(os.path.dirname(__file__),
|
| 76 |
+
"examples/tips-for-decorating-a-beautiful-bedroom-1976169-hero-e960fbb8311c4b9b875a1813962d34eb.jpg"),
|
| 77 |
+
os.path.join(os.path.dirname(__file__),
|
| 78 |
+
"examples/backyard_additions.jpg")
|
| 79 |
],
|
| 80 |
inputs=image
|
| 81 |
)
|
examples/backyard_additions.jpg
ADDED
|
model.py
CHANGED
|
@@ -120,8 +120,8 @@ class VirtualStagingToolV2():
|
|
| 120 |
mask_image, transparent_mask_image, init_image, items, room = self.get_mask(image_path, image)
|
| 121 |
if not style:
|
| 122 |
raise ValueError('style not provided.')
|
| 123 |
-
if
|
| 124 |
-
|
| 125 |
|
| 126 |
if room == 'kitchen':
|
| 127 |
items = [i for i in items if i in ['kitchen island', 'cabinet', 'shelf', 'counter', 'countertop', 'stool']]
|
|
@@ -130,9 +130,16 @@ class VirtualStagingToolV2():
|
|
| 130 |
elif room == 'bathroom':
|
| 131 |
items = [i for i in items if
|
| 132 |
i in ['shower', 'bathtub', 'chest of drawers', 'counter', 'countertop', 'sink']]
|
|
|
|
|
|
|
|
|
|
| 133 |
|
| 134 |
items = ', '.join(items)
|
| 135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
print(prompt)
|
| 137 |
|
| 138 |
output_images = self._edit_image(init_image, mask_image, prompt, number_images)
|
|
|
|
| 120 |
mask_image, transparent_mask_image, init_image, items, room = self.get_mask(image_path, image)
|
| 121 |
if not style:
|
| 122 |
raise ValueError('style not provided.')
|
| 123 |
+
if color_preference:
|
| 124 |
+
color_preference = f"in {color_preference}"
|
| 125 |
|
| 126 |
if room == 'kitchen':
|
| 127 |
items = [i for i in items if i in ['kitchen island', 'cabinet', 'shelf', 'counter', 'countertop', 'stool']]
|
|
|
|
| 130 |
elif room == 'bathroom':
|
| 131 |
items = [i for i in items if
|
| 132 |
i in ['shower', 'bathtub', 'chest of drawers', 'counter', 'countertop', 'sink']]
|
| 133 |
+
elif room == 'livingroom':
|
| 134 |
+
items = [i for i in items if
|
| 135 |
+
i in ['table', 'sofa', 'chest of drawers', 'armchair', 'cabinet', 'fireplace', 'coffee table']]
|
| 136 |
|
| 137 |
items = ', '.join(items)
|
| 138 |
+
|
| 139 |
+
if room == 'backyard':
|
| 140 |
+
prompt = f'realistic, high resolution, {room} with {style}'
|
| 141 |
+
else:
|
| 142 |
+
prompt = f'realistic {items}, high resolution, in the {style} style {room} {color_preference}'
|
| 143 |
print(prompt)
|
| 144 |
|
| 145 |
output_images = self._edit_image(init_image, mask_image, prompt, number_images)
|