AI · AI绘画
图生图AI是怎么工作的?
简短回答
图生图AI从你的图片出发,而不是从纯噪声出发。它先给图片加上指定程度的噪声,再在提示词的引导下去噪,所以重绘幅度低就保留原图,幅度高就改变原图。蒙版可以把改动限制在某个区域(局部重绘)或新增的边框(扩图),深度图、姿势或边缘等控制图则可以在风格改变时锁定布局。
打开深度图生成核心思路:先加一部分噪声,再去噪
扩散模型通常是从纯随机状态出发,一步步去除噪声来生成图片。图生图跳过了这段旅程的前半部分:它拿到你的图片,加噪声直到画面被部分遮住,然后带着你的提示词跑完剩下的去噪步骤。SDEdit 论文介绍了这种方法,证明扩散模型无需额外训练,就能把粗略的草图或编辑过的照片变成逼真的图像。
噪声的量是最重要的单个设置。不同工具里它叫重绘幅度(strength)、去噪强度(denoise)或图像权重(image weight)。噪声少时,只有细微的纹理会变;噪声多时,形状基本消失,模型会创造一张新图,只是大致沿用旧图的颜色和布局。
在许多实现里,重绘幅度也决定实际运行多少步。如果工具设为 50 步、幅度为 0.8,图片会被加上约 40 步的噪声,然后去噪这 40 步。
怎么选重绘幅度
具体数值因模型而异,但下面的范围可以作为采用 0 到 1 刻度的工具的起点。使用图像权重刻度的工具往往相反:权重越高,保留的原图越多。
| 重绘幅度 | 原图保留什么 | 适合用于 |
|---|---|---|
| 0.1 至 0.3 | 几乎全部:形状、脸、颜色 | 轻度修整、加颗粒、细微的质感改动 |
| 0.3 至 0.5 | 构图和大部分细节 | 改变光线或调色、轻微的风格转换 |
| 0.5 至 0.7 | 布局和主要形状;细节重新绘制 | 照片转插画、草图转成稿 |
| 0.7 至 0.9 | 粗略的色块和位置 | 只把原图当作松散的布局提示 |
| 1.0 | 几乎什么都不剩 | 等同于文生图 |
每次以约 0.1 的小步调高幅度,并固定种子,这样你看到的就只是幅度本身的影响。如果人物的脸变得太多而风格还没变够,说明光靠幅度是不对的工具:加一张控制图,或者只对背景做局部重绘。
参考图与风格迁移
你给模型的图片不一定都是起点。许多工具还接受参考图,它引导结果但不会被加噪。它会被转换成特征,与文本提示词一起起作用。IP-Adapter 是一个知名的开源方法:它给冻结的文生图模型加了一个小模块,带有专门处理图像特征的注意力层,所以你可以同时给出图像提示和文字提示。在线工具常把这叫做图像提示、风格参考(style reference)或角色参考(character reference)。
给图片换风格有两种常见方式:
- 图生图加风格提示词。你的照片是起始图,提示词写明新风格,比如
watercolor illustration, loose brush strokes, white paper。简单,但幅度较高时脸和小细节会漂移。 - 结构来自一张图,风格来自另一张。控制图(深度或边缘)保住照片的布局,风格参考或提示词决定观感。这样即使幅度很高,构图也能保持稳定。
Start image: photo of a street market at dusk
Strength: 0.55
Prompt: gouache painting of a street market at dusk, flat shapes,
warm lantern light, limited palette of orange, teal and cream
Negative: photo, text, watermark要把图片写成你想要它呈现的样子,而不是写成指令。Gouache painting of a street market 比 make this a painting 效果好,因为提示词是拿去和图片字幕做匹配的,而不是当作命令来执行。一些用编辑配对数据训练的新模型确实能理解指令;请查看你的工具期望什么。
局部重绘与扩图
局部重绘(inpainting)只改动被蒙住的区域。你在要替换的区域上画一个蒙版,通常白色表示修改、黑色表示保留,模型会在匹配提示词和周围像素的前提下填充它。RePaint 表明,即使是普通的扩散模型,也可以在每个去噪步骤里把已知像素放回去来做局部重绘;用蒙版专门训练的局部重绘模型,融合通常更干净。
- 蒙版比物体略大一点,这样模型才能融合边缘。
- 把蒙版边缘柔化(羽化或模糊),避免出现明显的接缝。
- 提示词要同时写被蒙区域和它的上下文,比如
empty wooden bench in a park,而不只是remove person。 - 替换用中到高的幅度,修复用低幅度。
- 如果要改的区域在大图中很小,使用裁剪放大选项(有时叫 only masked 或蒙版裁剪),让模型以更高分辨率工作。
扩图(outpainting)是把图片延伸到边界之外。画布变大,新出现的空白区域被蒙住,模型把它填满以延续场景。它适合把方形照片变成 16:9 横幅。每次扩展图片的四分之一到一半;一次跳得太大,往往会重复物体或丢失透视。
ControlNet 式控制:深度、姿势和边缘
ControlNet 给冻结的图像模型的一部分加了一个可训练的副本,用来读取额外的控制图。控制图固定结构,提示词决定这个结构由什么构成。原始论文展示了边缘、深度、分割图和人体姿势的控制,如今许多模型家族都有同样的思路。
| 控制类型 | 输入 | 锁定什么 | 典型用途 |
|---|---|---|---|
| 边缘(Canny、线稿) | 黑白轮廓图 | 轮廓和精细形状 | 保持产品或建筑不变,同时更换材质和光线 |
| 深度 | 灰度深度图,近亮远暗 | 3D布局和前后遮挡关系 | 给房间或风景换风格,同时保持其空间 |
| 姿势(OpenPose 式) | 关节组成的火柴人骨架 | 身体位置、四肢、头部朝向 | 让新角色摆出精确的姿势 |
| 分割 | 彩色区域,每类一种颜色 | 天空、道路、人物和物体的位置 | 按区域布置场景 |
| 涂鸦 / 草图 | 粗略的手绘 | 松散的构图 | 把涂鸦变成成品图 |
大多数工具会给每种控制一个权重(例如 conditioning scale),有时还有去噪步骤中的起止点。权重过高会过于照搬控制图,比如边缘噪点变成生硬的线条;过低则会被忽略。清晰的控制图配中等数值通常效果最好。你也可以组合两种控制,比如深度加姿势,各给较低的权重。
要从照片得到深度图,可以用深度估计模型。例如,cv.cm 的深度图工具能在浏览器里把照片转成灰度深度图,你可以把它用作深度控制。
常见问题与解决办法
- 脸的身份变了。降低重绘幅度、只对背景做局部重绘,或者使用人脸或角色参考。
- 即使幅度很高,颜色也离原图太近。起始图仍然带着它的整体色彩。先在编辑器里调整颜色,或者依靠控制图和更高的幅度。
- 局部重绘后有明显接缝。扩大并羽化蒙版,并在提示词里加入一些上下文。
- 扩图后物体重复或变形。每次扩得小一点,并在提示词里重复场景描述。
- 结果模糊。可能是幅度太低无法添加细节,或者图片太小。先放大,或使用蒙版裁剪选项。
- 版权。给不属于你的照片换个风格,并不会让它变成你的;原作者的权利仍然有效。
常见问题
图生图里的重绘幅度(denoising strength)是什么?
它指模型重新绘制之前,给你的图片加了多少噪声。幅度低,原图几乎不变;幅度高,模型会替换掉大部分内容。
图生图和局部重绘有什么区别?
图生图可以改变整张图。局部重绘只改变你蒙住的区域,并尽量保持其余部分不变。
做风格迁移一定要用 ControlNet 吗?
简单的换风格,在低到中等幅度时不需要。如果你想要强烈的风格变化,同时又必须保持确切的布局、姿势或轮廓,控制图就有帮助。
为什么扩图会在边缘重复物体?
模型会用最可能出现在边界旁的东西来填充新空间,而那往往是更多相同的东西。每次扩得小一点,并描述新区域应该出现什么。
可以用真人照片做图生图的输入吗?
技术上可以,但你需要有权使用这张照片,而且在许多地方还需要本人同意。许多服务也会拦截可能误导或伤害他人的真人编辑。