AI大模型教程
一起来学习

食品计算—CookingDiffusion: Cooking Procedural Image Generation with Stable Diffusion

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。

🚀 探索专栏:学步_技术的首页 —— 持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。

🔍 技术导航:

  • 人工智能:深入探讨人工智能领域核心技术。
  • 自动驾驶:分享自动驾驶领域核心技术和实战经验。
  • 环境配置:分享Linux环境下相关技术领域环境配置所遇到的问题解决经验。
  • 图像生成:分享图像生成领域核心技术和实战经验。
  • 虚拟现实技术:分享虚拟现实技术领域核心技术和实战经验。

🌈 非常期待在这个数字世界里与您相遇,一起学习、探讨、成长。不要忘了订阅本专栏,让我们的技术之旅不再孤单!

💖💖💖 ✨✨ 欢迎关注和订阅,一起开启技术探索之旅! ✨✨

1. 背景介绍

Wang Y, Zhu B, Hao Y, et al. CookingDiffusion: Cooking Procedural Image Generation with Stable Diffusion[J]. arXiv preprint arXiv:2501.09042, 2025.

🚀以上学术论文翻译由ChatGPT辅助。

近年来,文本生成图像(text-to-image generation)模型在生成多样化且逼真的图像方面取得了显著进展。这一成功也延伸到了食物图像生成领域,在该领域中,诸如烹饪风格、食材和菜谱等多种条件输入被广泛应用。然而,目前仍有一个尚未被探索的挑战,即如何根据菜谱中的烹饪步骤生成一系列的过程图像。这项能力不仅可以通过视觉引导提升用户的烹饪体验,还有可能促成一个智能烹饪模拟系统的发展。

为填补这一空白,我们提出了一个全新的任务:烹饪过程图像生成(cooking procedural image generation)。这项任务本质上极具挑战性,因为它要求生成与烹饪步骤相匹配的照片级真实图像,并保持图像序列间的顺序一致性。

为系统性地应对这些挑战,我们提出了 CookingDiffusion,这是一种结合 Stable Diffusion 与三种创新记忆网络(Memory Nets)的新颖方法,用于建模过程提示。这些过程提示涵盖了文本提示(代表烹饪步骤)、图像提示(对应的烹饪图像),以及多模态提示(融合烹饪步骤与图像),从而确保烹饪过程图像的持续一致生成。

为了验证我们方法的有效性,我们对 YouCookII 数据集进行了预处理,建立了一个新的评测基准。实验结果表明,我们的模型在生成高质量烹饪过程图像方面表现优异,尤其在多个连续烹饪步骤中展现出显著的一致性,这一表现通过 FID 指标和我们提出的平均过程一致性指标(Average Procedure Consistency)进行量化评估。

此外,CookingDiffusion 还展示了根据菜谱操控食材与烹饪方法的能力。我们将公开发布代码、模型和数据集,以促进该领域进一步发展。

你是否曾在烹饪过程中因为看不懂菜谱而感到困扰?是否在使用每一步都带有图像引导的菜谱时,感觉更加轻松愉悦?是否想象过拥有一个可以定制个人菜谱的智能烹饪模拟系统?为了实现这些目标,如图 1 © 所示,我们提出了一个新任务:烹饪过程图像生成(cooking procedural image generation)。其目标是生成一系列与菜谱中各步骤相对应的连续一致图像。

近年来,文本生成图像(text-to-image generation)已取得显著进展 [14, 29, 33, 35, 54, 55]。如图 1 (a) 所示,传统文本图像生成的目标是根据文本描述生成对应图像,其生成过程是“被动式”的,即每张图像仅由对应文本提示决定,生成图像彼此之间相互独立。

在食物图像领域,CookGAN [60] 探索了从菜谱生成图像,即依据整段菜谱(包括食材与文字说明)生成最终菜肴图像,如图 1 (b) 所示。与之不同的是,我们聚焦于生成菜谱中每一个步骤的烹饪图像,也就是过程图像。需要指出的是,我们提出的烹饪过程图像生成任务区别于文本生成视频(text-to-video generation)任务 [13, 15, 47, 50, 52]。视频生成模型强调严格的时间连续性,相邻帧之间变化较小,通常描绘单一场景及背景的轻微变化。而我们的任务涉及场景的显著变化,并且优先保证步骤间图像的一致性,而非时间连续性。

