跑了 21 次只有 1 次透明:聊聊一个生图 API 的"透明继承"机制

0 阅读1分钟

标题:跑了 21 次只有 1 次透明:聊聊一个生图 API 的"透明继承"机制

先说背景。9 月 20 日开源的 Qwen-Image-2.1 是这代开源生图里热度最高的模型(Hacker News 740 分),最大的卖点是原生 RGBA 透明输出。但开源版要 27-29 GB 显存,把绝大多数开发者挡在门外。

10 月 2 日,百炼上架了它的 API 版本 qwen-image-2.1-pro,0.25 元/张。价格是上代的一半,参数面也齐:10 张参考图、局部标注编辑、两种提示词改写模式。

装 CLI 有两条路:官方 skill 包交给 coding agent 代跑,或者终端 npm install -g bailian-cli。调用需要 Key,在控制台的密钥管理页创建后就能开跑,下面每条命令都能照抄。

按官方文档,它可以"从文本生成普通或透明(RGBA)图像"。我花了半天,用 35 次实际调用把这个能力面跑了一遍,结论和一个直觉相反:这个 API 的透明不是"生成"能力,是"继承"机制。下面按实验拆开讲。

实验一:透明直出的触发率统计(21 次尝试)

方法:固定判定标准。下载产物 PNG,统计 alpha 通道全透明像素占比,>1% 记为触发(排除边缘抗锯齿噪声)。变量维度:提示词措辞(5 种,含英文社区流传句 The image has alpha channel and the background is transparent 与 ComfyUI 官方模板原句)、prompt_extend_mode(direct/agent 两种)、endpoint(老域名与新专属域名)、调用路径(CLI 与 HTTP)。另外,直出调用不传 size 参数,画布尺寸由模型自选(均为 2048×2048),尺寸不是变量。

结论:21 次里触发 1 次(4.8%),且该次不可复现(原条件复现 2 次均失败)。提示词措辞、改写模式、域名、调用路径都不是有效变量。这个成功率(约 1/21)不适合作为生产路径。

21 次实验矩阵:20 次白底,仅第 9 次 APE 首测出现一次透明

顺带一个性能观察:direct 模式每次 36-39 秒,agent 模式 59-70 秒:APE 多了第二轮提示词重写调用,慢 60% 左右,但对透明触发没有帮助。

实验二:透明继承的三组验证

第一轮实验里有个规律:唯一触发的样本,其输入恰好带有透明通道(沿用前序产物的透明图)。由此提出假设:alpha 通道跟随输入的图像结构,与提示词无关。设计三组对照:

2.1 透明输入 + 不提透明

bl image edit --image cat-transparent.png \
  --prompt "给猫咪的脖子上加一条蓝色围巾" \
  --model qwen-image-2.1-pro

输入 60.4% 透明 → 输出 59.6% 透明,围巾正常添加。指令完全不提"透明"。

2.2 白底输入 + 同指令(对照) 同一只猫的白底版本,同一句指令:围巾正常添加,输出 0% 透明。

2.3 alpha 跟随的边界 透明输入 + 大动作指令("放大到画面高度 90%、平移到右侧三分之一"):构图执行成功,alpha 丢失(输出 0%)。

三组合起来:透明结构的继承是稳定的,但它跟随"构图稳定性":局部编辑保持,重排构图丢失。

三泳道对照:透明进透明出、大动作丢透明、白底进白底出

实验三:继承优先级高于画布指令

设计:10 张透明底图形素材(代码生成:star/circle/square/triangle/heart/diamond/pentagon/hexagon/cross/ring,各不同色),单次调用全部传入,指令明确要求"白色背景,横向一行排开"。

结果:

  • 10 个形状全收录,颜色形状无一走样(含 ring 的镂空)
  • 输出画布自动选择 4096×1024(一行排列的宽画布)
  • 背景 81.5% 透明,"白色背景"指令被无视

这说明 alpha 继承不是"尽量保留",而是结构性行为:输入素材集合的 alpha 结构优先级,高于文本层的画布颜色指令。如果你需要白底合成,别指望提示词覆盖,得在管线里换不透明素材或后处理。

这一组同时验证了 10 张参考图上限可用:无报错、无遗漏。

10 张透明素材一次拼合:白底指令被覆盖,输出 81.5% 透明、4096×1024

实验四:两种标注编辑方式的差异

画圈(细线):输入图上叠红色细线圈住目标对象,提示词点名红圈("把红圈圈住的围巾换成亮黄色")。输出:对象正确修改、红圈完全消失、透明保持。

涂鸦(大色块):蓝色实心涂鸦覆盖目标区域,提示词点名蓝色。输出:指代生效(区域被修改),但涂鸦色块有残留。

实践建议:要指定编辑区域,用细线标注,别用大块喷涂。另外注意模型的执行精度:第一轮我把涂鸦画偏到了额头,它就把额头改成了粉色:模型严格编辑你标注的位置,不做意图修正。

红圈指哪改哪:围巾变黄、圈消失、透明保持;色块涂鸦有残留

参数面与 CLI 覆盖度

bl image generate / bl image edit(bl 2.1.0)覆盖了基础面:

bl image generate --model qwen-image-2.1-pro --prompt "..." --out-dir ./out
bl image edit --model qwen-image-2.1-pro --image a.png --image b.png --prompt "..."
  • --image 可重复传参,多图合成透传正常(实测 2 张合成,角色特征保持)
  • 输出用 --out-dir 指定目录,方便脚本化批量落盘与后续检查
  • 未透出的参数:prompt_extend_mode、enable_thinking(需 HTTP 直调在 parameters 里传)
  • 两条调用路径(CLI 与 HTTP)在对照实验中行为一致,差异只在参数透出方式:CLI 覆盖基础面,请求体细参数走 HTTP;35 次实测无失败轮次。

计费与选型数据

模型

单价

差异点

qwen-image-2.1-pro

0.25 元/张

alpha 透明、10 参考图

qwen-image-3.0

0.18 元/张

文字渲染强,无透明

qwen-image-3.0-pro

0.25/0.5 元/张(1K/2K)

排版天花板

qwen-image-2.0-pro

0.5 元/张

上代

计费口径按输出张数,多图输入不额外计费(10 图合成 1 次调用 = 0.25 元)。无免费额度(bl usage free 查询为空)。本轮 35 次实验实付 8.75 元。

核账路径:bl usage stats --model qwen-image-2.1-pro 汇总(统计有延迟);逐单记录先 bl auth login --console,再 bl log audit list --model qwen-image-2.1-pro --hours 24。延迟的量级实测是:当日 usage 只显示部分调用(35 次显示 10 次),当日逐单记录返回 0 条,次日才对齐。对账建议以控制台账单为准,CLI 统计留 24-48 小时缓冲。

机制解读与适用边界

把四组实验合起来看,行为模式是一致的:API 侧的 alpha 表现更像"输入结构的透传"而不是"条件生成"。对工程选型的启示:

  1. 透明素材加工类需求(已有 alpha 素材的编辑、合成、改色):可以直接上,透明稳定保持,10 图合成和标注编辑都是可用功能
  2. 透明生成类需求(从零生成透明 / 从照片抠透明):当前 API 不可靠(1/21 触发、抠图 0/2),工程上建议走本地开源版或外部抠图,第一张透明图拿到后再回 API 做加工链
  3. 白底合成需求:注意 alpha 继承会覆盖画布指令,输入素材的 alpha 状态决定输出

(所有数据来自实际调用,无理论推测部分已如实标注。)