2.0 KiB
2.0 KiB
Inpainting
Replace or remove parts of an image using AI.
How It Works
- Provide source image
- Create mask (white = area to change)
- Optionally describe replacement content
- AI fills masked area matching surrounding context
Tools
DALL-E 2 (OpenAI)
from openai import OpenAI
client = OpenAI()
response = client.images.edit(
model="dall-e-2",
image=open("image.png", "rb"),
mask=open("mask.png", "rb"),
prompt="A sunny beach with palm trees",
size="1024x1024"
)
Requirements:
- Image must be square PNG
- Mask: transparent areas = edit zone
- Max 4MB per file
Stable Diffusion Inpaint
from diffusers import StableDiffusionInpaintPipeline
import torch
pipe = StableDiffusionInpaintPipeline.from_pretrained(
"runwayml/stable-diffusion-inpainting",
torch_dtype=torch.float16
)
pipe.to("cuda")
result = pipe(
prompt="A fluffy cat",
image=init_image,
mask_image=mask,
num_inference_steps=30,
guidance_scale=7.5
).images[0]
Key parameters:
strength— How much to change (0.5-1.0)guidance_scale— Prompt adherence (5-15)
IOPaint (Local, Free)
# Install
pip install iopaint
# Run web UI
iopaint start --model lama --port 8080
Models:
lama— Fast, good for object removalldm— Better quality, slowersd— Stable Diffusion backend
Best Practices
- Extend mask slightly — cover edges of object to remove
- Describe surroundings — "grassy field" helps context
- Multiple passes — for large areas, edit in chunks
- Clean up edges — blend modes in photo editor
Object Removal (No Prompt)
For pure removal without replacement:
- Use LaMa model (designed for removal)
- Leave prompt empty or minimal
- AI infers from surrounding context
Common Issues
- Visible seams — feather mask edges
- Wrong content — be more specific in prompt
- Repeating patterns — edit in smaller sections
- Color mismatch — adjust levels after inpainting