例如,图 1 © 中第 2–4 步 [“把土豆切丝压成泥,加入盐和欧芹”,“把混合物放在烤盘上压实”,“在锅中加油煎薯饼”],相邻步骤之间的背景和食材状态都有明显变化。

烹饪过程图像生成面临三大挑战:

  • 首先,在生成顺序图像时保持其一致性是非常困难的。例如图 1 © 中的两个相邻步骤:“把土豆切丝压成泥,加入盐和欧芹”与“把混合物放在烤盘上压实”,传统文本生成图像模型会将它们作为两个独立的提示处理,生成的图像也彼此独立。在这种情况下,模型难以准确理解第二步中代词“混合物”指的是什么,也很难在视觉上一致地呈现步骤之间的变化。此外,还需要保持背景、烹饪器具和食材在整个生成图像序列中的一致性。这要求模型不仅理解当前步骤的文本,还要考虑上下文信息,从而建立步骤之间的关联。

  • 第二,烹饪过程图像生成中的“过程提示(procedural prompts)”可以不仅是基于文本的步骤提示,还可以是图像提示,甚至是多模态提示,用于捕捉上下文信息。如图 1 © 所示,我们设计了三种不同场景的提示方式,以引导生成过程保持一致性。当前步骤文本为条件提示,历史上下文则作为过程提示参与生成。

    • 场景一:仅使用文本提示。过程提示包括前序所有步骤的文本。例如生成第 4 步图像时,步骤 1–3 的文本为过程提示,第 4 步的文本作为条件提示。
    • 场景二:仅使用图像提示。利用前序步骤的图像作为过程提示来提供上下文信息。例如,生成第 4 步图像时,结合步骤 1–3 的图像作为参考。
    • 场景三:多模态提示。结合步骤文本与图像,对于缺失图像的步骤,仅使用文字说明。由于用户不一定为每个步骤上传图片,这种方式可以为缺失步骤补全图像,增强视觉引导,提升用户体验。
  • 第三,图像生成需处理菜谱步骤中的因果关系问题。这种挑战在 recipe-to-image 生成中也常被提及 [60]。模型不仅需强调“动作”,还需准确呈现每一步“结果”。

为了解决上述问题,我们提出了 CookingDiffusion,它将三种新型记忆网络(Memory Nets)融入 Stable Diffusion [35]。在该方法中,当前步骤文本作为生成图像的必要条件提示。三个记忆网络分别适配不同的过程提示类型,从而增强 Stable Diffusion 模型生成高质量且一致图像的能力。

具体而言:

  • 文本记忆网络(Text Memory Net):用于处理仅包含文本的过程提示,学习文本型的过程表示并注入生成过程。
  • 图像记忆网络(Image Memory Net):用于处理图像型的过程提示,确保视觉线索在图像生成中的一致性。
  • 两者共享统一的结构框架,以处理不同模态的过程提示。
  • 多模态记忆网络(Multi-modality Memory Net):融合前两者,处理包含文本与图像的混合提示,适配第三种场景。

由于现有数据集并不能直接用于该任务,我们预处理了 YouCookII 数据集 [59] 以供训练和评估 CookingDiffusion。我们基于每一步的时间戳与注释对视频进行分段,并使用 CLIP 分数 [31] 选取关键帧作为步骤图像的真实标签。

此外,我们提出了用于评估生成图像一致性的指标——平均过程一致性(Average Procedure Consistency, Avg-PCon),该指标基于 CLIP 分数,通过计算生成图像与非对应步骤文本之间的一致性分数,从而量化整个过程的图像一致性。

我们的贡献总结如下:

  • 首次提出烹饪过程图像生成这一新任务,并定义了三种提示场景。
  • 提出 CookingDiffusion,融合三种创新记忆网络以适配多种过程提示,确保生成高质量一致图像。
  • 预处理 YouCookII 数据集,构建用于该任务的评测基准并将公开发布。
  • 提出 Avg-PCon 指标,用于评估生成图像在过程中的一致性。

2. 相关工作

近年来,食品计算(Food Computing)[18, 25, 51, 57] 受到广泛研究关注,涵盖诸多任务,如食物类别识别 [19, 30]、食材成分分析 [2, 3, 27]、菜谱检索 [26, 38, 39, 42, 48, 61, 62]、菜谱生成 [5, 20, 37]、饮食记录与饮食跟踪 [28, 36]。这类研究对于健康管理尤为重要,有助于应对与饮食相关的疾病,如肥胖、糖尿病、心血管疾病等。本文聚焦于基于烹饪步骤和图像的烹饪过程图像生成,因此我们重点回顾与文本生成图像(text-to-image generation)和食物图像生成(food image generation)相关的研究工作。

