新把任何智能体接入 UberLLM:一个密钥,所有模型,价格不高于官方价。
UberLLM

移除背景 API:工作原理和注意事项

了解移除背景 API 如何返回透明 PNG 蒙版、处理硬边缘,以及如何适应生产级的图像和视频工作流程。

一个漂亮的预览图可能是一个背景移除API返回的最没用的输出。如果其背后的文件没有真正的alpha channel,或者其边缘被硬裁剪,你就无法将其干净地合成到新背景上,无法在不同模板中重复使用,也无法在批量处理中信任它。我宁愿选择一个分辨率较低但带有正确蒙版的文件,而不是一个看起来很锐利但用绘制的棋盘格伪造透明度的图像。

这就是贯穿始终的检验标准。产品不是缩略图。它是你可以检查、测量和无需手动清理即可重复使用的pixel level transparency。

目录

背景移除 API 输出一览

背景移除 API 接收上传的图片,将主体从背景中分离,并返回透明图片、alpha 蒙版或遮罩。这一句话背后隐藏着一个决定,它决定了大部分后续工作。您购买的不仅仅是主体检测,您购买的是一份特定的文件契约。

五种输出,五种不同的承诺

输出 包含内容 最佳用途 主要风险
RGBA PNG 抠图 主体像素加 alpha 通道 合成新背景和目录图片 如果 alpha 硬阈值化,会出现光晕
8 位 alpha 蒙版 每个像素的部分透明度 头发、毛发、玻璃和运动模糊 不合成难以预览
二值遮罩 前景为 1,,背景为 0 区域检查和批量裁剪 完全丢失柔和边缘
透明 WebP WebP 中的 alpha 通道 用于网页交付,文件更小 有损模式会模糊精细边缘
白色背景的扁平化 JPEG 无透明度 需要白色背景的电商平台列表 背景已固化,无法重复使用

RGBA PNG 抠图是当其他人将合成结果时最安全的默认选项。您保留了主体的彩色像素和每个像素独立的透明度值,因此布局系统可以将同一素材放置在白色、品牌色或照片上。风险出现在边界处。如果提供商将柔和边缘阈值化为完全不透明或完全透明,一旦新背景与旧背景形成对比,您就会看到浅色或深色边缘。

8 位 alpha 蒙版为您提供最大的控制权,但预览最不方便。由于每个像素都可以承载部分覆盖,它是头发丝、毛发、玻璃边缘、蕾丝和运动模糊的正确表示形式。您需要自己的合成步骤来判断它,这正是团队跳过评估并错过问题的原因。请在合成后判断,而不是作为灰度图像判断。

二值遮罩回答了一个更窄的问题。它可用于裁剪、区域计数或检查主体是否存在,前提是提供商记录了用于创建它的阈值。根据定义,它无法支持柔和边缘。如果您的管道将二值遮罩转换回产品图片,那么纤细的细节就已经丢失了。

透明 WebP是一种交付选择,而非质量升级。它可以减小用于网页的文件大小,但有损设置可能会模糊细小的珠宝、包装上的文字和头发。保留一个无损母版并从中派生 WebP,这样您以后可以更改压缩设置,而无需再次调用 API。

白色背景的扁平化 JPEG仅当目标永久需要白色背景且您在其他地方保留了原始文件时才适用。一旦扁平化,您就无法恢复透明度、更改背景或重建柔和阴影。根据 Growth Market Reports 的数据,全球 AI 背景移除市场在 2024 年的估值为 1.42 亿美元,这很好地提醒我们,许多供应商会向您出售一个结果,但不一定是可重复使用的结果。

从这里开始: 在比较提供商之前,请选择您的管道所需的输出,因为在 JPEG 预览中表现出色的提供商,作为蒙版源可能会完全失败。

如何发送图像并接收透明结果

工作流程足够短,可以在一下午就能搭建好,前提是您要验证收到的文件,而不是信任预览图。从您选择的输出开始,然后遵循以下步骤。

一张四步信息图,说明如何高效使用 API 移除图像背景。

