cv.cm

AI · AI绘画

AI抠图的原理是什么?

阅读约 7 分钟

简短回答

AI抠图工具会运行一个分割网络,给每个像素打 0(背景)到 1(主体)的分数。这张分数图就成为图像的 Alpha 通道:主体处不透明,其他地方透明,头发等柔和边缘则是半透明。结果必须存成带 Alpha 的格式,通常是 PNG,否则背景会重新冒出来。

打开AI 抠图

简单说:蒙版变成 Alpha 通道

一张照片有红、绿、蓝三个颜色通道。抠图需要再加第四个通道,叫 Alpha,用来表示每个像素有多不透明。自动抠图,就是自动把这个 Alpha 通道填好。

模型不会画新背景,也不会挪动像素,它只对每个像素回答一个问题:这个像素有多大比例属于主体?照片的颜色值原样保留。把结果放在棋盘格或新背景上时,由 Alpha 值决定哪些地方透出来。

  1. 照片先被缩放到模型的工作尺寸。很多模型使用固定的正方形输入,例如 BiRefNet 就是在 1024 × 1024 下训练和测试的。
  2. 网络给每个像素输出一个数,最后再经过一步 sigmoid,把它压缩到 0 到 1 的范围。
  3. 分数图被放大回原照片的尺寸。
  4. 分数变成 Alpha 通道(8 位图像中为 0 到 255),文件按带 Alpha 的格式编码保存。

由于第 3 步是把较小尺寸算出的蒙版放大,超大照片上的细小边缘永远只是估计值。这也是为什么 6000 像素的商品图中间看着很清晰,轮廓却略显发虚。

分割与抠像(Matting)的区别

背景去除汇集了两个研究方向,两者的差别解释了大多数边缘问题。

分割(Segmentation)抠像(Matting)
回答的问题这个像素是主体还是背景?这个像素有多大比例是主体?
典型输出基本只有 0 或 1 的蒙版0 到 1 连续变化的 Alpha 蒙版
额外输入通常不需要传统方法需要三分图(trimap):确定的主体、确定的背景、未知过渡带
擅长完整物体、商品、轮廓干净的对象头发、毛发、烟雾、运动模糊、头纱
典型缺点边缘生硬,像剪纸速度慢,需要先有比较准的形状初稿

分割决定物体在哪里,抠像决定边缘如何融合。一根发丝尖端的像素可能 30% 是头发、70% 是天空,正确的 Alpha 约为 0.3,而不是 0 或 1。经典的深度学习抠像方法 Deep Image Matting,输入图像加一张手绘的三分图,在未知带内预测这个小数值。

一键抠图工具省掉了三分图。IS-Net、BiRefNet 这类二分图像分割(dichotomous image segmentation)系列的模型,是用带有极精细轮廓的高分辨率图像训练的,所以不需要用户输入就能跟住细小结构。它们的输出依然是分割分数,而不是真正物理意义上的抠像蒙版,但因为分数是连续的,在多数照片上给出的柔和边缘与抠像相差无几。

为什么输出必须是 PNG(或 WebP)

JPEG 没有 Alpha 通道。把抠图存成 JPEG 的话,每个透明像素都得有一个颜色,工具会填上白色或黑色。你刚刚去掉的背景,就被一块纯色背景取代了。

格式Alpha 通道压缩方式适合用于
PNG有,8 位或 16 位无损要继续编辑、印刷、设计文件的抠图
WebP有有损或无损网页上体积更小的抠图
JPEG无有损已经合成了纯色背景的最终图片
AVIF有有损或无损支持该格式的网页分发

PNG 规范存储的是非关联(非预乘)Alpha:半透明像素的颜色保持完整强度,Alpha 单独存放。这使 PNG 成为安全的母版。以后放到任何背景上,都不会因为之前混合过而出现暗边。

如果电商平台要求白底 JPEG,先在工具里加上白色背景,再导出 JPEG,同时保留 PNG 作为母版。