文本生成图像是条件生成任务(conditional generative tasks)中的一个子任务,最早由 [24] 提出。该任务要求模型根据给定文本描述生成图像,图像应准确地表达文本中的内容。借助生成对抗网络(GAN)[9] 的成功,GAN 被扩展用于文本生成图像任务 [29]。此后,相关研究进一步发展,能生成更清晰且高分辨率的图像,如 text-conditional convolutional GAN [32]、GAWWN [34]、StackGAN [54]、StackGAN++ [55]、AttnGAN [49]、XMC-GAN [53]、DFGAN [45]、RiFeGAN2 [4] 和 MSCGAN [58]。然而,基于 GAN 的文本图像生成模型往往面临模式崩溃(mode collapse)和训练不稳定等问题 [8]。

扩散模型(Diffusion Models)[14] 是基于概率的生成模型,因其在图像质量与训练稳定性上的优势而受到关注 [6]。但扩散模型也存在一些挑战,如推理过程计算量大、需要多次迭代。为此,一些快速采样算法被提出 [21, 22, 43] 以提升效率。此外,扩散与反向扩散在图像空间中处理高分辨率图像时的计算成本也非常高。潜空间扩散模型(Latent Diffusion Models)[35] 通过引入基于变分自编码器(VAE)[7, 46] 的编码器-解码器结构,缓解了这一问题。Stable Diffusion [35] 则将该思路扩展到大规模生成模型中,展现出在多种生成任务中的强大能力 [1]。尽管这些模型在文本生成图像方面取得了成功,但它们仍遵循“图像仅由其对应的条件提示决定”的原则,无法在多个提示之间建立上下文一致性关系。而这种生成独立图像的原则并不适用于我们的烹饪过程图像生成任务。

因此,我们提出的 CookingDiffusion 模型在 Stable Diffusion 的基础上引入了 Memory Net,以支持一致性的过程图像生成。

此外,也有一些模型是专门为食物图像生成任务设计的,可以视为文本图像生成任务中的一个特定场景。在这些模型中,条件提示不一定是完整菜谱。例如,[16] 中的条件提示是食物风格,[11, 17] 则以食材作为输入提示。CookGAN [60] 是一个专门根据烹饪步骤与食材生成食物图像的模型,通过建模因果关系,CookGAN 能够生成生动高分辨率的食物图像。

但需要指出的是,食物图像生成任务与我们提出的任务存在本质区别。前者的目标是生成最终菜肴的图像,而我们任务的目标是生成菜谱中每一个步骤所对应的过程图像。

[23] 提出了一个多模态的过程规划任务,结合大语言模型(LLMs)和多模态生成模型共同完成流程规划任务。然而,该方法只关注每个步骤的内容,忽略了整个过程中步骤之间的一致性关系。

据我们所知,烹饪过程图像生成仍是一个尚未被研究的问题。

3 方法(Method)

3.1 问题定义(Problem Definition)

给定一份包含多个烹饪步骤(即流程)的菜谱,以及上下文中的流程提示(例如历史烹饪图像)作为输入,烹饪流程图像生成的目标是生成与每个步骤相对应的一系列一致图像。