调用序列

  1. 准备输入。 在发送前应用您的上传验证规则,这样格式错误或过大的文件会在您的代码中以清晰的错误失败。不要支付推理成本才发现文件根本不是图像。
  2. 使用专用密钥进行身份验证。 使用专用于此应用程序的 API key,而不是共享工作区密钥。如果它泄露,您可以撤销它而不会影响不相关的服务。
  3. 发送图像并请求输出类型。 当结果需要合成时,请求 RGBA PNG。常见的疏忽是接受提供商默认设置,导致图像扁平化为白色。
  4. 读取响应元数据。 在存储文件之前,确认输出尺寸、颜色模型和 Alpha 位深度。静默调整大小或颜色转换会在后续破坏尺寸和品牌颜色。
  5. 正确处理任务响应。 如果您收到任务 ID 而不是图像,请轮询完成状态或等待 webhook。不要将待处理响应视为失败图像并提交重复项。
  6. 通过编程方式验证 Alpha 通道。 解码文件并确认 Alpha 通道存在、并非完全不透明、并非为空,并且在边缘处包含中间值。此检查可以捕获将棋盘格绘制到普通 RGB 图像中的模型。
  7. 使用内容哈希存储结果。 将原始图像单独保存,以备审计和重新处理。哈希让您可以安全地缓存,并证明哪个输出来自哪个输入。

我们的媒体文档是关于如何提交和返回媒体作业的参考点,但无论提供商是谁,验证步骤都属于您的客户端。提供商可以在保持 endpoint 稳定的同时更改模型。

PNG Alpha 约定

W3C PNG 规范定义了 Alpha 样本在8位或16位刻度上的值,其中零表示完全透明,最大值表示完全不透明,中间值表示可以合成到新背景上的部分覆盖。这些中间值是关键所在。头发、半透明材质和抗锯齿边缘不会以全有或全无的方式占据像素。

检查 RGB 值是直通 Alpha 还是预乘 Alpha,并将其记录在您的资产元数据中。如果您的合成器假定一种而文件使用另一种,即使蒙版准确,边缘也会变暗或变亮。另请记住,PNG 包含前景和透明度,而不是最终背景。合成操作保留在下游,可以廉价地重复执行。

本演练展示了实际中预期的请求和响应流程。

当放置在黑色、白色和饱和色上时,好的结果会保持干净。您应该看不到亮光晕、锯齿状头发,以及玻璃本应透出新背景的地方却出现不透明矩形。请在全分辨率下测试,而不是缩略图大小,因为缩略图缩放会隐藏几乎所有您在生产环境中会关注的边缘缺陷。

同步、异步和 Webhook 模式比较

图像抠图不会通过开放的 HTTP 连接返回。在 UberLLM 上,文本以 token 为单位流式传输,而图像或视频任务则返回一个供您轮询的任务,或一个报告结果已就绪的 webhook。根据另一个系统需要多快响应,以及您将有多少个正在进行的任务来选择轮询或回调。一张产品照片和一份隔夜供应商数据流使用相同的任务模型。它们不应共享相同的客户端设计。

等待任务以进行交互式工作

对于原型或面向用户的预览,提交图像,存储任务 ID,并轮询直到透明 PNG 准备就绪。等待的用户仍然看到一个进度状态。在底层,客户端正在轮询任务,因此慢速的销售商不会占用整个生成过程的请求线程。

为该等待设置一个有界超时,并使用幂等键重试状态检查,这样重试就不会启动第二次推理。显示进度状态和失败路径。不要让上传屏幕一直转圈。仅按照文档中规定的规则调整大小。缩小输入以缩短等待时间会破坏精细边缘,并使后续的质量比较无效。您等待的是 alpha 通道资产,而不是扁平化的预览图。

轮询大型图像和批量图像

基于任务的调用首先返回一个标识符。您轮询状态直到抠图准备就绪。当媒体与聊天并存时,这种分离很重要:文本可以流式传输,而图像和视频则不能,即使在同一个 API key 下也是如此。

使用指数退避策略进行轮询。使状态检查可以安全重试。在第一次轮询之前存储任务 ID,因为进程重启不应导致已付费的任务丢失。异步任务跟踪和 webhook 回调确保在高容量媒体工作流中,即使单个图像完成顺序不一致,也能保持流程顺畅。

用于管道的 Webhook

