Guides
Reimagine a room
֍

Generate variations of a room in different styles and summarize the interior design

In this example, we'll:

  • Use StableDiffusionXLInpaint to generate variations of a photo of a room in different styles.
  • Use StableDiffusionXLControlNet with the edge method to generate variations structured by the edges of the original image.
  • Use StableDiffusionXLControlNet with the depth method to generate variations structured by a depth map of the original image.
  • Use ComputeText to summarize the final images.

First, initialize Substrate:

Python
TypeScript

from substrate import (
Substrate,
StableDiffusionXLControlNet,
StableDiffusionXLInpaint,
ComputeText,
ComputeText,
sb,
)
s = Substrate(api_key=YOUR_API_KEY)

Here's the original image:

original

We'll first generate variations of the room using StableDiffusionXLInpaint.

  • This node can also be used to inpaint the masked part of an image if a mask_image_uri is provided. Here we'll inpaint in the entire image.
  • The strength parameter controls the strength of the generation process over the original image – higher numbers result in images further from the original.
Python
TypeScript

styles = ["sunlit onsen style tokyo office", "80s disco style berlin office at night"]
images = [
StableDiffusionXLInpaint(
image_uri="https://media.substrate.run/office.jpg",
strength=0.75,
prompt=s,
num_images=1,
)
for s in styles
]
res = s.run(*images)

inpaint tokyo

sunlit onsen style tokyo office

inpaint berlin

80s disco style berlin office at night

When using this strength value, some of the quality of the original is preserved in the variations, but they're quite different.

֍

InpaintImage is a high-level alternative to StableDiffusionXLControlNet. You should use high-level nodes if you want your node to automatically update to the latest, best model.

Next, we'll generate variations using StableDiffusionXLControlNet with the edge method, which processes the original image with an edge detection algorithm and uses edges to structure generation.

Python
TypeScript

styles = ["sunlit onsen style tokyo office", "80s disco style berlin office at night"]
images = [
StableDiffusionXLControlNet(
image_uri="https://media.substrate.run/office.jpg",
control_method="edge",
prompt=s,
num_images=1,
)
for s in styles
]
res = s.run(*images)

edge tokyo

sunlit onsen style tokyo office

edge berlin

80s disco style berlin office at night

Finally, we'll use StableDiffusionXLControlNet with the depth method, which processes the original image with a depth detection algorithm and uses depth to structure generation. We'll continue our workflow to describe the generated variations using ComputeText, and then summarize the generated descriptions using ComputeText.

Python
TypeScript

styles = ["sunlit onsen style tokyo office", "80s disco style berlin office at night"]
images = [
StableDiffusionXLControlNet(
image_uri="https://media.substrate.run/office.jpg",
control_method="depth",
prompt=s,
num_images=1,
)
for s in styles
]
descriptions = [
ComputeText(
prompt="Describe the interesting interior decor touches in this image",
image_uris=[i.future.outputs[0].image_uri],
)
for i in images
]
summaries = [
ComputeText(
prompt=sb.concat(
"Summarize the 2 most interesting details in one sentence, be concise: ",
d.future.text,
),
)
for d in descriptions
]
res = s.run(*summaries)

edge tokyo

The living room boasts a spacious design with a large window allowing natural light and a cozy couch. Unique is the open-concept office area, separated by a partial wall, offering a functional workspace while maintaining unity, enhanced by plants, lamps, and a rug in the modern, minimalist decor.

edge berlin

The image features a contemporary office with a captivating pink and purple color scheme: vibrant pink walls instill energy, while elegant purple furniture adds sophistication.