我们将烹饪流程图像生成任务分为以下三种场景:

  • 场景1:仅由文本序列

    [

    C

    i

    ]

    i

    =

    1

    N

    [C_i]_{i=1}^N

    [Ci]i=1N 引导生成图像序列

    [

    I

    i

    g

    e

    n

    ]

    i

    =

    1

    N

    [I^{gen}_i]_{i=1}^N

    [Iigen]i=1N,其中

    C

    i

    C_i

    Ci 表示第

    i

    i

    i 步的文本说明,

    N

    N

    N 为菜谱中的总步骤数。为了生成

    I

    i

    g

    e

    n

    I^{gen}_i

    Iigen,将

    C

    i

    C_i

    Ci 作为条件提示,将历史步骤

    [

    C

    j

    ]

    j

    =

    1

    i

    1

    [C_j]_{j=1}^{i-1}

    [Cj]j=1i1 作为流程提示以确保图像间的一致性。

  • 场景2:利用历史中已有的图像序列

    [

    I

    j

    k

    n

    o

    w

    n

    ]

    j

    =

    1

    i

    1

    [I^{known}_j]_{j=1}^{i-1}

    [Ijknown]j=1i1 作为流程提示。结合文本条件提示

    C

    i

    C_i

    Ci,目标同样是生成完整菜谱中每一步的图像

    I

    i

    g

    e

    n

    I^{gen}_i

    Iigen

    i

    =

    1

    ,

    .

    .

    .

    ,

    N

    i = 1, …, N

    i=1,,N)。

  • 场景3:引入多模态流程提示,其中一部分步骤有图像,另一部分只有文字。记图像所占比例为

    p

    p

    p,文字为

    1

    p

    1 – p

    1p,则流程提示序列为

    [

    C

    n

    i

    ,

    I

    m

    j

    k

    n

    o

    w

    n

    ]

    [C_{n_i}, I^{known}_{m_j}]

    [Cni,Imjknown],其中

    i

    =

    1

    ,

    .

    .

    .

    ,

    N

    1

    i = 1, …, N_1

    i=1,,N1

    j

    =

    1

    ,

    .

    .

    .

    ,

    N

    2

    j = 1, …, N_2

    j=1,,N2,满足

    N

    1

    +

    N

    2

    =

    N

    N_1 + N_2 = N

    N1+N2=N


3.2 模型概述(Model Overview)

如图 2 所示,CookingDiffusion 是基于 Stable Diffusion 定制的烹饪流程图像生成模型。

显然,仅使用条件文本提示的 Stable Diffusion 无法完成该任务。因此,我们引入了流程提示以保证生成图像之间的一致性。根据前述三种场景,我们探讨了三种不同的输入设置:

  • 仅使用文本说明作为条件与流程提示。
  • 文本作为条件提示,图像作为流程提示。
  • 在菜谱中混合使用某些步骤的文本提示与其余步骤的图像提示。

我们将流程提示通过端到端方式编码为“流程表示”,分为文本表示、图像表示和多模态表示。值得注意的是,为了获得图像流程表示,我们使用的是真实步骤图像,而非生成图像。因为若使用生成图像,就必须按顺序自回归生成,效率极低。

因此我们使用真实图像作为视觉提示的参考,同时提供图像流程提示带来的性能上限,这在实际中是可行的,例如在菜谱分享网站上可能部分步骤带有图像。

为应对不同类型的流程提示,我们提出了三种记忆网络(Memory Net):

  • 文本记忆网络(Text Memory Net, TMN)
  • 图像记忆网络(Image Memory Net, IMN)
  • 多模态记忆网络(Multi-modality Memory Net, MMN)

这里的“记忆”强调对流程文本与图像的历史状态建模。这些 Memory Net 被整合入 Stable Diffusion 中,辅助 CookingDiffusion 实现一致图像生成。

Stable Diffusion 中通常使用时间编码器来将时间步信息引入去噪过程。我们的 Memory Net 与其并行工作,将获得的流程表示与时间嵌入(timestep embedding)结合后送入扩散模型。

最终输入包括:流程提示、时间步、条件提示和噪声潜变量,与传统文本生成图像任务的设置类似。我们基于 CLIP 的文本与视觉编码器来实现 TMN 与 IMN 的统一结构,以适配不同模态。众所周知,CLIP 是连接文本与视觉模态的通用桥梁,我们认为这有助于消除这两种模态间的差异。

Memory Nets 使得扩散模型在生成过程中保持步骤间的逻辑一致性。以下小节将详细介绍每个 Memory Net。


3.3 文本记忆网络(Text Memory Net, TMN)

如图 2 (a) 所示,我们引入 TMN 来学习文本流程表示,适用于仅使用文本提示的场景。文本提示也作为条件提示用于扩散模型中。

首先,我们将文本序列

[

C

i

]

i

=

1

N

[C_i]_{i=1}^N

[Ci]i=1N 输入 CLIP 文本编码器,生成文本编码

[

c

i

]

i

=

1

N

[c_i]_{i=1}^N

[ci]i=1N。然后使用一个简单的 masked self-attention 模块来计算编码序列的“记忆”,并通过线性层映射到与时间步嵌入相同的维度,与时间嵌入相加。

线性层的参数需要初始化为 0,以保留预训练模型的原始知识。

整个过程可公式化为:

c

j

=

ϵ

t

e

x

t

(

C

j

)

,

j

=

1

,

,

N

