Skip to content
共绩算力文档中心

容器化部署 Qwen-Image-Layered

Qwen-Image-Layered 是通义千问团队推出的一款面向图像编辑与生成的分层模型,能够将单张静态 RGB 图片自动拆解为多个带 Alpha 通道的 RGBA 图层,实现类似 Photoshop 的图层级理解与操作,每一层都可以单独移动、缩放、重绘或替换而不影响其他内容,从而大幅提升图像编辑的精细度与可控性。【建议显存大小在 5090 及以上的卡使用】

我们提供了构建完毕的 Qwen-Image-Layered 镜像可以直接部署使用。

1.2 基于自身需要进行配置,参考配置为单卡 5090 和 1 个节点。

Section titled “1.2 基于自身需要进行配置,参考配置为单卡 5090 和 1 个节点。”

1.4 点击部署服务,耐心等待节点拉取镜像并启动。

Section titled “1.4 点击部署服务,耐心等待节点拉取镜像并启动。”

1.5 节点启动后,你所在“任务详情页”中看到的内容可能如下:

Section titled “1.5 节点启动后,你所在“任务详情页”中看到的内容可能如下:”

1.6 我们可以点击快速访问下方“7869”端口的链接,测试 Gradio 运行情况

Section titled “1.6 我们可以点击快速访问下方“7869”端口的链接,测试 Gradio 运行情况”

点击或者拖拽图片上传后添加提示词以及对应参数,点击「Decompose!」后等待结果即可:

以下是一个图像分解工具的高级设置界面,每个参数大致含义如下。

  • Prompt (Optional):文本提示,描述你想要的图像内容;填得越清晰,生成结果越贴近描述。
  • Negative Prompt (Optional):反向提示,写上你不想要的元素,例如“低质量、模糊、文字”等,模型会尽量避免这些特征。
  • Seed:随机种子,控制生成的随机性;同样的 prompt + 同样的 seed 通常会得到相似结果,换一个 seed 图像细节会改变。
  • Randomize seed:勾选后,每次运行都会自动随机一个 seed,使得每次结果都不一样;取消勾选则使用固定 seed 便于复现。
  • 数值小:更自由,创意多但可能不太符合文字描述。
  • 数值大:更严格按提示生成,但过大可能导致画面僵硬或质量下降。
  • Number of inference steps:推理步数,决定采样迭代的次数。
    • 步数少:出图快,但细节可能不足、噪点略多。
    • 步数多:画质更细腻、结构更稳定,但生成时间更长,超过某个值收益变小。
  • Layers:这里一般表示在分解或生成过程中使用的层数。
  • Whether enable CFG normalization:是否启用 CFG 归一化,一般用于让不同 CFG/true guidance 设置下的结果更加稳定,减少过饱和、过度对比等问题。
  • Automatic caption language if no prompt provided, True for EN, False for ZH:当没有写 prompt 时,是否自动生成描述文字并用于分解/生成;True 表示用英文自动描述,False 表示用中文自动描述。

Gradio 页面右下角点击「Use via API」可以查看完整调用示例:

调用接口有

  • infer

效果测试

from gradio_client import Client, handle_file
client = Client(
"https://deployment-8728-2d7tserm-7869.550w.link",
httpx_kwargs={"timeout": 600.0} # 10 分钟超时
)
job = client.submit(
input_image=handle_file('https://deployment-8728-2d7tserm-7869.550w.link/gradio_api/file=/tmp/gradio/562d4037d944a81df01e6e7afb65b4b5c1fe62191564a3438aa3265de2c685da/vitalik.jpeg'),
seed=0,
randomize_seed=True,
prompt="",
neg_prompt=" ",
true_guidance_scale=4,
num_inference_steps=10,
layer=4,
cfg_norm=True,
use_en_prompt=True,
api_name="//infer"
)
result = job.result(timeout=600)
print(result)

响应

([{'image': '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/ef94106d1a0ad3e072de69752f1407200160df9d25bdc436a2c1607d3c1b2950/image.png', 'caption': None}, {'image': '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/ceb8074049032e127ccacab0ba7aaa20f55728181178dadcd75826c8cb4fe06e/image.png', 'caption': None}, {'image': '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/fd6abc2ef3ae975cfc23c826fa8fcf806b6ad488acd3656b9a74a7bc30461545/image.png', 'caption': None}, {'image': '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/569ff45a1c58acf49f39180354f634cdea0614cb67bf176d0329dde749b169b7/image.png', 'caption': None}], '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/3ab3d51c8e756e55f6a002b4bf0daf4295e910e53390dfd1d88fba012853e77b/tmpzxx8xgyz.pptx', '/private/var/folders/8r/xj_b9xgx1fn54j87jwrdtk6c0000gn/T/gradio/b616692085a4aa60302969061a769caf68a530ddabeef4b0974b27d94f92528a/tmpzi8kcs6l.zip', 1953539652)

可以看到文件已经保存在本地,直接 open 即可看到:

open "/private/var/folders/xxxxx"