← 博客

文生图系统设计

https://medium.com/pinterest-engineering/building-pinterest-canvas-a-text-to-image-foundation-model-aa34965e84d9

https://arxiv.org/abs/2603.06453?utm_source=chatgpt.com

https://github.com/junfanz1/Awesome-AI-Review/blob/main/System%20Design/GenAI%20System%20Design.md#5-text-to-image

Pinterest Canvas

Text-To-Image

generate images conditioned on both text prompts and reference images

1. text-to-image

  • Inference
    1. 对Text prompt做embedding, 得到text embedding
    2. noisy target latent和text embedding一起送进DiT,得到clean target latent
    3. clean target latent经过VAE decoder得到图片
  • Training
    • 训练数据(text prompt, real image)
    • 只训DiT。text encoder和VAE都用pretrained, 然后freeze
    • real image经过VAE encoder得到real latent。训练时根据real latent去生成x_t

2. multimodal image editing tasks

Stage 2 starts from the trained Stage 1 text-to-image model.

  1. reference image经过VAE encoder,变成image latent tokens,然后和noisy target latent tokens 拼在一起,成为image tokens

  2. text embedding作为condition,学自己的W_q/k/v, 最后得到的Q/K/V和image tokens的Q/K/V拼在一起,得到最后做self attention的Q/K/V

  3. DiT block 会输出所有 tokens 的 hidden states:

    • target noisy latent tokens 的 hidden states
    • reference image tokens 的 hidden states
    • text tokens 的 hidden states

    但是最终只有 target noisy latent tokens 对应的 hidden states 会经过 final output head, 被映射成 velocity v。

3: High-resolution Multimodal Training

  • Stage 3 是在 Stage 2 的 multimodal image editing model 基础上继续训练
  • 核心变化是把 resolution 从 256² 提升到 512² / 1024²。
  • Loss 仍然是 flow matching loss

In-painting

  • In-painting 是 image editing task。
  • 输入:原图 + mask(1/0) + text prompt。
  • mask 告诉模型哪里可以改,哪里要保留。
  • 模型只需要在 masked region 里生成内容,同时让生成区域和未 mask 区域自然衔接。
  • Pinterest 场景里,background enhancement 可以看作一种 in-painting:保留 product foreground,生成更吸引人的 background。
  1. 用mask去生成一个masked image, 再经过VAE encoder得到masked image latent tokens
  2. 模型输入
    1. noisy target latent tokens(image stream)
    2. masked image latent tokens(image stream)
    3. mask tokens(image stream)
    4. text tokens
    5. timestep condition
  3. MMDiT
    • image stream -> 用 image-side projection 得到 Q_img, K_img, V_img
    • text stream -> 用 text-side projection 得到 Q_txt, K_txt, V_txt

out-painting

  • 保留原图内容,在图片边界外生成新的区域,把画布扩出去
  • 定义一个mask, 原图区域: mask = 0(保留); 新扩出来的区域: mask = 1 (需要生成)

Ads

alt text

Outpainting Generation Pipeline

Background Outpainting
  • Background Eligibility Signal: 先判断这张图是不是适合背景生成,筛掉一部分图
  • 用InSPyReNet Segmentor抠图,得到product mask
  • Meta-prompting layer给同一个商品生成不同背景 prompt
Aspect-ratio Outpainting
  • Aspect-ratio Eligibility Signal: 先判断这张图是不是适合扩图
  • 放进尺寸更大的canvas
  • 用不同seed生成不同的扩图

Post-generation Processing Pipeline

  1. 先用一个 reward model 给所有生成图打分,选分最高的那个
  2. 只给 top-1 做 super-resolution
  3. Post-filtering + human review ensure ad quality and product preservation.