当另一个系统应在抠图准备就绪后立即采取行动时,例如目录发布器或模板渲染器,请使用 webhook 回调。在信任有效载荷之前,请在您自己的 endpoint 上验证调用者身份,快速确认,并在您自己的队列中进行繁重的下载和存储工作。您的处理器必须接受重复交付,而不会两次发布资产。

照片编辑 API 指南 将背景移除描述为更广泛编辑流程中的一项操作,这也是回调复杂性的来源。对于图像和视频任务,任务跟踪和 webhook 回调意味着一个销售商的中断不会导致客户的任务丢失。您仍然需要进行对账。定期列出从未产生回调的任务并直接轮询它们。

对每个图像任务,包括一次性原型,都进行轮询或订阅。一旦图像批量到达或需要馈送给另一个自动化系统,就从紧密轮询转向 webhook。

测量遮罩质量:验收测试

不要因为在浏览器中看到二十张样本图片看起来不错就批准某个供应商。构建一个可重复的验收测试,采用固定的输入、固定的阈值以及能够区分粗略主体检测和边界质量的指标。

一张信息图,详细介绍了用于测量和验证分割遮罩质量的六项指标和测试。

支持决策的指标

指标 衡量内容 用于判断
IoU 预测遮罩与真值遮罩之间的区域重叠 粗略分割精度
Dice 偏向小区域的重叠 小主体和细微部分
Trimap 或轮廓误差 沿边界的精度 头发、毛发和柔和边缘
Alpha 覆盖率 半透明像素的占比 是否返回了真实的透明度
p50 和 p95 latency 典型和尾部响应时间 批处理吞吐量和用户等待时间
重试成功率 完成的重试调用占比 故障下的可靠性

IoU 和 Dice 能告诉你供应商是否大致找到了正确的区域。它们不能告诉你边缘是否能干净地合成。一个遮罩在重叠度上得分很高,但却可能剪掉了每一根散落的头发,因为相对于整个主体,头发只占很少的像素。

Trimap 或轮廓误差将评估重点放在边界附近,因为客户会在那里注意到缺陷。Alpha 覆盖率是你对每个响应进行廉价的健全性检查。如果本应柔和的主体只返回完全不透明和完全透明的像素,那么你看到的是一个经过阈值处理的遮罩、一个扁平化的假象,或者是一个你无意请求的输出选项。

延迟也应包含在同一份报告中。分别记录 p50 和 p95 latency,以及重试成功率,因为平均响应时间会掩盖决定批处理完成和用户放弃的尾部情况。

设计测试集

尽可能创建带有像素级遮罩的真值集,并根据精细结构、低对比度、反射或透明物体、多个主体、阴影和杂乱背景进行分层。NIST 基于分割的测量指南]区分了二值遮罩,其中背景为0,前景为1,这是一个有用的提醒,即你的 API 应该明确定义遮罩语义,而不是让客户端去猜测。

包含各种照明、相机设备、宽高比以及用户实际上传的文件格式。影棚目录集无法预测手机在仓库中拍摄照片的表现。人像集也无法告诉你关于玻璃瓶或镀铬零件的任何有用信息。

在测试之前为每个类别设置通过阈值。如果你在看到结果后才选择阈值,你就会将第一个供应商返回的任何结果合理化。请求一个柔和的 alpha 蒙版以及一个在文档中说明阈值的可选二值遮罩,并根据其预期用途评估每个遮罩。

只有在对保留数据进行校准后,才向用户显示置信度分数。未经校准的分数会产生虚假保证,并降低人工审核队列的效用,因为审核人员会停止信任路由信号。

在任何模型或供应商更改后,重新运行相同的测试集。在市场或路由设置中,即使 endpoint 和请求格式保持兼容,边缘行为也可能发生变化。

遮罩失败的疑难案例及修复方法

最常见的代价高昂的失败是前景对象缺失。比如,握着产品的手消失了,第二个人被当作背景,或者配件被剪掉了。这比粗糙的边缘更有害,因为下游合成无法凭空创造出缺失的主体,而且一旦发生这种情况,你的验收测试就应该让整个类别失败。

一张插图,展示了背景移除API技术中的常见错误,包括前景缺失、多余主体、边缘毛边和伪影。