c_j = epsilon_{text}(C_j), quad j = 1, dots, N \

cj=ϵtext(Cj),j=1,,N

m

j

t

e

x

t

=

SelfAtten

(

[

c

1

,

,

c

j

1

]

)

,

j

=

1

,

,

N

m^{text}_j = text{SelfAtten}([c_1, dots, c_{j-1}]), quad j = 1, dots, N \

mjtext=SelfAtten([c1,,cj1]),j=1,,N

e

j

t

e

x

t

=

t

j

+

Linear

(

m

j

t

e

x

t

)

,

j

=

1

,

,

N

e^{text}_j = t_j + text{Linear}(m^{text}_j), quad j = 1, dots, N

ejtext=tj+Linear(mjtext),j=1,,N

其中,

ϵ

t

e

x

t

epsilon_{text}

ϵtext 为带有 MLP 的文本编码器,

m

j

t

e

x

t

m^{text}_j

mjtext 是学习到的文本流程表示,

t

j

t_j

tj 是第

j

j

j 步的时间嵌入,

e

j

t

e

x

t

e^{text}_j

ejtext 为送入 UNet 的最终输入。


3.4 图像记忆网络(Image Memory Net, IMN)

如图 2 (b) 所示,IMN 的结构与 TMN 类似。在第二种场景中,流程图像和文本说明同时作为输入。

为了学习图像流程表示,我们将对应步骤的真实图像输入 CLIP 图像编码器,并用线性映射调整维度与文本一致,为后续融合 MMN 做准备。

其过程如下:

i

j

=

ϵ

i

m

g

(

I

j

k

n

o

w

n

)

,

j

=

1

,

,

N

i_j = epsilon_{img}(I^{known}_j), quad j = 1, dots, N \

ij=ϵimg(Ijknown),j=1,,N

m

j

i

m

g

=

SelfAtten

(

[

i

1

,

,

i

j

1

]

)

,

j

=

1

,

,

N

m^{img}_j = text{SelfAtten}([i_1, dots, i_{j-1}]), quad j = 1, dots, N \

mjimg=SelfAtten([i1,,ij1]),j=1,,N

e

j

i

m

g

=

t

j

+

Linear

(

m

j

i

m

g

)

,

j

=

1

,

,

N

e^{img}_j = t_j + text{Linear}(m^{img}_j), quad j = 1, dots, N

ejimg=tj+Linear(mjimg),j=1,,N

其中,

ϵ

i

m

g

epsilon_{img}

ϵimg 表示图像编码器带 MLP 对齐维度,

m

j

i

m

g

m^{img}_j

mjimg 是第

j

j

j 步的图像流程表示。


3.5 多模态记忆网络(Multi-modality Memory Net, MMN)

在实际中,部分步骤可能包含图像,其余仅有文本说明。因此我们引入 MMN 来学习多模态流程表示。

首先,将文本与图像通过各自的编码器(CLIP)进行编码,并使用 MLP 对齐维度。然后,根据每一步的位置进行组合,送入自注意力模块学习统一表示,最后通过初始化为 0 的线性层加入时间步嵌入。

由于图像可能出现在中间步骤,因此 MMN 使用双向记忆,即每一步的流程提示由整个编码序列生成。

MMN 是 TMN 与 IMN 的融合,结构如图 2 © 所示。

4 改进的基线方法(Improved Baselines)

为了进一步验证所提出的 CookingDiffusion 的有效性,我们还将其他生成模型,如 StackGAN [54]、VQ Diffusion [10] 和 Control Net [56] 适配用于流程图像生成任务,作为改进的基线方法进行对比。

在基于 StackGAN 的方法中,流程表示是通过一个辅助分类任务获得的,然后被输入 StackGAN 以进行图像生成。

在基于 VQ Diffusion 的方法中,我们应用了提出的 TMN 和 IMN。

在基于 Control Net 的方法中,我们修改了其 DownBlock 复制模块和投影网络,分别学习基于文本和基于图像的流程表示。

下面列出了这些方法的详细说明。

4.1 基于 StackGAN 的方法(StackGAN-based Method)

考虑到训练 GAN 的难度,我们引入了一个辅助任务来获取 StackGAN 所需的流程表示,而非端到端地处理流程提示。

借助 YouCookII 数据集中为每个菜谱提供的标签,我们设计了一个分类任务作为辅助任务。在该方法中,基于文本和图像的流程表示由一个 GRU 模块获得。该模块使用 CLIP 的文本编码器和视觉编码器提取的编码,通过自注意力计算“记忆”。

