Text to image论文精读 从菜谱描述自动生成菜肴照片 CookGAN: Causality based Text-to-Image Synthesis(基于因果关系的文本图像合成 )

本文主要是介绍Text to image论文精读 从菜谱描述自动生成菜肴照片 CookGAN: Causality based Text-to-Image Synthesis(基于因果关系的文本图像合成 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

根据输入的食材自动生成菜肴照片 CookGAN: Causality based Text-to-Image Synthesis(基于因果关系的文本图像合成 )

  • 一、原文摘要
  • 二、关键词
  • 三、为什么提出CookGAN?
  • 四、模型结构
    • 4.1、结构分析
    • 4.2、损失函数
  • 五、烹饪模拟模块
  • 六、实验
    • 6.1、编码器
    • 6.2、数据集
    • 6.3、评价指标
    • 6.4、实验效果
    • 6.5语义解释
    • 6.6、对菜谱的动态修改
  • 7、小结
  • 相关阅读

文章被2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)会议录用。

论文地址:https://ieeexplore.ieee.org/document/9157040/citations#citations
CookGAN旨在解决因果关系效应。食物图像的因果演化隐含在一个连续的网络中。
本博客是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。

一、原文摘要

本文从一个新的角度,即图像生成中的因果链,讨论了文本到图像的合成问题。因果关系是烹饪中常见的现象。菜肴外观的变化取决于烹饪动作和配料。合成的挑战在于,生成的图像应该描述作用在物体上的视觉结果。本文提出了一种新的网络结构CookGAN,它模仿因果链中的视觉效果,保留细粒度细节,并逐步向上采样图像。特别地,提出了一个烹饪模拟器子网络,通过一系列步骤,基于配料和烹饪方法之间的交互,对食物图像进行增量更改。在Recipe1M上的实验验证了CookGAN能够以相当可观的初始分数生成食物图像。此外,图像具有语义可解释性和可操作性。

二、关键词

Image generation、Gallium nitride、Generators、Visualization、Image resolution、Semantics、Feature extraction

三、为什么提出CookGAN?

生成性对抗网络(GAN)自在T2I领域应用以来,在解决照片真实感质量和语义一致性问题方面取得了许多进展。虽然这两个方面都强调图像质量,但忽略了:图像生成中的因果视觉场景。

之前的文本都是描述图像中预期的视觉内容的视觉叙事句子,而面对以行动为导向的文本则难以生成,比如:“将鸡肉丁用烤花生搅拌”对应的图像。

在这里插入图片描述

CookGAN是研究从菜谱到图像的合成,用烹饪菜谱描述 生成 食物图像,菜谱将食物和配料作为实体,将烹饪步骤作为行动,以文本形式指导菜肴的制作,最后呈现最终准备好的菜肴。CookGAN在因果情景的逐步学习中生动地模仿烹饪过程。
其主要解决了四个问题:

1)允许烹饪步骤和配料之间进行明确的交互
2)学习菜肴在不同步骤上的演变,以便即时修改配料和说明,使菜肴的新颖效果可视化
3)可以模拟成分作用的捆绑效应。例如,鸡蛋的形状取决于一个动作是煮、煎还是蒸
4)了解食材对菜肴的可见性和影响。例如,“糖”可能是看不见的,而“番茄酱”可以显著改变菜肴的外观。

四、模型结构

在这里插入图片描述

4.1、结构分析

与StackGAN++有些许相似,CookGAN包括三个生成器和三个判别器,组成堆叠的结构。最初,菜谱文本描述被编码器编码联合噪声后生成菜谱文本特征。将该文本特征输入到上采样块中,转为隐藏层图像特征。之后第一个生成器利用这个图像特征生成64×64的初始图像并联合第一个判别器进行判别。图像特征同时被输入到烹饪模拟器当中,为下一阶段的生成器准备特征。第二个和第三个生成器重复以上过程,最终生成256×256的图像。

4.2、损失函数

整体的损失函数为:

L = ∑ i = 0 2 L G i + λ L C A L=\sum_{i=0}^{2} L_{G_{i}}+\lambda L_{C A} L=i=02LGi+λLCA

损失主要有两部分:生成器损失项和CA损失项。
L G i L_{G_{i}} LGi为第i个生成器的损失, L C A L_{CA} LCA是条件反射增强(CA)的损失, λ是平衡因子。

生成器损失与以往的模型相似,由无条件损失项和条件损失项组成,无条件损失项鉴别真假图像,条件损失项鉴别图像是否符合文本描述,生成器损失为:

L G i = 1 2 ( E φ r ∼ p r , z ∼ p z [ log ⁡ ( 1 − D i ( G i ( φ r , z ) ) ] ⏟ unconditional loss  + E φ r ∼ p r , z ∼ p z [ log ⁡ ( 1 − D i ( G i ( φ r , z ) , φ r ) ] ) ⏟ conditional loss  . \begin{aligned} L_{G_{i}}=& \frac{1}{2}(\underbrace{\mathbb{E}_{\varphi_{r} \sim p_{r}, z \sim p_{z}}\left[\log \left(1-D_{i}\left(G_{i}\left(\varphi_{r}, z\right)\right)\right]\right.}_{\text {unconditional loss }}+\\ & \underbrace{\mathbb{E}_{\varphi_{r} \sim p_{r}, z \sim p_{z}}\left[\log \left(1-D_{i}\left(G_{i}\left(\varphi_{r}, z\right), \varphi_{r}\right)\right]\right)}_{\text {conditional loss }} . \end{aligned} LGi=21(unconditional loss  Eφrpr,zpz[log(1Di(Gi(φr,z))]+conditional loss  Eφrpr,zpz[log(1Di(Gi(φr,z),φr)]).

其中的判别器损失为:

L D i = − 1 2 ( E x i ∼ p data  i [ log ⁡ D i ( x i ) ] ⏟ unconditional loss  + E x i ∼ p data  i , φ r ∼ p r [ log ⁡ D i ( x i , φ r ) ] ⏟ conditional loss  + \begin{aligned} L_{D_{i}}=&-\frac{1}{2}(\underbrace{\mathbb{E}_{x_{i} \sim p_{\text {data }_{i}}}\left[\log D_{i}\left(x_{i}\right)\right]}_{\text {unconditional loss }}+\\ & \underbrace{\mathbb{E}_{x_{i} \sim p_{\text {data }_{i}, \varphi_{r} \sim p_{r}}}\left[\log D_{i}\left(x_{i}, \varphi_{r}\right)\right]}_{\text {conditional loss }}+ \end{aligned} LDi=21(unconditional loss  Exipdata i[logDi(xi)]+conditional loss  Exipdata i,φrpr[logDi(xi,φr)]+
E φ r ∼ p r , z ∼ p z [ log ⁡ ( 1 − D i ( G i ( φ r , z ) ) ) ] ⏟ unconditional loss  + E φ r ∼ p r , z ∼ p z [ log ⁡ ( 1 − D i ( G i ( φ r , z ) , φ r ) ) ] ⏟ conditional loss  ) \begin{array}{l} \underbrace{\mathbb{E}_{\varphi_{r} \sim p_{r}, z \sim p_{z}}\left[\log \left(1-D_{i}\left(G_{i}\left(\varphi_{r}, z\right)\right)\right)\right]}_{\text {unconditional loss }}+ \\ \underbrace{\mathbb{E}_{\varphi_{r} \sim p_{r}, z \sim p_{z}}\left[\log \left(1-D_{i}\left(G_{i}\left(\varphi_{r}, z\right), \varphi_{r}\right)\right)\right]}_{\text {conditional loss }}) \end{array} unconditional loss  Eφrpr,zpz[log(1Di(Gi(φr,z)))]+conditional loss  Eφrpr,zpz[log(1Di(Gi(φr,z),φr))])

其中 x i x_i xi是从真实食物图像分布的第i个尺度 抽样的样本,第i个判别器仅在 x i x_i xi和第i个生成器生成的图像做判别。

与StackGAN相同,CA损失是避免过度拟合的正则化器,并加入了文本流形插值,CA损失函数如下:

L C A = D K L ( N ( μ ( φ r ) , Σ ( φ r ) ) ∥ N ( 0 , I ) ) L_{C A}=D_{K L}\left(\mathcal{N}\left(\mu\left(\varphi_{r}\right), \Sigma\left(\varphi_{r}\right)\right) \| \mathcal{N}(0, I)\right) LCA=DKL(N(μ(φr),Σ(φr))N(0,I))

五、烹饪模拟模块

烹饪模拟模块是这篇论文里最主要的创新,烹饪模拟模块主要是模拟真实的烹饪场景,其将不同的切割方式和烹饪手段逐渐施加在食材上面。例如,“胡萝卜”被切成薄片,“意大利面”在与“鱿鱼酱”一起炒时变成黑色。
在这里插入图片描述

如上图所示:
1) φ i n g = { φ i n g m } m = 1 M ∈ R M × d i n g \varphi_{i n g}=\left\{\varphi_{i n g_{m}}\right\}_{m=1}^{M} \in \mathbb{R}^{M \times d_{i n g}} φing={φingm}m=1MRM×ding表示食材特征,其中 φ i n g m \varphi_{i n g_{m}} φingm表示的是第m个食材的第 d i n g d_{ing} ding维向量。

2) V i = { v j } j = 1 C ∈ R C × L V_{i}=\left\{v_{j}\right\}_{j=1}^{C} \in \mathbb{R}^{C \times L} Vi={vj}j=1CRC×L表示的是第i尺度的图像特征(上一阶段所提供的),其中C是通道深度,L=W×H是特征图的分辨率。

3) F i attend  F_{i_{\text {attend }}} Fiattend 是将食材特征与图像特征相结合而成的image attended ingredient features,姑且我叫它参入食材因子的图像特征 F i attend  j = ∑ m = 0 M − 1 σ ( v j T ⋅ f ( φ i n g m ) ) f ( φ i n g m ) F_{i_{\text {attend }_{j}}}=\sum_{m=0}^{M-1} \sigma\left(v_{j}^{T} \cdot f\left(\varphi_{i n g_{m}}\right)\right) f\left(\varphi_{i n g_{m}}\right) Fiattend j=m=0M1σ(vjTf(φingm))f(φingm),其中f()是1×1的卷积核,它将食材特征映射到与第i尺度隐藏图像特征Vi相同的维度,而σ(·) 是softmax函数,它输出一个大小为L的注意力图 σ ( v j T ⋅ f ( φ i n g m ) ) \sigma\left(v_{j}^{T} \cdot f\left(\varphi_{i n g_{m}}\right)\right) σ(vjTf(φingm)),带有概率值,以指示成分的空间分布。 softmax函数生成的注意力图与相应的成分 f ( φ ing  ) f\left(\varphi_{\text {ing }}\right) f(φing )相乘确定成分的空间位置 ,最后每个维度求和,形成第j通道图像成分特征图

4)之后进入通过Gated Recurrent Unit单元 (一种循环神经网络,以下简称GRU): F i c o o k j = G R U ( F i a t t e n d j , φ i n s ) F_{i_{c o o k_{j}}}=G R U\left(F_{i_{a t t e n d_{j}}}, \varphi_{i n s}\right) Ficookj=GRU(Fiattendj,φins)

φ i n s \varphi_{i n s} φins为顺序编码后的烹饪步骤,其中 φ i n s = { φ i n s n } n = 1 N ∈ R N × d i n s \varphi_{i n s}=\left\{\varphi_{i n s_{n}}\right\}_{n=1}^{N} \in \mathbb{R}^{N \times d_{i n s}} φins={φinsn}n=1NRN×dins,其中 φ i n s n \varphi_{i n s_{n}} φinsn是第n条烹饪步骤的第 d i n s d_{ins} dins维向量。
F i attend  F_{i_{\text {attend }}} Fiattend 为参入食材因子的图像特征(image attended ingredient features),一个步骤中烹饪的结果,即GRU的隐藏状态,被送入下一个GRU单元进行后续烹饪操作 。

F i cook  j F_{i_{\text {cook }_{j}}} Ficook j表示的是第i个尺度第j个通道的被烹饪的食物特征。

5)最后,将三组特征映射Vi(图像特征)、 F i attend  F_{i_{\text {attend }}} Fiattend (参入食材因子的图像特征)、 F i cook  F_{i_{\text {cook }}} Ficook  (进过烹饪模拟后的食物特征)连接起来,并馈送到剩余块中。变换后的特征映射将成为下一轮图像上采样的输入。

ps:烹饪模拟器可处理多达10个烹饪步骤。考虑到计算时间,超过十步的指令会被截断。

六、实验

6.1、编码器

食材编码器(ingredient encoder),使用了word2vec嵌入,其将单词转换成高阶向量(300维), φ ing  ∈ R 300 \varphi_{\text {ing }} \in \mathbb{R}^{300} φing R300

烹饪步骤编码器(ingredient encoder),使用了skip-thoughts 技术,其将步骤形式的句子转化成固定高阶向量(1024维), φ i n s ∈ R 1024 \varphi_{i n s} \in \mathbb{R}^{1024} φinsR1024

6.2、数据集

Recipe1M:包含成对的食谱和图像。该数据集提供340922对配方图像
下载:http://im2recipe.csail.mit.edu/

6.3、评价指标

Inception score (IS):IS值越高,表示视觉多样性和质量越好。
median rank (MedR):MedR值越低,检索能力越好
在这里插入图片描述

6.4、实验效果

在这里插入图片描述

6.5语义解释

作者认为,生成的图像不仅应该在视觉上有吸引力,而且在语义上可以解释。文章设计了三个任务来测量生成图像的可解释性:食材识别(Ingredient recognition)、图像到食谱的回溯(Image-to-recipe retrieval)、图像到图像的回溯(Image-to-image retrieval )

1)食物识别:就是在生成的食品图像中对配料进行多重标记,然后与食谱中用到的真实食材进行对比,下图列出了CookGAN生成的两个样本图像的识别成分。可以看出不仅可以识别可见的成分,还可以识别不可见的成分,但也有很多错误识别(蓝色为错误)的部分。
在这里插入图片描述
2)图像到食谱的回溯(Image-to-recipe retrieval),是一种逆向任务,由生成的图像反向查询检索对应的食谱。