可见的边缘失败

  • 毛发和皮毛光晕: 在白色背景上,抠图看起来可以接受,但在深色背景上则显示出明亮的光边。可能的原因是二值化或硬阈值遮罩。请求一个 alpha 蒙版,并检查边缘像素是否存在部分值。
  • 断裂的蕾丝、网格和薄金属: 肩带、电线、珠宝链和自行车辐条断裂成碎片。输入图像可能缺乏足够的结构分辨率,或者模型可能将细小部分分类为背景纹理。发送更高分辨率的原始图像,并对此类别应用轮廓检查。
  • 主体与背景颜色冲突: 白色床品上的白色连衣裙,或深色沙发上的黑色狗狗,都会产生不稳定的边缘。解决方案不是要求每个供应商都做到完美。将低对比度案例路由到人工审核或更强大的模型,并将其记录为单独的测试类别。

不要通过缩小预览图来隐藏这些缺陷。在对比色背景上以全尺寸合成并检查边界,因为顾客在放大产品页面时就是这样看到的。

伪装成模型错误的产品决策

透明物体需要产品规则。玻璃和透明瓶子在背景透出时应保留半透明性。将玻璃完全变为不透明的蒙版会产生蜡质的产品图像,而完全删除玻璃的蒙版则明显是失败的。在对瓶子、窗户、面纱和塑料包装进行评分之前,先确定什么是正确的。

阴影也需要明确的选择。如果你想要自然的合成效果,可以保留柔和的接触阴影作为部分 alpha;如果想要干净的目录抠图,则可以去除它。两种方法都有效,但在整个目录中切换它们会显得不一致。将选择编码到你的请求配置文件中并进行测试。

重叠人物测试实例分离。在身体重叠的地方,每个人都应该保持独立,而不是将一个人的手臂分配给背景或与邻居合并。整个图像的重叠度量可能会遗漏这一点,因此除了边界分数外,还要对这类情况进行目视检查。

假透明是最不明显的失败,也是最容易发现的。不要寻找棋盘格图案。解码文件并测试是否存在带有有意义的透明和半透明像素的 alpha 通道。RGB 中的棋盘格图案是透明度的“图片”,而不是真正的透明度。

分类顺序: 首先检查 alpha 通道是否存在,然后是边缘,最后是缺失的主体。这个顺序可以在你花费时间判断细微质量差异之前,排除掉不可用的文件。

视频帧与时间一致性

视频并非不相关的静态图像文件夹。逐帧分割没有时间记忆,因此在几乎相同的帧之间,边界可能会略微移动。以正常速度播放时,这些微小的变化会在头发、手部和产品边缘周围产生闪烁。

吞吐量是另一个限制。每次逐帧 API 调用都会增加一次上传和一次网络往返,然后才能编码结果。对于一张肖像照来说可接受的工作流程,对于短视频片段来说可能会变得不可行,甚至在考虑重试之前就是如此。

三种架构

架构 时间稳定性 吞吐量 最佳应用场景
逐帧 API 调用 低,边界可能在帧之间抖动 每帧一次往返 静态图像和帧数较少的短视频片段
服务器端带传播的异步作业 较高,使用时间跟踪 排队和批量处理 产品视频片段和批量处理
混合关键帧与本地跟踪 中等,取决于跟踪器 最少的 API 调用 实时预览和长视频素材

逐帧 API 调用是最简单的原型,也是最容易调试的架构。它们也是最不稳定的,通常请求量最大。将它们用于静态图像、缩略图或少量选定帧,而不是作为处理完整视频素材的假设。

服务器端带时间传播的异步作业允许处理系统利用跨帧信息。您提交视频片段或批次,跟踪作业,并检索更稳定的遮罩序列。这适用于产品视频片段和离线处理,其中队列是可接受的。

混合关键帧与本地跟踪减少了 API 流量。您发送选定的关键帧进行高质量分割,然后在它们之间本地跟踪主体,并在跟踪置信度下降或场景变化时请求新的关键帧。这对于实时预览很有吸引力,但跟踪器成为您质量表面的一部分,需要进行自己的测试。

在投入使用前,请建立一份容量检查清单。记录每用户每秒请求数、并发限制、队列行为、双向总数据传输量、重试成本以及如何恢复部分处理的视频片段。当不稳定导致需要重新处理、手动清理或再次编码时,最便宜的每图像价格可能会变成最昂贵的选项。

