In this blog, we break down how you can leverage ComfyUI’s dual-ControlNet workflow to create realistic virtual staging for real estate.
AI is shaking up every industry you can think of—healthcare, finance, entertainment, education, and yes, even real estate. Tasks that used to need expensive specialists, weeks of back-and-forth, and a big budget? Now you can do them in minutes, thanks to AI-powered image generation.
Real estate photography is a great example. Until recently, agents had to choose between listing empty, uninspiring rooms or spending a small fortune on physical staging. Now, with AI, you get the best of both worlds: virtual staging that’s not only affordable, but also incredibly flexible and powerful.
That’s where ComfyUI comes in. It’s a node-based AI workflow platform that puts professional virtual staging right at your fingertips: no technical wizardry required. In this guide, we’ll show you how to use a dual-ControlNet setup to turn empty rooms into beautifully furnished spaces. By the end, you’ll know how to build a workflow where you’re in charge of every design detail, from furniture placement to the overall vibe.
Traditional staging services can cost around $25-75 per room, with turnaround times of 24-48 hours. ComfyUI offers several advantages over these traditional methods:
This virtual staging system uses a dual-ControlNet setup that brings together depth and edge detection. That way, the furniture doesn’t just look good—it actually fits the room’s layout and keeps all the original architectural details in place.
The workflow processes input images through multiple stages:
Before we dive into building the workflow, make sure you’ve got ComfyUI and all the necessary components set up. You’ll also need a computer with a compatible GPU and Python 3.x installed.
1. First, clone the ComfyUI repository:
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
2. Install the necessary dependencies to launch ComfyUI.
pip install torch torchvision torchaudio --index-url
https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
3. Run ComfyUI.
python main.py
Note: “pip install -r requirements.txt” should be run after installing torch and related packages.
Download these models to your ComfyUI models directory:
Base Model
sd_xl_base_1.0.safetensors - Place in models/checkpoints/SDXL/ (Download Url)
ControlNet Models
control-lora-depth-rank256.safetensors - Place in models/controlnet/SDXL/ (Download Url)
DepthAnything V2 Model
Depth_anything_v2_vitl_fp32.safetensors - This will be auto-downloaded by the workflow; no manual step required.
Install these extensions using the ComfyUI Manager, accessible from the ComfyUI interface.
comfyui-depthanythingv2
comfyui-advanced-controlnet
These extensions provide the advanced depth analysis and multi-layer ControlNet functionality crucial for professional-quality results.
Before we start building, let's understand what each component does and why it's important for professional virtual staging results.
The key components powering this workflow are:
Tip: Lower quality images may result in less realistic results.
The depth understanding component is crucial for realistic furniture placement.
The depth map becomes the foundation for ensuring furniture appears properly positioned within the three-dimensional space of the room.
These settings capture essential architectural features like wall corners, door frames, and windows while filtering out noise. The edge information helps maintain clean lines and prevents furniture from appearing to float or intersect with walls.
Effective prompting is necessary to achieve realistic staging results. Our workflow uses carefully crafted positive and negative prompts.
"Complete furnished bedroom with large bed, wooden nightstands, table lamps, dresser with mirror, wall paintings, floor plants, decorative pillows, blankets, area rug, fully decorated room, abundant bedroom furniture, interior design, cozy bedroom setup"
This prompt emphasizes:
"wall color changes, ceiling color changes, beige walls, warm wall tones, different wall colors, ceiling modifications, architectural style changes, room color scheme changes, lighting changes, structural alterations"
The negative prompt prevents the AI from:
The heart of our staging system lies in the sophisticated dual ControlNet setup.
This configuration ensures strong depth adherence during the initial generation phases, establishing proper spatial relationships for furniture placement.
The edge control layer provides subtle guidance for maintaining architectural boundaries without overpowering the depth information.
These parameters balance quality with generation speed. The high step count ensures detailed furniture rendering, while the moderate denoising strength preserves the original room structure.
Now that you understand the components, let's build the complete workflow from scratch.
Begin by adding the CheckpointLoaderSimple node and load sd_xl_base_1.0.safetensors. This provides the base SDXL model with its MODEL, CLIP, and VAE outputs that power the entire workflow
The SDXL model provides high resolution and better architectural understanding, making it perfect for virtual staging. Its three outputs will connect to different parts of your workflow: the MODEL for generation, CLIP for text understanding, and VAE for image encoding/decoding.
Preparing Your Empty Room
Add a Load Image node and load your empty room photograph. This node outputs your image to three different processing paths simultaneously.
Ensure your input image is high resolution (1024x1024 or higher) with good lighting and clear architectural features. The cleaner your input image, the better your staging results will be.
Creating Spatial Understanding
Add both DownloadAndLoadDepthAnythingV2Model (select "depth_anything_v2_vitl_fp32.safetensors") and DepthAnything_V2 nodes. Connect the model loader to the processor, and your image to the processor's input.
This advanced depth estimation creates detailed 3D understanding of your room, ensuring that the furniture appears at correct distances and scales. The depth map helps prevent the furniture from floating or appearing incorrectly sized relative to the room size.
Preserving Architectural Features
Add a Canny edge detection node with a low threshold of 0.4 and a high threshold of 0.8. Connect your original image to its input.
These settings help capture important structural elements like walls, doors, and windows while filtering out noise. The resulting edge map makes sure features like windows and doors are accurately preserved in the final image.
Writing Generation Instructions
Add two CLIPTextEncode nodes, connecting both to the CLIP output from your checkpoint. Use a detailed positive prompt to describe the furniture you want, and a negative prompt to help preserve the room’s original structure.
Implementing Precision Controls
First, add two ControlNetLoader nodes: load "control-lora-depth-rank256.safetensors" and "controlnet-canny-sdxl-1.0" respectively. Then add ControlNetApplyAdvanced (for depth and edges).
Connect your depth map and first ControlNet to the depth apply node (strength 0.55, end 0.4), then chain its output to the edge apply node along with your edge map and second ControlNet (strength 0.25, end 0.3). This dual control ensures that the furniture placement respects both 3D space and architectural boundaries.
Building the Transformation Process
Add the VAEEncode node (connecting your original image and VAE), followed by the KSampler and VAEDecode nodes. Configure the KSampler with 150 steps, a CFG of 17, the scheduler set to "DPM++ 2M Karras," and a denoise value of 0.72.
Connect your model, the final conditioning from the second ControlNet, and the encoded latent to the KSampler. Then, decode the output back to an image. These settings balance quality and speed, giving you detailed furniture while preserving the room’s original structure.
Finalizing the Workflow
Add a SaveImage node and connect it to your VAEDecode output. This completes your workflow and gets you ready to transform empty rooms into staged spaces.
Test it out with an empty room image—make sure all nodes are properly connected (no red indicators)—and click "Run." Your first virtual staging should generate in 2–3 minutes, giving you a furnished room that preserves the original architecture.
Let’s look at the results below:
Bedroom Staging
Bedrooms require careful attention to furniture scale and placement. Focus your prompts on:
Living Room Variations
Adapt the workflow for living spaces by modifying prompts to include:
Kitchen and Bathroom Considerations
These spaces require a different approach:
Tailor your prompts and negative prompts for each room type to further enhance results.
Even with a streamlined ComfyUI workflow, you might run into some common problems during setup or generation. Here are quick solutions to frequent issues:
Implementing advanced AI image-generation workflows like ComfyUI for virtual staging can be transformative; but getting everything set up, optimized, and integrated with your existing systems can be challenging. That’s where Superteams comes in.
If you’re a B2B SaaS platform looking to:
Superteams can help you:
Not ready for a custom solution?
Join the waitlist for our upcoming Superteams platform, where you’ll be able to access AI image-generation tools, including virtual staging, directly through a user-friendly interface, with no technical setup required.
Contact us to discuss your requirements.