多模态商品图生成与审校流水线落地

日期:2026-07-17

一、项目背景

我们服务的某电商大促团队,每年大促前最头疼的就是商品场景图。过去靠外包拍摄:一个 SKU 拍 3 到 5 张场景图,几百个 SKU 就是上千张,外包周期要两到三周,费用高且常常赶不上节奏。他们去年试过直接拿文生图模型出图,速度上来了,但踩了两个大坑:一是生成的图经常踩合规红线(侵权素材、敏感元素、误导性场景),二是商品特征保真度差——生成的连衣裙领口和实物对不上,客服被问懵。我们进场的目标很明确:用 AI 把出图效率拉起来,同时把合规与保真这道关做硬,让 AI 出的图“快且可用”。

这个项目里,我们采用的 AI 私有化部署底座承担了模型推理与编排,AI 网关负责统一接入与计量,但真正的工程量在“生成—审校—去重—入库”这条流水线怎么搭才既快又稳。

二、落地场景

我们把整条流水线切成四个环节:

第一,文生图批量生成。运营在大促素材平台填商品主数据(品类、颜色、卖点)和场景模板(“夏日草坪野餐”“居家书房”),系统按模板批量调用模型出图,一个 SKU 默认出 4 张候选。

第二,自动去背景与合规审校。生成的图先过一道去背景(把商品抠出来换到干净底图),再过合规审校模型:查侵权元素、查敏感内容、查与商品主数据是否一致(比如生成图里的颜色与实际 SKU 不符就标红)。

第三,人工抽检入库。审校通过的图进入待审池,运营抽检约 10% 做最终确认,通过的图带元数据(模板 ID、生成参数、审校结论)入库到素材库,可一键推到我们采用的电商系统的商品详情页。

第四,生成批次一致性与去重。同一 SKU 多模板、多批次生成的图,做特征向量去重,避免素材库里堆一堆长一样的图。

三、关键技术挑战与解决思路

挑战一:商品特征保真与风格统一。 文生图最大的问题是“自由发挥”——领口、logo、配色常被改得不像实物。我们的做法是在生成阶段做约束:把商品主数据里的关键属性(颜色、版型、主体)拼进 prompt 的工程化模板,并对同一 SKU 锁定种子(seed)与参考图,多张候选图共享主体特征;同时在审校环节用图像比对模型,把生成图与实物参考图做相似度打分,低于阈值的直接打回重生成。风格统一则靠场景模板库,所有模板由设计同学预先标定光影与构图,模型只填空,不自由发挥。

挑战二:合规与侵权风险审校。 这是不能省的一环。我们叠了三层审校:第一层是敏感内容检测(基于内容安全模型,挡掉违规图);第二层是侵权元素识别,对知名 IP、地标、品牌 logo 做检测,命中的图禁止入库;第三层是“与商品一致性”校验,生成图里的主体属性要能和商品主数据对上。三层里任意一层否决,图就回流到“待修改”队列,运营看审校结论改 prompt 或换模板重出。我们在 AI 网关侧给审校模型单独设了配额与限流,避免大促峰值把审校链路打挂。

挑战三:生成批次一致性与去重。 大促期间同一个 SKU 会被不同运营、不同批次反复生成,素材库很快膨胀。我们在入库前加了一道向量去重:把每张图过 embedding 模型得到特征向量,与素材库已有向量做近邻检索,余弦相似度高于 0.92 的判定为重复,只保留审校分最高的那张。这样既控制了素材库规模,也保证推送时不会连续出现雷同图。

挑战四:批量任务的吞吐与成本可控。 大促前集中出图,瞬时并发高。我们用 AI 网关的编排层做“先小模型粗筛、再大模型精修”的两段式:先用轻量模型快速出草稿,运营勾选满意的再走精修模型,避免所有图都烧最贵的算力。计量层按部门与活动沉淀 token 与费用账单,大促预算超额会自动熔断非核心活动的生成任务。

四、效果数据

大促素材生产跑了一个完整周期,上线前(纯外包/纯手调)与上线后(AI 流水线)对比如下(脱敏示意值):

指标上线前上线后变化
出图效率(SKU/人天)约 15提升至约 120约 8 倍
合规拦截率约 0%(人工事后发现)提升至约 14%风险前置
人工改图率约 65%降至约 20%明显下降
素材复用率约 30%提升至约 58%近翻倍

效率提升约 8 倍主要来自批量生成加自动去背景替代了人工拍摄与抠图;合规拦截率约 14% 意味着每百张图有约 14 张在入库前被拦下,把侵权与违规风险挡在了上线前;人工改图率从约 65% 降到约 20%,说明保真约束起作用了。

案例片段(已脱敏): 图审校的正则与去重逻辑片段(已脱敏): ```python

image_review.py (已脱敏)

import re

1) 侵权元素关键词命中(示意,真实库更大)

BANNED = re.compile(r"(某头部品牌LOGO|知名IP名称|受限地标)", re.I) def review(img_meta):    if BANNED.search(img_meta.get("tags", "")):        return "REJECT:infringe"    # 2) 与商品主数据一致性    if img_meta["color"] != img_meta["sku_color"]:        return "REWORK:color_mismatch"    return "PASS"

去重:余弦相似度高于阈值判定重复

def is_dup(vec, exist_vecs, thr=0.92):    return any(cosine(vec, e) > thr for e in exist_vecs) ```

案例片段(已脱敏): 一段审校流水线的运行日志:text [batch=B-2207] sku=SKU8821 tpl=夏日草坪 生成4张  img_1 PASS  sim=0.41  img_2 REWORK color_mismatch(生成红/实物蓝)  img_3 REJECT infringe(命中受限地标)  img_4 PASS  sim=0.88->dup(与库内SKU8821_imgA相似) 丢弃 [batch=B-2207] 入库: img_1 仅1张通过, 运营抽检OK

五、可复用经验总结

这个项目给我们两条很实在的教训,写在可复用经验里。

其一,生成快但审校不能省。我们一开始也纠结过要不要把审校做薄一点、先把量跑起来,但现场一算风险账就打消了——大促图一旦带侵权或违规元素上线,下架与品牌损失远大于审校那点算力。把“生成—审校—入库”当成一条不能断的流水线,审校是其中不可替代的一环,而不是可选项。

其二,保真优于炫技。模型能画出很炫的场景,但如果领口、颜色、logo 和实物对不上,图再好看也是废图,反而增加客服与售后成本。我们把“与商品主数据一致”作为硬门槛,宁可让一部分图打回重生成,也不放保真度不达标的图入库。对电商场景来说,商品图的第一性是“像”,其次才是“美”。

工程上还有一点:把去重放在入库前而不是入库后,素材库才不会无限膨胀,运营检索体验也好得多。向量去重那道 0.92 的阈值是用一批真实素材标出来调的,建议新项目也用自己业务的图先标一批再定阈,别直接套默认值。