Text to image论文精读 AttnGAN: Fine-Grained TexttoImage Generation with Attention(带有注意的生成对抗网络细化文本到图像生成)

本文主要是介绍Text to image论文精读 AttnGAN: Fine-Grained TexttoImage Generation with Attention(带有注意的生成对抗网络细化文本到图像生成),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AttnGAN: Fine-Grained TexttoImage Generation with Attention(带有注意的生成对抗网络细化文本到图像生成)

  • 一、摘要
  • 二、关键词
  • 三、为什么提出AttnGAN?
  • 四、主要原理
    • 4.1、两大核心组成
    • 4.2 、损失函数
  • 五、框架分析
  • 六、生成网络中的注意力机制
    • 6.1、生成网络注意力框架
    • 6.2、实现细节
      • 2.1、第一步
      • 6.2、第二步
      • 6.3、第三步
  • 七、DAMSM (Deep Attentional Multimodal Similarity Model)
    • 7.1、DAMSM框架
    • 7.2、实现细节
      • 7.2、第一步
      • 7.2、第二步
      • 7.3、第三步
      • 7.4、损失函数
  • 八、实验
  • 九、实验复现
  • 十、相关阅读

这篇文章提出了一种注意力生成对抗网络(AttnGAN),它允许注意力驱动、多阶段细化细粒度文本到图像的生成,此外,还提出了一种深度注意多模态相似性模型来计算细粒度图像-文本匹配损失以训练生成器,进而生成更逼真的图像。
文章被2018年CVPR(IEEE Conference on Computer Vision and Pattern Recognition)会议收录。

论文地址: https://arxiv.org/pdf/1711.10485.pdf

代码地址: https://github.com/taoxugit/AttnGAN

本博客是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。

一、摘要

在本文中,我们提出了一种注意力生成对抗网络(AttnGAN),它允许注意力驱动、多阶段细化细粒度文本到图像的生成。通过一种新的注意生成网络,AttnGAN可以通过关注自然语言描述中的相关词语,合成图像不同子区域的细粒度细节。此外,本文还提出了一种深度注意多模态相似性模型来计算细粒度图像-文本匹配损失以训练生成器。AttnGAN显著优于之前的最新水平,在CUB数据集上,最佳报告初始得分提高了14.14%,在更具挑战性的COCO数据集上,提高了170.25%。通过可视化AttnGAN的注意层,也可以进行详细的分析。这是第一次表明分层注意GAN能够自动选择单词级的条件来生成图像的不同部分。

二、关键词

Deep Learning, Generative Adversarial Nets, Image Synthesis, Computer Vision

三、为什么提出AttnGAN?

传统文本生成图像方法是将整个文本描述编码为全局句子向量,作为基于GAN的图像生成的条件,这种方法在全局句子向量上调节GAN,缺乏单词级的重要细粒度信息。

四、主要原理

主要原理跟StackGAN++差不多,也是多阶段图像生成,但是在其中引入注意力机制。AttnGAN主要是以GAN、CNN、Decnn、LSTM、Attention等机制模块组成的一个复杂网络,模型最简单的模型就是LSTM+CNN,做的事情就是:

  1. 将文本embedding得到word features和sentence features(利用到了LSTM);
  2. 利用sentence features生成一个低分辨率的图像(这一步与stackGAN差不多);
  3. 在低分辨率的图像上进一步加入word features和sentence features来生成更高分辨率的图像。

网络由三大模块组成:LSTM网络,生成器网络、判别器网络。

4.1、两大核心组成

AttnGAN创新主要在于两大组成部分:注意力生成网络和DAMSM

注意力生成网络:生成网络中的引入的注意机制使AttnGAN能够在单词的水平上实现单词与图片中的某个子区域的映射,自动选择字级条件以生成图像的不同子区域

DAMSM:能够计算细粒度文本图像匹配损失,其仅应用于最后一个生成器的输出,有利于生成更高质量的图片。

4.2 、损失函数