最终的分类结果由 GRU 最后一层的隐藏状态通过一个分类头输出。然后,从这个辅助任务中学习到的流程表示与条件提示的编码整合,用以引导图像生成过程。

4.2 基于 VQ Diffusion 的方法(VQ Diffusion-based Method)

VQ Diffusion 的结构与 Stable Diffusion 非常相似,首先通过 VQ-VAE 对图像进行编码,将其压缩到一个低维离散空间中。后续的扩散与反扩散过程都在该潜在空间中进行。

VQ Diffusion 还包括一个文本编码器和一个扩散图像编码器。文本编码器对条件提示进行编码,扩散图像编码器则结合该编码、噪声潜变量以及当前时间步,预测初始的潜变量。

扩散图像编码器中的交叉注意力层引入条件编码,AdaLN 层则注入时间步信息。因此,我们将提出的 TMN 和 IMN 直接集成到 VQ Diffusion 中,用于处理基于文本和图像的流程提示。

与 CookingDiffusion 类似,我们的 Memory Net 模块作为时间编码器的并行模块运行。一个零初始化的线性层将时间嵌入与流程表示相加,最终输入至 AdaLN 层,引导 VQ Diffusion 生成一致的图像。

4.3 基于 Control Net 的方法(Control Net-based Method)

如图 3 所示,在基于 Control Net 的方法中,我们修改了其投影网络与 DownBlock 复制模块,以将流程提示整合进生成过程,从而确保生成图像之间的一致性。具体对于流程文本与图像提示的改动如下所述。

4.3.1 使用流程文本提示的 Control Net(Control Net with procedural text prompts)

给定步骤

i

i

i 的流程提示序列

[

C

j

]

j

=

1

i

1

[C_j]_{j=1}^{i-1}

[Cj]j=1i1,我们同样使用 CLIP 的文本编码器与注意力模块提取流程表示。

但由于文本提示缺乏二维结构,无法直接输入 Control Net 的投影网络。因此,我们将流程表示替代原本的条件提示,作为 DownBlock 复制模块的输入之一,从而省去了投影网络。

此外,Stable Diffusion 中的噪声潜变量也被输入到 DownBlock 复制模块中。最终,该模块的输出传递到 Middleblock,用于引导图像生成。

训练策略方面,当加入流程提示时,与 Control Net 类似。DownBlock 复制模块使用预训练的 Stable Diffusion 参数进行初始化,以利用其强大的生成能力。训练过程中,我们仅更新 DownBlock 内部注意力模块的参数,从而降低计算开销。

4.3.2 使用流程图像提示的 Control Net(Control Net with procedural image prompts)

如图 3 所示,在处理图像流程提示时,我们调整了投影网络以学习基于图像的流程表示。Control Net 中原始的投影网络

P

(

)

P(cdot)

P() 包含 7 层空间卷积与激活函数,充当图像编码器以提取图像特征。

我们在

P

(

)

P(cdot)

P() 中引入了带掩码的时间卷积(masked temporal convolutions),以计算图像流程表示。最终得到的网络称为时间投影网络,记作

T

P

(

)

TP(cdot)

TP()

在图 4 中,我们提出了两种时间投影网络的变体:

  • T

    P

    A

    (

    )

    TP-A(cdot)

    TPA()
    :在原始空间卷积之后添加时间卷积;
  • T

    P

    B

    (

    )

    TP-B(cdot)

    TPB()
    :在原始空间卷积网络之前堆叠时间卷积和激活模块。

为了捕捉噪声潜变量与流程表示之间的关联,确保生成步骤间的一致性,我们将噪声潜变量与图像流程表示相加,并一并输入至 DownBlock 复制模块中。

训练过程中,遵循 Control Net 的策略,DownBlock 复制模块使用预训练的 Stable Diffusion 参数初始化,并冻结 Stable Diffusion,仅更新

T

P

(

)

TP(cdot)

TP() 和 DownBlock 复制模块的参数。

5 Experiment

为了验证我们提出的基于 Memory Nets 的 CookingDiffusion 的有效性,我们基于预处理的 YouCookII 数据集开展了一系列实验,用于烹饪步骤图像生成任务。我们采用两个指标来衡量生成图像的质量:Fréchet Inception Distance(FID)[12] 用于评估生成图像的真实性,以及我们提出的新指标 Average Procedure Consistency,用于评估一个过程中的图像一致性。此外,我们也提供了一些生成案例的可视化结果,展示 CookingDiffusion 的优异表现。在整个实验过程中,我们主要评估模型学习任务特定的步骤表示,并将其融入步骤图像生成过程中的能力。

