AI 生成任务

图像分割在 AI 生成管线里做什么

又称 语义分割, 实例分割, 抠图, 遮罩

图像分割是把一张图在像素级别切成带标签的区域,产出的是一张遮罩,而不是一个方框。在生成管线里,它决定了「一次编辑允许动哪些像素」,所以抠背景、物体移除、局部重绘、单主体调色都建立在它之上。

分割遮罩到底是什么

输出是一张和输入同尺寸的图,每个像素上的值表示这个像素属于哪个区域。实际会用到三种形态:

  • 二值遮罩。 一个区域和「其他所有」。抠背景和带遮罩的编辑吃的就是这种。
  • Alpha 蒙版。 取值是 0 到 1 之间的小数,一根头发可以是 40% 的主体。凡是边缘发虚或半透明的东西都需要它。
  • 类别图 / 实例图。 每个像素都带标签,于是你可以单独指定天空、地面,或者第二个人。

二值遮罩和 alpha 蒙版之间的差别,是抠图质量最大的单一变量,也正是头发、毛发、烟、玻璃、运动模糊被公认为难例的原因。

分割在生成管线里的位置

很多看起来是「一步」的编辑功能,其实都是两步:先分割,再生成。

  • 抠背景 = 分割 + 一个透明通道,整个过程没有任何内容被生成。
  • 物体移除 = 分割找到物体、遮罩外扩给模型留余量、再用局部重绘补出它背后的东西。
  • 定向编辑(换外套颜色、给人脸补光、换天)靠遮罩把其余部分保护起来,不让模型碰。
  • 合成和按深度插入图层,都必须先知道区域归属才谈得上分层。

因为「生成」这一步的上限就是它收到的遮罩,所以大多数看起来是模型出错的编辑,实际上是遮罩不行。先把遮罩放到原始分辨率看一遍,再去怀疑模型。

两个真正改变结果的遮罩处理

送进局部重绘前先外扩。 严格停在物体轮廓上的遮罩,会把物体自身的颜色和贴边阴影留在受保护的一侧,模型只能绕着它画,结果是一圈鬼影轮廓。先把遮罩往外扩几像素,让边界本身也被重建。

羽化是给合成用的,不是给填充用的。 把抠像叠到新背景上时,柔和边缘很有用。但当遮罩要交给局部重绘模型时,柔边意味着一批「条件只给了一半」的像素,出来就是糊的过渡带。

用提示词做分割,以及它的边界

现在的模型允许你点一下或者说一句话来指定区域,不必手涂。对孤立、名字清楚的物体又快又准。它失效的地方也很固定:同类物体互相重叠、反射和投影(车的倒影算不算车)、透明物体、电线栏杆这类细结构,以及你那句话本身对范围说得不清楚的时候。如果文字提示总是选错范围,换成点选或框选通常比反复改措辞更快。

支持该效果的模型

取自 ZOOOP 实时模型目录,新模型上架后自动出现在这里。

  • Eraser
  • Inpaint

这个效果的提示词

一条能稳定出效果的起点。主体和场景可以换,技术性的那几句留着。

Segment the red car only, exclude its reflection on the wet asphalt, return a soft-edged alpha mask

试一下:图像分割

打开生成器,参数已经预填好。

常见问题

图像分割和目标检测有什么区别?
检测给你一个框,分割给你属于这个物体的确切像素。做编辑时框基本没用,因为框里还装着一大片你不能动的背景。
语义分割和实例分割有什么区别?
语义分割给每个像素打类别标签,画面里三个人会合成一个「人」区域。实例分割会把他们拆成第 1、2、3 个人。只想改左边那个人,就必须要实例级的输出。
抠出来为什么有白边?
因为硬二值遮罩表达不了「一半是主体一半是背景」的像素,而发丝边缘、运动模糊、玻璃基本都是这种像素。这种情况需要带小数值的 alpha 蒙版,而不是非黑即白的遮罩。
做局部重绘一定要先分割吗?
必须有遮罩,而分割是不用手涂就能拿到准确遮罩的办法。粗糙的修补用笔刷涂一涂就够;只要边界要贴合真实物体轮廓,走分割又快又干净。
图像分割能用在视频上吗?
能,但逐帧独立跑会让边界抖动,看上去像有一圈虫子在爬。视频分割的做法是把遮罩在帧间传播,通常借助运动信息,边界才能稳住。

相关术语