一张电商主图拆成 6 层,一键换成双 11 版——我在 A100 上实测了蚂蚁开源的 Ming-Image
文章目录
部分视频或图片暂未收录,已在正文保留提示;需要时可查看原文。查看原文 ↗
AI 生图在电商里用得越来越多,但有个老问题一直没解决:生完改不了。
大促要把「日常价」换成「双 11 价」,背景要换成红金配色,只能整张重抽。重抽完,商品的形状、高光、鞋带的走向全变了,这张图就不能用了。
蚂蚁百灵前几天开源了 Ming-Image-0.1 设计系列,里面有个 Layer 模型,专门做一件事:把一张设计图拆成几个独立的透明图层。文字是文字,商品是商品,背景是背景。
我在一张 A100-80G 上把它部署起来,拿 12 张电商图做了一轮 1024 分辨率的评测,又搭了一个主图工作台,把「生成 → 拆层 → 换皮 → 导出」串成一条流水线。下面分两部分讲:先讲怎么部署、跑得怎么样;再讲用在电商主图上能做什么。
第一部分:拆开它
1.1 它是什么
这次开源的是两个模型加两个 Skill,权重和 Skill 都是 MIT 协议:
这篇只测两个模型。
1.2 「6B」不是全部
发布稿里写的是 6B。我第一反应是:我的 Mac(M4 Pro,24 GB)应该能跑。
下下来一看,不是这么回事。6B 只是扩散主干。一次完整推理要用到四个部件:
Design 一套 51.25 GB,Layer 的主干更大,一套约 65 GB。两个模型有一部分文件相同,去重以后一共要下 83.8 GB。
所以:
-
24 GB 的 Mac 跑不了。 社区有 MLX 移植版,int4 也要 36 GB 内存。
-
官方验证过的配置是单张 80 GB 卡、bf16。
-
两个模型一张 80G 卡放不下,只能轮流加载,切换一次 25–35 秒。
1.3 部署过程
环境:A100-SXM4-80GB,驱动 535,CUDA 12.2;Python 3.10,按官方 requirements.txt 装 PyTorch 2.4.0、Transformers 4.57.1、Diffusers 0.36.0。
跑第一张图:
git clone https://github.com/inclusionAI/Ming-Image && cd Ming-Image
pip install -r requirements.txt
# 文生图
python infer.py --model <Design 权重目录> --task text-to-image \
--prompt '...' --width 1024 --height 1024 --output-dir outputs/t2i
# 拆层(--num-layers 或者在提示词里写分层计划)
python infer.py --model <Layer 权重目录> --task layer-decompose \
--input-image poster.png --num-layers 6 --resolution 1024 \
--output-dir outputs/layers
官方自带两组冒烟测试,跑默认参数那组(Design 2048 文生图 + 1024 编辑 + Layer 1024 拆 6 层,12 步)一共 407 秒,全部通过。
一个关键设置:打开 VAE 逐帧 + 分块解码。
Layer 拆层的最后一步是 VAE 解码。拆 6 层时,它要把 6 个图层加 1 张重组图、一共 7 帧一次性解出来,1024 分辨率下这一步的显存峰值是全流程最高的。
Ming 用的 VAE(AutoencoderKLQwenImage)本身就支持两种省显存的解码方式:
-
逐帧(slicing):7 帧一帧一帧解,不一起解
-
分块(tiling):每一帧再切成小块解,最后拼回去
模型加载完以后打开就行,不用改官方代码:
for m in model.modules():
if type(m).__name__ == "AutoencoderKLQwenImage":
m.use_slicing = True
m.enable_tiling()
打开前后,1024 拆 6 层的显存峰值从 71.8 GB 降到 55.4 GB,拼回去的图层看不出接缝。80G 卡一下宽裕了 25 GB。官方给的省显存建议里也有这一条,我建议默认打开。
1.4 实测:速度和显存
单卡、bf16、12 步、VAE 逐帧 + 分块解码,测的时候卡上没有别的进程。
几点感受:
-
Design 很快,而且很稳。1024 出一张 6.4–6.8 秒,几十次下来波动不到 0.5 秒;2048 也就 38 秒。
-
Layer 的耗时和层数成正比,1024 下每多一层大约多 40 秒。可以先用 512 半分钟出稿,满意了再上 1024。我用的是默认的 eager 注意力,装上 FlashAttention 2 还能更快。
-
全程显存峰值不超过 56 GB,一张 80G 卡跑任何一个模型都有余量。
1.5 实测:Design 的中文字和透明底
中文字:电商图最怕字写错。年货节海报的大标题「年货节 · 满300减50」放大 3 倍看,笔画干净,数字和符号都对。后面主图里的「逐风 R3 跑鞋」「轻至210g」「¥399」也都是模型直接写出来的。
透明底:Design 能直接生成带透明通道的素材,不用再抠图。提示词前面加「抠图素材,背景alpha=0」,后面只写物体本身,比如「一只银色不锈钢保温杯,单个物体居中,柔和高光」。7.4 秒出图,打开 alpha 通道看,是真的透明。后面换皮时的价格标签,就是这么生成的。
1.6 实测:Layer 在电商图上拆得怎么样
Layer 的官方指标来自 Crello,是一个平面设计数据集。电商主图里有大量写实商品照片:反光、透明、毛发、阴影。它在这类图上表现怎么样,还需要进一步验证。
我做了 12 张测试图,分 4 类,每类 3 张:
测法:每张图先让 Ling-3.0-flash-VL 看图写一份分层计划(每层是什么、写了什么字,平均 11 秒),再交给 Layer 在 1024 分辨率下拆。拆完把图层叠回去,和原图算 PSNR / SSIM,看重组后丢了多少信息。同一批图再跑一遍不给计划的,做对照。24 次全部跑完,没有一次失败。
(1024,带分层计划;拆层平均 176 秒,显存峰值 54.1 GB)
几个亮点:
-
平面海报和白底商品图,基本是「拆完能直接用」的水平。 这两类 6 张图 PSNR 都在 29 dB 以上,SSIM 0.97–0.99。商品图恰恰是电商里最常见的主图类型。
-
12 张里 9 张 PSNR 超过 29 dB,中位数约 31 dB。
-
难例也有亮点。 五件护肤品前后叠在一起(D03),拆出来每件一层,33.2 dB,是全场最高;毛绒熊(D02)也有 30.7 dB。
-
文字层分得很干净。 标题、价格标签、卖点文字基本都能各自独立成层,后面换皮、改文案都靠这一点。
分层计划是关键。 不给计划、只给层数时,模型偶尔会把图层前后顺序排错,比如把背景里的大色块排到了商品前面,叠回去商品就被挡住了。给了计划之后,同一张保温杯海报从 15.0 dB 回到 33.1 dB;平面海报这一类平均从 22.0 dB 提到 32.3 dB。整体平均从 26.8 dB 提到 29.1 dB。
所以我的用法是:Ling-3.0-flash-VL 先看图写计划,再交给 Layer 拆,多花 10 秒左右,换来稳定的图层顺序和角色。
(A02 保温杯海报,带计划 33.1 dB)
第二部分:用起来——电商主图工作台
拆层这个能力,单看一组图层文件感受不出来。它真正的价值在「拆完之后」:图层可以挪、可以换、可以反复改,而商品一个像素都不动。
所以我搭了一个工作台,把流程串起来:
-
浏览器里填商品名、价格、卖点
-
Ling-3.0-flash 把这几句话扩写成一份分层的设计提示词
-
Ming Design 出主图
-
Ling-3.0-flash-VL 看图写分层计划,Ming Layer 拆层
-
在图层上换皮、改文案、出多语言版本,最后导出 PSD
Ming 两个模型跑在 A100 上,两个 Ling 模型走 API。下面用一双虚构的跑鞋「逐风 R3」走一遍。
2.1 从一句话到一张主图
左边填「逐风 R3 跑鞋 / ¥399 / 一体织面,轻至210g,碳板回弹」。Ling-3.0-flash 先把它扩写成一份分层 JSON:背景是什么、商品放哪、标题什么字号、价格标签在哪个角。画布上同步画出每一层的位置框。
然后 Design 出图:纯推理 6.8 秒,算上传输一共 8.5 秒,显存 46.9 GB。标题、三条卖点胶囊、红色价格吊牌,一次就排好了。
2.2 拆开
点「拆成 6 个透明图层」。工作台先让 Ling-3.0-flash-VL 看图写分层计划,再交给 Layer。
拆出来的 6 层:标题、卖点文字、卖点底框、价格吊牌、跑鞋、背景。连卖点的文字和它下面的白色胶囊底框都分成了两层。跑鞋的投影跟着跑鞋层走,换背景时鞋不会「飘」。
重组回去 PSNR 33.7 dB、SSIM 0.984,推理 229 秒,显存峰值 54.1 GB。
切到 3D 视图,6 层悬空展开,可以拖着转。右边列出每一层的角色。
2.3 亮点一:大促换皮,商品一个像素都不动
这是整个工作台最想展示的功能。
底部点「双 11」:工作台让 Design 重新生成一张双 11 风格的背景,再生成一个透明底的双 11 价格标签,替换掉原来的背景层和标签层。跑鞋层、标题层、卖点层都不碰,价格 ¥399 自动保留到新标签上。
画面上方会显示一行「商品层像素差 0」:换皮前后,商品区域逐像素比较,一个都没变。日常、双 11、双 12、年货节四个主题,商品层像素差全部是 0。
每换一个主题,Design 只需要生成一张背景、一个标签,每次 6–7 秒。这个项目从出图到四套换皮、文案 A/B、英文版,Design 一共调了 41 次,每次都在 6.4–6.8 秒之间。
在 3D 视图里点换皮更直观:只有最底下的背景层和价格标签那一层翻过去换掉,中间的跑鞋原地不动。
2.4 亮点二:文案 A/B,只换字
做 A/B 测试,最怕的是两张图除了文案,别的地方也不一样,那测出来的差异就说不清了。
拆层以后,只重新生成标题那一层,背景、跑鞋、卖点、价格一个像素都不变。我一次填了三条标题:「逐风 R3 · 新品首发」「一双鞋 跑完半马」「轻 · 快 · 回弹」,出三版。
2.5 亮点三:一键英文
跨境卖家要出英文主图,以前也是整张重做。
现在把分层计划里识别出的中文原文交给 Ling 翻译,再让 Design 生成透明底的英文文字,替换掉中文文字层。标题和三条卖点分别翻译、各自放回原位:「Wind Chaser R3 Running Shoes」「One-piece Knit Upper」「Light as 210g」「Carbon Plate Bounce-back」。跑鞋和价格吊牌原样保留。
2.6 亮点四:导出 PSD,交给设计师
最后一步,导出 PSD。用 Photoshop 打开,6 个图层都按「角色 · 名称」命名好了,设计师可以接着精修。也可以导出每层一张透明 PNG 的压缩包。
这一步是很多生图工具做不到的:它们最后交出来的都是一张平图。
写在最后
Ming-Image 最让我意外的,不是它出图多好看,而是它把「生成」和「编辑」接上了。一张 AI 生成的主图,拆完以后变成了一组可以反复用的素材:换节日、换文案、换语言,商品始终是同一双鞋。
如果想试:
-
不想部署:OpenRouter 上有两周免费体验Design:https://openrouter.ai/inclusionai/ming-image-0.1-design Layer:https://openrouter.ai/inclusionai/ming-image-0.1-design-layer
-
想本地跑:准备一张 80 GB 的卡,权重从 ModelScope 下,记得开 VAE 逐帧 + 分块解码,拆层前先用 Ling-3.0-flash-VL 写一份分层计划