疑难情况:头发、毛发、玻璃、阴影

  • 头发和毛发。在模型的工作尺寸下,单根发丝比一个像素还细,所以在模型看到之前就已经丢了一部分。成团的头发能保留,飘出来的碎发会淡掉。拍摄时选一面素净、反差大的墙,比任何设置都管用。
  • 颜色相近。黑狗坐在黑沙发上,或白衬衫靠着白墙,网络几乎找不到边缘,只能依靠对形状的先验知识,可能会切进主体里面。
  • 玻璃、水和薄纱。酒杯大部分是透过它看到的背景。分割模型只能二选一:保留玻璃(连同里面的旧背景),或者丢掉它。两种都不符合物理事实;真正的透明需要一张蒙版再加上玻璃的真实颜色,而单张照片给不出这些。
  • 阴影和倒影。商品的接触阴影属于地面,所以大多数抠图工具会把它删掉,商品看上去就像悬在空中。很多店铺图在事后补上一层柔和的阴影会更好看。
  • 镂空。手臂与身体之间的缝隙、把手内部或自行车轮辐里的空隙,都是背景。高分辨率的好模型能抠出来,较弱的则会把它们填实。
  • 颜色溢出。反射到主体边缘上的绿色或其他彩色光,在背景去掉之后仍留在 RGB 值里。换到新背景上,就表现为一圈彩边。

怎样得到更干净的抠图

质量主要取决于照片,而不是工具。几点速查清单:

  1. 拍摄时让主体和背景在颜色和亮度上都有明显反差。
  2. 保持主体清晰。边缘处的运动模糊和浅景深,会变成不确定的 Alpha。
  3. 让主体充满画面。主体占画面的比例越大,缩放到模型输入尺寸后保留的细节越多。
  4. 把结果分别放在深色和浅色背景上检查。白底上看不出的光晕,放到黑底上会现形,反过来也一样。
  5. 顽固的部分在编辑器里用柔边橡皮或蒙版画笔手动修,在 PNG 母版上操作。
  6. 必须完美的发丝人像,自动抠完之后再用带三分图的抠像工具或“调整边缘”画笔处理。

具体工具怎么点,请看去除照片背景的分步教程。例如 cv.cm 的抠图工具在浏览器里运行 BiRefNet,照片不会上传,可以导出透明 PNG,也可以把主体放在白色、纯色或原图虚化的背景上。

局限与合理预期

自动抠图现在已经能满足大多数商品图、头像和幻灯片的需要。但在广告和影视工作里,它替代不了精细的手工蒙版。模型只懂训练数据里见过的东西:罕见的物体、相互重叠的人物,或者主体不明确的画面(三个人里谁是主体?),都可能产生出人意料的蒙版。

模型也不知道你想留下什么。如果你只想要杯子而不要握杯子的手,自动抠图通常会把两者都留下,因为训练数据把手和杯子视为同一个前景。可以先裁剪,或者事后擦掉多余的部分。

最后,去掉背景并不会去掉其他信息。原文件里可能仍有 GPS 位置等 EXIF 数据。如果要公开分享抠图,请导出新文件,必要时清除元数据。

常见问题

抠出来的图为什么带白边或灰边?

边缘像素里还留着一部分旧背景的颜色,而且那里的 Alpha 是半透明的。先把抠图放在深色背景上检查,然后在编辑器里把边缘略微收缩或柔化,或者重新拍一张背景颜色更接近新背景的照片。

保存之后背景变成了黑色或白色,是怎么回事?

文件保存成了没有 Alpha 通道的格式,通常是 JPEG。存成 PNG 或 WebP 才能保留透明。

AI能把透明玻璃杯或瓶子抠出来吗?

只能做到大致可用。单张照片没有告诉模型玻璃有多透明,所以它要么保留玻璃并露出里面的旧背景,要么抠掉太多。做商品图时,建议把玻璃放在素净的浅色背景前拍,再手动修图。

AI抠图和绿幕抠像是一回事吗?

不是。绿幕(色度键)去掉的是一种已知的颜色,光线均匀时很可靠。AI抠图没有已知颜色,必须识别主体,所以任何背景都能用,但在细小边缘处更难预测。

去掉背景后图片画质会下降吗?

导出 PNG 的话,主体像素保持原来的颜色,变化的只有 Alpha。画质损失出现在边缘(蒙版是在较小尺寸上算出再放大的),以及导出成有损格式的时候。

全部AI教程