5.1 对 YouCookII 数据集的预处理

YouCookII 数据集是本研究的重要资源,包含了数千个来自 YouTube 的烹饪视频。每个视频都配有详细的逐步说明和时间戳,标记每一步的起止时间。在实验中,我们去除了一些已无法访问或无法被分帧的视频,最终构建了一个包含 1185 个训练视频(共 9171 个图文对)和 446 个验证视频(共 3420 个图文对)的数据集。

为了满足烹饪步骤图像生成的需求,我们将视频预处理为图文对序列。这一过程包括从每一步中选取与其最匹配的关键帧,我们使用预训练的 CLIP 模型根据相似度得分辅助选帧。这些关键帧通常能捕捉到动作及其部分结果,例如“一步切番茄”对应的关键帧通常包含拿着刀的手和部分被切开的番茄。我们将所有图像统一调整为

256

×

256

256 times 256

256×256 的分辨率。由于样本量不足,我们在验证集和训练集上都对 CookingDiffusion 进行了评估,参考了先前工作的做法 [41, 52]。

5.2 评估指标

5.2.1 Fréchet Inception Distance (FID)

FID [12] 是评估生成图像质量的常用指标。该指标通过部署 Inception-v3 [44] 模型计算生成图像与真实图像分布之间的距离。FID 越低,表示生成图像的分布越接近真实图像的分布,从而代表模型生成能力越强。

5.2.2 平均步骤一致性指标(Avg-PCon)

虽然 FID 能有效量化模型生成真实多样图像的能力,但无法评估同一过程中的步骤图像之间是否一致,这是我们任务中的关键。因此,我们提出了 Average Procedure Consistency(Avg-PCon),用于评估生成图像与对应步骤文本之间的一致性。

Avg-PCon 以 CLIP 分数为基础,计算生成图像与其过程内其他步骤文本之间的相似度。对于一条食谱中的文本描述

[

C

1

,

,

C

N

]

[C_1, dots, C_N]

[C1,,CN] 及对应的生成图像

[

I

1

g

e

n

,

,

I

N

g

e

n

]

[I^{gen}_1, dots, I^{gen}_N]

[I1gen,,INgen],我们计算每个图像

I

i

g

e

n

I^{gen}_i

Iigen 与所有其他步骤文本

C

j

C_j

Cj

j

i

j ne i

j=i)的 CLIP 分数,记作

I

i

g

e

n

,

C

j

langle I^{gen}_i, C_j rangle

Iigen,Cj

我们并不单纯追求

I

i

g

e

n

,

C

j

langle I^{gen}_i, C_j rangle

Iigen,Cj 的高值,而是结合文本间相似度

C

i

,

C

j

langle C_i, C_j rangle

Ci,Cj,将其归一化作为权重,计算图像

I

i

g

e

n

I^{gen}_i

Iigen 在整个过程中的一致性得分

P

i

P_i

Pi

P

i

=

j

=

1

,

j

i

N

C

i

,

C

j

n

o

r

m

I

i

g

e

n

,

C

j

P_i = sum_{j=1, j ne i}^{N} langle C_i, C_j rangle_{norm} cdot langle I^{gen}_i, C_j rangle

Pi=j=1,j=iNCi,CjnormIigen,Cj

最终取所有步骤的一致性得分平均值作为该过程的一致性评价:

P

=

A

v

g

(

[

P

1

,

,

P

N

]

)

P = Avg([P_1, dots, P_N])

P=Avg([P1,,PN])

值越高,表示生成图像在整个过程中的一致性越强。

5.3 场景 1 与场景 2 的性能对比

本节对不同方法在场景 1 与场景 2 中的性能进行了综合对比。我们在 CookingDiffusion 的 Text Memory Net 和 Image Memory Net 中使用相同的超参数设置:扩散过程步数为 1000,去噪模型学习率设为

1

e

5

1e-5

1e5,共训练 75 轮,基础模型为 Stable Diffusion V1.5。