最终设计模型的损失函数为:
L = L G + λ L D A M S M , where  L G = ∑ i = 0 m − 1 L G i \mathcal{L}=\mathcal{L}_{G}+\lambda \mathcal{L}_{D A M S M}, \text { where } \mathcal{L}_{G}=\sum_{i=0}^{m-1} \mathcal{L}_{G_{i}} L=LG+λLDAMSM, where LG=i=0m1LGi
其中,λ是平衡因子,G的损失函数LG为:
L G i = − 1 2 E x ^ i ∼ p G i [ log ⁡ ( D i ( x ^ i ) ] ⏟ unconditional loss  − 1 2 E x ^ i ∼ p G i [ log ⁡ ( D i ( x ^ i , e ˉ ) ] ⏟ conditional loss  , \mathcal{L}_{G_{i}}=\underbrace{-\frac{1}{2} \mathbb{E}_{\hat{x}_{i} \sim p_{G_{i}}}\left[\log \left(D_{i}\left(\hat{x}_{i}\right)\right]\right.}_{\text {unconditional loss }} \underbrace{-\frac{1}{2} \mathbb{E}_{\hat{x}_{i} \sim p_{G_{i}}}\left[\log \left(D_{i}\left(\hat{x}_{i}, \bar{e}\right)\right]\right.}_{\text {conditional loss }}, LGi=unconditional loss  21Ex^ipGi[log(Di(x^i)]conditional loss  21Ex^ipGi[log(Di(x^i,eˉ)],
D的损失函数LD为:
L D i = − 1 2 E x i ∼ p data  i [ log ⁡ D i ( x i ) ] − 1 2 E x ^ i ∼ p G i [ log ⁡ ( 1 − D i ( x ^ i ) ] ⏟ unconditional loss  + − 1 2 E x i ∼ p data  i [ log ⁡ D i ( x i , e ˉ ) ] − 1 2 E x ^ i ∼ p G i [ log ⁡ ( 1 − D i ( x ^ i , e ˉ ) ] ⏟ conditional loss  \begin{aligned} \mathcal{L}_{D_{i}}=& \underbrace{-\frac{1}{2} \mathbb{E}_{x_{i} \sim p_{\text {data }_{i}}}\left[\log D_{i}\left(x_{i}\right)\right]-\frac{1}{2} \mathbb{E}_{\hat{x}_{i} \sim p_{G_{i}}}\left[\log \left(1-D_{i}\left(\hat{x}_{i}\right)\right]\right.}_{\text {unconditional loss }}+\\ & \underbrace{-\frac{1}{2} \mathbb{E}_{x_{i} \sim p_{\text {data }_{i}}}\left[\log D_{i}\left(x_{i}, \bar{e}\right)\right]-\frac{1}{2} \mathbb{E}_{\hat{x}_{i} \sim p_{G_{i}}}\left[\log \left(1-D_{i}\left(\hat{x}_{i}, \bar{e}\right)\right]\right.}_{\text {conditional loss }} \end{aligned} LDi=unconditional loss  21Exipdata i[logDi(xi)]21Ex^ipGi[log(1Di(x^i)]+conditional loss  21Exipdata i[logDi(xi,eˉ)]21Ex^ipGi[log(1Di(x^i,eˉ)]

可以看出,总损失的第一项LG,原理与StackGAN中的无条件+有条件结构相似,无条件损失确定图像是真实的还是假的,条件损失确定图像和句子是否相符。
没看StackGAN++可以点击->:Text to image论文精读 StackGAN++

而损失函数的第二项LDAMSM是由DAMSM计算的字符级细粒度图像-文本匹配损失,这部分在本博文的第七节中介绍。

五、框架分析

在这里插入图片描述
整个模型分三大块:

  1. 最左边文本编码器(LSTM)+最右边的图像编码器组合
    文本编码器利用注意力机制对文本进行编码,输出sentence feature和word feature,其中sentence feature:取LSTM最后一个状态的输出,作用是当作生成器的控制信息;word feature:取中间隐藏状态的输出,用来确定图片与句子的一致性。图像编码器采用卷积神经网络(CNN)将图像映射到语义向量。

  2. 中间橘色框注意力生成网络,生成器接收的是sentence feature,生成具有句子特征的图片,从第二个生成器开始加入注意力机制,注意力机制接收的是生成器输出的h0矩阵以及word feature矩阵,输出是一个矩阵作为下一个生成器的输入。每个生成器由上采样、残差网络、全连接、卷积组成。

  3. 下方的判别器,输入是sentence feature和该阶段生成器生成的图片,判断图片与句子的相符性。

六、生成网络中的注意力机制

6.1、生成网络注意力框架

在这里插入图片描述

Fattn、Fca、Fi、Gi都是神经网络模型

F_iattn是第i阶段的注意力模型,Fca是条件增强模块,Conditioning
Augmentation其将句子向量e-转换为条件向量) ,z是随机噪声,e是句子向量的矩阵,e-表示全局句子向量

6.2、实现细节

2.1、第一步

在这里插入图片描述
编码后的Fca 通过F0, h0=F0 (z,Fca(e- )) ,F0通过一个FC层和若干上采样层将输入的向量转换成指定维数。
h i = F i ( h i − 1 , F i a t t n ( e , h i − 1 ) ) for  i = 1 , 2 , … , m − 1 F a t t n ( e , h ) = ( c 0 , c 1 , … , c N − 1 ) ∈ R D ^ × N \begin{array}{l} h_{i}=F_{i}\left(h_{i-1}, F_{i}^{a t t n}\left(e, h_{i-1}\right)\right) \text { for } i=1,2, \ldots, m-1 \\ F^{a t t n}(e, h)=\left(c_{0}, c_{1}, \ldots, c_{N-1}\right) \in \mathbb{R}^{\hat{D} \times N} \end{array} hi=Fi(hi1,Fiattn(e,hi1)) for i=1,2,,m1Fattn(e,h)=(c0,c1,,cN1)RD^×N
其中,Fiattn的输入有两个,维数为D×T的单词特征e和维数为D-×N的上一隐藏层中的图像特征h,h的每一列是图像每个子区域的特征向量。Fiattn输出为c,c_i表示为第i个子区域的单词上下文向量。

6.2、第二步

对输入图片的每一部分,匹配最相关的单词向量来约束其生成,增加图像的细粒度细节。匹配图像子区域和最相关的单词公式如下:
c j = ∑ i = 0 T − 1 β j , i e i ′ , where  β j , i = exp ⁡ ( s j , i ′ ) ∑ k = 0 T − 1 exp ⁡ ( s j , k ′ ) c_{j}=\sum_{i=0}^{T-1} \beta_{j, i} e_{i}^{\prime}, \text { where } \beta_{j, i}=\frac{\exp \left(s_{j, i}^{\prime}\right)}{\sum_{k=0}^{T-1} \exp \left(s_{j, k}^{\prime}\right)} cj=i=0T1βj,iei, where βj,i=k=0T1exp(sj,k)exp(sj,i)
其中 s j , i ′ = h j T e i ′ s_{j, i}^{\prime}=h_{j}^{T} e_{i}^{\prime} sj,i=hjTei
而β(i,j)表示 第i个单词对生成图像的第j个区域的重要程度。

6.3、第三步

通过将图像特征和相应的单词上下文特征结合起来生成图像,将生成的图像和sentence feature输入到D中训练。
在这里插入图片描述

七、DAMSM (Deep Attentional Multimodal Similarity Model)

7.1、DAMSM框架

在这里插入图片描述

DAMSM主要有两个神经网络,文本编码器和图像编码器。其将句子的图像和单词的子区域映射到一个公共语义空间,从而在单词级别测量图像-文本相似度,以计算图像生成的细粒度损失。

文本编码器:采用双向长短期记忆网络(LSTM)
图像编码器:采用卷积神经网络(CNN),将图像映射到语义向量

7.2、实现细节

7.2、第一步

根据图像和文本之间的注意模型来衡量图像-句子对的匹配程度,首先计算相似矩阵:
s = e T v s=e^{T} v s=eTv

其中,s∈R(T*289)。s_ij描述的是文本中第i个单词和图片的第j个区域的点积相似性。v是图像的特征向量,e是单词的特征向量。

将其归一化:
s ˉ i , j = exp ⁡ ( s i , j ) ∑ k = 0 T − 1 exp ⁡ ( s k , j ) \bar{s}_{i, j}=\frac{\exp \left(s_{i, j}\right)}{\sum_{k=0}^{T-1} \exp \left(s_{k, j}\right)} sˉi,j=k=0T1exp(sk,j)exp(si,j)

7.2、第二步

建立一个注意模型来计算每个单词的区域上下文向量:
c i = ∑ j = 0 288 α j v j , where  α j = exp ⁡ ( γ 1 s ˉ i , j ) ∑ k = 0 288 exp ⁡ ( γ 1 s ˉ i , k ) c_{i}=\sum_{j=0}^{288} \alpha_{j} v_{j}, \text { where } \alpha_{j}=\frac{\exp \left(\gamma_{1} \bar{s}_{i, j}\right)}{\sum_{k=0}^{288} \exp \left(\gamma_{1} \bar{s}_{i, k}\right)} ci=j=0288αjvj, where αj=k=0288exp(γ1sˉi,k)exp(γ1sˉi,j)

其中ci是与句子第i个单词相关的图像子区域向量表示,其中γ1是一个因素,表示对图像相关子区域特征的关注度。

7.3、第三步

应用余弦相似度定义计算第i个单词与图片的相关性:
R ( c i , e i ) = ( c i T e i ) / ( ∥ c i ∥ ∥ e i ∥ ) R\left(c_{i}, e_{i}\right)=\left(c_{i}^{T} e_{i}\right) /\left(\left\|c_{i}\right\|\left\|e_{i}\right\|\right) R(ci,ei)=(ciTei)/(ciei)
进而得出整个图像与整个文本描述之间的注意力机制图像-文本匹配:
R ( Q , D ) = log ⁡ ( ∑ i = 1 T − 1 exp ⁡ ( γ 2 R ( c i , e i ) ) ) 1 γ 2 R(Q, D)=\log \left(\sum_{i=1}^{T-1} \exp \left(\gamma_{2} R\left(c_{i}, e_{i}\right)\right)\right)^{\frac{1}{\gamma_{2}}} R(Q,D)=log(i=1T1exp(γ2R(ci,ei)))γ21

7.4、损失函数

对于一个批度文本图片对{[Qi,Di]}Mi=1,有一个后验概率:
P ( D i ∣ Q i ) = exp ⁡ ( γ 3 R ( Q i , D i ) ) ∑ j = 1 M exp ⁡ ( γ 3 R ( Q i , D j ) ) P\left(D_{i} \mid Q_{i}\right)=\frac{\exp \left(\gamma_{3} R\left(Q_{i}, D_{i}\right)\right)}{\sum_{j=1}^{M} \exp \left(\gamma_{3} R\left(Q_{i}, D_{j}\right)\right)} P(DiQi)=j=1Mexp(γ3R(Qi,Dj))exp(γ3R(Qi,Di))
将后验概率引入图像与其相应文本描述匹配的负对数损失函数:
L 1 w = − ∑ i = 1 M log ⁡ P ( D i ∣ Q i ) , L 2 w = − ∑ i = 1 M log ⁡ P ( Q i ∣ D i ) \mathcal{L}_{1}^{w}=-\sum_{i=1}^{M} \log P\left(D_{i} \mid Q_{i}\right), \quad \mathcal{L}_{2}^{w}=-\sum_{i=1}^{M} \log P\left(Q_{i} \mid D_{i}\right) L1w=i=1MlogP(DiQi),L2w=i=1MlogP(QiDi)
以相同方法得到 L 1 s , L 2 s \mathcal{L}_{1}^{s}, \mathcal{L}_{2}^{s} L1s,L2s
最终可以得出DAMSM的损失函数为:
L D A M S M = L 1 w + L 2 w + L 1 s + L 2 s \mathcal{L}_{D A M S M}=\mathcal{L}_{1}^{w}+\mathcal{L}_{2}^{w}+\mathcal{L}_{1}^{s}+\mathcal{L}_{2}^{s} LDAMSM=L1w+L2w+L1s+L2s

八、实验

实验数据集:CUB、COCO
定量标准:IS、R-precision
实验效果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

九、实验复现

AttnGAN代码复现(详细步骤+避坑指南)

十、相关阅读

下一篇:论文精读 DM-GAN: Dynamic Memory Generative Adversarial Networks for t2i 用于文本图像合成的动态记忆生成对抗网络

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

文字转图像专栏

这篇关于Text to image论文精读 AttnGAN: Fine-Grained TexttoImage Generation with Attention(带有注意的生成对抗网络细化文本到图像生成)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

AI一键生成 PPT

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

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

pdfmake生成pdf的使用

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

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

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在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学