3)图像(生成)到图像(真实)的回溯(Image-to-image retrieval ):也是一种逆向任务,使用生成的图像检索真实的食物图像。

6.6、对菜谱的动态修改

CookGAN的一个优点是,可以通过对菜谱或者配方的增量操作(例如,通过语义变化的配料列表)动态生成图像。如下图:
在这里插入图片描述

更有趣的事情是,CookGAN能够学习到菜肴中食材的可见度,如下图,当加入糖时,食物图片的外观基本不变,但当加入番茄酱时,颜色显著改变。
在这里插入图片描述

而烹饪方法的改变也会使食物展现出来的外观不同,下图是鸡蛋在不同烹饪方法下,生成的食物图片的状态:
在这里插入图片描述

7、小结

实验结果表明,CookGAN能够合成真实的视觉场景来描述烹饪行为的因果关系。与StackGAN++相比,CookGAN能够通过烹饪行为模拟出合适的颜色、形状和成分。
此外,CookGAN展示出了对烹饪常识的一些理解,包括处理食材的可见度(糖和番茄酱的例子)和食材与烹饪手段的捆绑效应(鸡蛋的不同做法)。图像具有语义可解释性和可操作性。

相关阅读

文字生成图像 Text to image(T2I)论文整理 阅读路线和阅读指南

这篇关于Text to image论文精读 从菜谱描述自动生成菜肴照片 CookGAN: Causality based Text-to-Image Synthesis(基于因果关系的文本图像合成 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269096

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言