为测试不同生成器骨干在处理步骤提示时的效果,我们在 YouCookII 上直接训练 StackGAN 和 VQ Diffusion 作为对比基线。考虑到 ControlNet 需要额外的控制输入信息,我们使用预训练的 Stable Diffusion 作为基线评估 ControlNet 在步骤提示下的表现。同时,我们对 Stable Diffusion 进行微调,形成 CookingDiffusion 的 baseline。

表 1 展示了上述方法的性能比较结果。StackGAN 和 VQ Diffusion 能提升一致性,但在场景 2 中图像质量下降,尤其 StackGAN 使用图像提示时性能较差,原因在于其辅助分类任务中学习的图像表示效果不佳(详见 4.1 节)。VQ Diffusion 同样难以平衡图像质量与过程一致性。

相比之下,ControlNet 生成的图像更为鲜艳,但在一致性上表现较差。而我们提出的 CookingDiffusion 在 FID 和 Avg-PCon 两项指标上在场景 1 和场景 2 中均优于其他方法。这表明我们提出的 Memory Nets 能有效从多模态中学习并保持生成图像的高质量与一致性。

此外,我们还展示了 CookingDiffusion 与微调 Stable Diffusion 之间的视觉对比(见图 5),可以清晰看到我们的模型在步骤一致性上表现更好。

我们进一步分析不同位置图像生成的指标(见图 6 和图 7),结果显示我们的 TMN 和 IMN 能有效处理不同长度的提示,从而提升整体一致性和质量。

5.4 场景 3 中的多模态 Memory Net(MMN)性能

我们在 YouCookII 数据集上生成多模态提示来训练 MMN,模拟两种常见情况:“顺序可用”与“随机可用”。我们分别训练

p

=

0.2

,

0.3

,

0.4

p=0.2, 0.3, 0.4

p=0.2,0.3,0.4 的模型,评估其在固定

p

p

p 和随机

p

(

0

,

0.5

]

p in (0, 0.5]

p(0,0.5] 下的表现(见表 2)。结果显示,

p

=

0.4

p=0.4

p=0.4 时性能下降,原因是过多丢弃文本信息。

我们进一步保留了带图像步骤的文本信息(见表 3),即同时利用图像和文本进行 token mixing,效果显著优于仅用图像时,尤其在

p

=

0.4

p=0.4

p=0.4 情况下表现稳定。

5.5 内容操控能力分析

我们评估了 CookingDiffusion 在配料与做法上的操控能力,如图 8 所示,可以添加、删除或替换配料(如番茄换成土豆,鸡蛋换成牛奶),图像中能正确反映这些变化。

类似地,图 9 展示了做法的操控实验,如将“bake”替换为“boil”,即使不完全符合实际场景,我们的模型也能生成语义连贯的图像。

6 Conclusion

本文提出了一个新任务——烹饪步骤图像生成(Cooking Procedural Image Generation),该任务不仅要求生成与烹饪步骤对应的逼真图像,还需保证步骤间的一致性。为此,我们设计了 CookingDiffusion,并引入三类 Memory Net 来处理不同类型的步骤提示。

实验表明,我们的方法在 YouCookII 数据集上表现优异,具备出色的图像质量、一致性和多模态适应能力。未来我们计划将该方法扩展至烹饪视频生成任务,实现更强的时序建模能力。

🌟 在这篇博文的旅程中,感谢您的陪伴与阅读。如果内容对您有所启发或帮助,请不要吝啬您的点赞 👍🏻,这是对我最大的鼓励和支持。

📚 本人虽致力于提供准确且深入的技术分享,但学识有限,难免会有疏漏之处。如有不足或错误,恳请各位业界同仁在评论区留下宝贵意见,您的批评指正是我不断进步的动力!😄😄😄

💖💖💖 如果您发现这篇博文对您的研究或工作有所裨益,请不吝点赞、收藏,或分享给更多需要的朋友,让知识的力量传播得更远。

🔥🔥🔥 “Stay Hungry, Stay Foolish” —— 求知的道路永无止境,让我们保持渴望与初心,面对挑战,勇往直前。无论前路多么漫长,只要我们坚持不懈,终将抵达目的地。🌙🌙🌙

👋🏻 在此,我也邀请您加入我的技术交流社区,共同探讨、学习和成长。让我们携手并进,共创辉煌!

文章来源于互联网:食品计算—CookingDiffusion: Cooking Procedural Image Generation with Stable Diffusion

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » 食品计算—CookingDiffusion: Cooking Procedural Image Generation with Stable Diffusion
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们