What is ControlNet?
ControlNet is an extension to Stable Diffusion that accepts control images:- Canny edges: Line art and contours
- Depth maps: 3D structure information
- Pose: Human skeleton keypoints (OpenPose)
- Normal maps: Surface orientation
- Scribbles: Rough sketches
- Segmentation: Semantic regions
Prerequisites
- ControlNet model files in
models/controlnet/ - Preprocessor models (optional, for automatic control image generation)
- Input image or pre-processed control map
Basic Workflow
Add CheckpointLoaderSimple to load your base Stable Diffusion model. ControlNet works with SD 1.5, SD 2.1, and SDXL variants.
control_v11p_sd15_canny.pth(edge detection)control_v11f1p_sd15_depth.pth(depth)control_v11p_sd15_openpose.pth(pose)- Many others available
Note: Preprocessor nodes vary by custom node packs. Many use nodes like “CannyEdgePreprocessor” or built-in image processing.
- positive: from positive CLIPTextEncode
- negative: from negative CLIPTextEncode
- control_net: from ControlNetLoader
- image: from LoadImage or preprocessor
- strength: 0.5-1.5 (how strongly to follow control image)
- start_percent: 0.0 (when to start applying control)
- end_percent: 1.0 (when to stop applying control)
Complete Workflow JSON
ControlNet Types
Canny Edge Detection
Best for: Line art, architectural drawings, precise outlines Control image: Black background with white edges Use cases:- Converting sketches to full illustrations
- Maintaining architectural structure
- Preserving composition while changing style
Depth Map
Best for: 3D structure, perspective control Control image: Grayscale depth map (closer = brighter) Use cases:- Maintaining scene depth
- Generating similar compositions
- 3D-to-2D conversion
OpenPose
Best for: Human pose control Control image: Stick figure skeleton Use cases:- Character pose consistency
- Animation frame generation
- Pose transfer between characters
Scribble
Best for: Rough sketches, quick ideas Control image: Simple line drawings Use cases:- Concept exploration
- Quick ideation
- Loose composition control
Segmentation
Best for: Color/region blocking Control image: Colored regions for different semantic areas Use cases:- Precise region control
- Complex compositions
- Scene layout planning
Normal Map
Best for: Surface detail, lighting consistency Control image: RGB normal map Use cases:- Detailed surface structure
- Maintaining 3D form
- Lighting-consistent generation
Parameter Guide
Strength
Controls how strongly the ControlNet influences generation:- 0.3-0.5: Subtle guidance, more creative freedom
- 0.6-0.8: Moderate control, balanced
- 0.9-1.2: Strong adherence to control image
- 1.3-1.5: Very strict, may reduce quality
- > 1.5: Can cause artifacts
Start/End Percent
Control when ControlNet is active during denoising: Full control (default):Multiple ControlNets
Combine multiple ControlNets for complex control:- Load multiple ControlNetLoader nodes
- Chain ControlNetApplyAdvanced nodes:
- First: Apply ControlNet A to base conditioning
- Second: Apply ControlNet B to output of first
- Use final output for KSampler
ControlNet with Img2Img
Combine ControlNet with image-to-image:- Use VAEEncode instead of EmptyLatentImage
- Set denoise 0.6-0.9
- Control image guides structure
- Source image provides style/details
ControlNet with Inpainting
Apply ControlNet to inpainting:- Use VAEEncodeForInpaint or InpaintModelConditioning
- Apply ControlNet to conditioning
- Control image guides the inpainted region
Advanced Techniques
Regional ControlNet
Use ConditioningSetMask to apply ControlNet only to specific regions:Strength Scheduling
Vary strength during generation using start/end_percent: Strong structure, creative details:- strength: 1.2
- start_percent: 0.0
- end_percent: 0.5
- strength: 0.6
- start_percent: 0.0
- end_percent: 1.0
Control Image Preprocessing
For best results:- Match control image resolution to generation size
- Use high-contrast edges for Canny
- Clean poses for OpenPose
- Smooth depth maps for better results
Common Use Cases
Architecture from Floorplan
- Create line drawing of floor plan
- Use Canny ControlNet, strength 1.0-1.2
- Prompt: architectural style, materials, lighting
- Result: Photorealistic render following layout
Character Pose Consistency
- Extract pose from reference with OpenPose
- Use pose ControlNet, strength 0.9-1.1
- Generate multiple characters in same pose
- Perfect for animation frames or style variations
Photo to Illustration
- Source photo → Canny edges
- Canny ControlNet, strength 0.7-0.9
- Prompt artistic style
- Result: Illustration with original composition
3D Scene Rendering
- Export depth map from 3D software
- Depth ControlNet, strength 0.8
- Prompt environment details
- Result: Photorealistic render with 3D structure
Troubleshooting
Too rigid/stiff results
- Lower strength (try 0.6-0.8)
- Reduce end_percent (try 0.7)
- Use less precise control type (scribble vs canny)
Control not being followed
- Increase strength (try 1.0-1.2)
- Check control image quality
- Ensure control image matches generation size
- Increase CFG scale
Artifacts or distortion
- Lower strength (try 0.7-0.9)
- Increase steps (try 30-40)
- Check control image for noise/errors
- Try different sampler
Wrong ControlNet type
- Canny edges appear blurry → regenerate with higher threshold
- Depth looks flat → use better depth estimation
- Pose ignored → ensure skeleton is clear and complete
Best Practices
- Match resolutions: Control image should match target size
- Start conservative: Begin with strength 0.8, adjust up/down
- Clean inputs: High-quality control images = better results
- Combine wisely: 2-3 ControlNets max, more can conflict
- Prompt alignment: Text should complement control image
- Test settings: Different models respond differently to strength
- Use end_percent: Often better to release control for final details
Model Compatibility
- SD 1.5: Most ControlNet models available
- SD 2.1: Fewer models, similar usage
- SDXL: SDXL-specific ControlNets needed
- SD3: Limited ControlNet support currently
Next Steps
- Experiment with different ControlNet types
- Combine multiple ControlNets for complex scenarios
- Try ControlNet with LoRAs for style + structure control
- Explore preprocessors for automatic control image generation
- Create custom control images for precise artistic control