为视频片段固定模型或提供商,按帧存储遮罩,并记录每个作业使用的版本。如果没有这种规范,在路由更改后重新运行相同的视频素材可能会产生不同的结果,并且您将无法清晰地重现客户批准的版本。

验证上传、密钥和错误处理

围绕移除背景 API 的大多数生产事故并非奇特的模型故障。它们是糟糕的输入、泄露的密钥、重复的重试,以及将所有错误都视为临时错误的客户端。在推理之前而非队列充满无法使用的文件之后,设置好控制措施。

验证实际图像

嗅探实际的 MIME 类型和解码后的尺寸,而不是信任文件名扩展名。一个名为 product.png 的文件可以包含任何内容。安全地解码头部,限制总像素数,并在恶意或解压炸弹输入到达模型之前将其拒绝。

设置最小尺寸和最大尺寸。非常小的图像不包含足够的边缘信息以生成可靠的蒙版,您的应用程序应直接告知用户这一点。还要决定如何处理已包含透明度的图像,因为展平或保留透明度会改变结果。

保持验证错误具体化。不支持的格式、图像过大和图像过小需要不同的用户操作。通用的失败消息会导致重复上传相同的错误文件。

限制和保护密钥

每个应用程序使用一个密钥,将其保存在服务器上,切勿在前端代码中发布。API keys 具有作用域且可撤销,请求在传输过程中会加密。查阅我们的身份验证文档],了解密钥处理如何适应您的客户端,然后按计划轮换密钥,并在员工或供应商变更后立即轮换。

在平台允许的情况下,设置每个密钥的请求上限。上限不能阻止泄露,但它限制了泄露的密钥在警报和撤销生效之前可能造成的损害。为上传和作业提交添加一个幂等性密钥,这样网络重试就不会创建第二个可计费的重复项。

将错误映射到客户端行为

状态 含义 操作
429 达到速率限制 等待指定时间,然后重试
503 服务不可用 使用指数退避重试
4xx validation error 输入被拒绝 修复输入;不要原样重试

区别很简单。对于速率限制和临时不可用,使用有界指数退避和抖动进行重试。不要使用相同的字节重试验证错误,因为您只会更慢地得到相同的拒绝。

记录每个作业的输入哈希、输出哈希、任务 ID 和模型版本。该记录支持审计、重复检测和重新处理,而无需将客户图像保留超过您的保留策略要求的时间。仅在重新处理或争议处理需要时存储原始图像。

在部署前确认您的选择

只有在您的图片通过三道关卡后才能部署。输出格式必须与您的合成器匹配,响应模式必须符合您的图片尺寸和数量,并且提供商必须通过您在困难类别上的验收测试,而不仅仅是干净样本。

您可以立即运行的检查清单

  1. 收集分层样本,包括头发、玻璃、低对比度主体、多人、阴影和杂乱背景的真实上传图片。
  2. 运行验收测试,预设阈值,并将区域重叠与边界质量分开评分。
  3. 确认真实 alpha 通道,通过解码输出并检查透明和半透明像素。
  4. 测量 p95 延迟和重试行为,在您预期生产环境中的并发和图片尺寸下。
  5. 检查验证和密钥控制,包括格式错误的上传、可撤销的范围密钥和幂等重试。

如果您想通过 UberLLM 测试一条路线,请从 https://api.uberllm.dev/v1 base URL 开始。一个 API key 适用于与 OpenAI 和 Anthropic 兼容的请求,客户可以使用免费的 API key,但若要超出免费额度则必须充值。这种兼容性减少了客户端更改,但不能保证边缘质量,因此请确认所选模型在您的数据上返回真实的 alpha 通道。

即使只更改模型标识符,我也建议在切换模型后重新运行相同的测试。Endpoint 兼容性使迁移变得足够容易,以至于团队有时会跳过本可以发现不同蒙版风格的评估。

部署通过您图片上所有关卡的提供商,而不是预览最吸引人的提供商。


通过 UberLLM 运行您的验收测试,以在一个 API key 和一个余额下比较背景移除路线,使用您在生产环境中会使用的相同图片和 alpha 通道检查。从免费密钥开始,验证全分辨率蒙版,并且只保留通过您的边界、延迟和重试关卡模型。