Paper : http://arxiv.org/abs/2003.00387v1 [CVPR2020]

提出了一种更加细粒度的控制信号,称为抽象场景图 ( Abstract Scene Graph, ASG ),可以通过图结构同时控制所希望表达的物体、属性和关系,不仅能反映用户细粒度的描述意图,也能生成更具有多样性的图像描述。ASG 是一个包含三类抽象节点的有向图,这三类抽象节点分别代表用户希望描述的物体 ( object ) 、属性 ( attribute ) 和关系 ( relationship ) ,每个抽象节点在图中有具体区域的定位,但却不需要任何具体语义标签。因为ASG不需要任何语义识别,它可以方便地由用户限定或自动生成。

ASG2Caption 能够识别图形中的用户意图和语义,从而根据图形结构生成所需的描述。

  1. ASG 只包含抽象图结构,不包含任何的语义标签,所以提出 role-aware graph encoder 捕获图中的意图和语义。

    role-aware graph encoder : 区分节点的细粒度意图角色,并通过图上下文增强每个节点以提高语义表示

  2. ASG 不仅通过不同的节点控制了描述什么内容,也通过节点的连接决定了描述的顺序,因此提出 language decoder for graphs 同时考虑了节点的内容和结构,更加注意以图流顺序生成所需的内容。

  3. 最后,生成的图像描述需要完全覆盖 ASG 中指定节点,不能有节点内容的缺失或重复。为此,我们在解码过程中逐渐更新编码的图表示,以记录跟踪图中不同节点的访问状态。

Abstract Scene Graph

图像 I\mathcal{I}I 的 ASG 表示为 G=(V,E)\mathcal{G} = (V, E)G=(V,E)V,E\mathcal{V}, EV,E 分别是节点和边的集合。节点根据它们的意图角色分为三类:物体节点 ( ooo ),属性节点 ( aaa ) 和关系节点 ( rrr ) ,构建 G\mathcal{G}G 如下:

  1. 在图 G\mathcal{G}G 中添加用户感兴趣的物体 oio_ioi ,在图像 I\mathcal{I}I 的物体 oio_ioi 有对应的边界框
  2. 如果用户想要知道物体 oio_ioi 更多的描述细节,可以在图 G\mathcal{G}G 中添加属性节点 ai,la_{i,l}ai,l ,创建一个从 oio_ioiai,la_{i,l}ai,l 的边,∣l∣|l|l 是关联属性的数量,因为 oio_ioi 可以有多个 ai,la_{i,l}ai,l
  3. 如果用户想要描述 oio_ioiojo_joj 之间的关系,可以把关系节点 ri,jr_{i,j}ri,j 加入到图 G\mathcal{G}G 中,创建从 oio_ioiri,jr_{i,j}ri,j 和从 ri,jr_{i,j}ri,jojo_joj 之间的边

除了获得 G\mathcal{G}G 之外,很容易在现成的目标检测器的基础上生成 ASGs 和一个简单的物体之间的关系分类器。

The ASG2Caption Model

给定一张图像 I\mathcal{I}I 和 ASG G\mathcal{G}G, 目标是生成一个流利的句子 y={y1,...,yT}y = \{y_1, ..., y_T\}y={y1,...,yT} ,满足用户的意图。

Role-aware Graph Encoder

把 ASG 编码为一系列的节点嵌入 X={x1,...,x∣v∣}\mathcal{X} = \{x_1, ..., x_{|\mathcal{v}|}\}X={x1,...,xv} 。首先,xix_ixi 应该除了视觉外观之外还反映其意图作用,这对于区分目标和连接的属性节点特别重要,因为它们位于同一区域。其次,由于节点不是孤立的,因此来自相邻节点的上下文信息对于识别节点的语义是有益的。Role-aware Graph Encoder 包含 role-aware node embedding ( 区分节点意图 ) 和 multi-relational graph convolutional network ( MR-GCN ) ( 上下文编码 )

Role-aware Node Embedding

G\mathcal{G}G 中的第 iii 个节点,首先初始化为对应的视觉特征 viv_ivi 。物体节点的特征是从图像中的边界框提取的;属性节点的特征和它连接的物体是相同的;关系节点的特征是从两个物体的联合边界框提取的。因为视觉特征不能区分不同节点的意图角色,所以通过获得一个角色感知节点嵌入 xi(0)x_{i}^{(0)}xi(0) 增强每一个节点
xi(0)={vi⊙Wr[0],if i∈o;vi⊙(Wr[1]+pos[i]),if i∈a;vi⊙Wr[2],if i∈r.(1)x_{i}^{(0)} = \begin{cases}v_i \odot W_r[0], & \text{if $i \in o$} ;\\v_i \odot (W_r[1] + pos[i]), & \text{if $i \in a$}; \\v_i \odot W_r[2], & \text{if $i \in r$.}\end{cases} \tag{1} xi(0)=viWr[0],vi(Wr[1]+pos[i]),viWr[2],ifio;ifia;ifir.(1)
其中 Wr∈R3×dW_r \in \Bbb{R}^{3×d}WrR3×d 是角色嵌入矩阵,ddd 是特征维度 ( 512 ),Wr[k]W_r[k]Wr[k] 表示WrW_rWr 的第 kkk 行,pos[i]pos[i]pos[i] 是区分连接同一个物体的不同的属性节点的位置嵌入。

Multi-relational Graph Convolutional Network

尽管ASG中的边是单向的,但节点之间的影响却是相互的。此外,由于节点的类型不同,信息从一种类型节点传递到另一种类型节点的传递方式与其反方向也是不同的。因此,我们将原始ASG的边扩展为不同的双向边,从而生成一个具有多关系的图 KaTeX parse error: Undefined control sequence: \cal at position 19: …thcal{G}_m = \{\̲c̲a̲l̲{V}, E, R\},利用多关系图卷积神经网络 ( MR-GCN ) 进行图中上下文编码。

R\mathcal{R}R 中有六种类型的边来捕获相邻节点之间的相互关系,分别是物体到属性,目标到关系,关系到物体以及他们的反向。使用 MR-GCN 编码图上下文:
xi(l+1)=σ(W0(l)xi(l)+∑r~∈R∑j∈Nir~1∣Nir~∣Wr~(l)xj(l))(2)x_{i}^{(l+1)} = \sigma(W_0^{(l)} x_i^{(l)} + \sum_{\tilde{r} \in \mathcal{R}} \sum_{j \in \mathcal{N}_i^{\tilde{r}}} \frac{1}{|\mathcal{N_i^{\tilde{r}}}|} W_{\tilde{r}}^{(l)}x_j^{(l)}) \tag{2} xi(l+1)=σ(W0(l)xi(l)+r~RjNir~Nir~1Wr~(l)xj(l))(2)
其中 Nir~\mathcal{N}_i^{\tilde{r}}Nir~ 是在关系 r~∈R\tilde{r} \in \mathcal{R}r~R 下的第 iii 个节点的邻居,σ\sigmaσ 是 ReLU 激活函数,W∗(l)W_*^{(l)}W(l) 是第 lll 个 MR-GCN 层的学习参数。利用一层为每个节点带来来自直接相邻节点的上下文,而堆叠多层可以对图形中的更广泛的上下文进行编码。 我们堆叠 LLL 层,然后将最后第 LLL 层的输出作为最终节点嵌入 X\mathcal{X}X。也可以通过对 X\mathcal{X}X 取平均获得全局图嵌入 g‾=1∣V∣∑ixi\overline{g} = \frac{1}{|\mathcal{V}|} \sum_i x_ig=V1ixi 。把全局图嵌入和全局图表示融合作为全局编码特征 v‾\overline{v}v

Language Decoder for Graphs

把编码 G\mathcal{G}G 转化为图像描述。graph-based attention mechanism ( 包含图语义和结构 ) 和 graph updating mechanism ( 记录已经描述或未描述的内容 )

解码器包含一个两层的 LSTM ( attention LSTM and language LSTM ) 。attention LSTM 把全局编码嵌入 v‾\overline{v}v ,前一个单词嵌入 wt−1w_{t-1}wt1 和 language LSTM 的前一个输出 ht−1lh_{t-1}^lht1l 作为输出,计算一个 query htah_t^ahta :
hta=LSTM([v‾;wt−1;ht−1l],ht−1a;θa)(3)h_t^a = \text{LSTM}([\overline{v};w_{t-1};h_{t-1}^{l}], h_{t-1}^a; \theta^a) \tag{3} hta=LSTM([v;wt1;ht1l],ht1a;θa)(3)
[;][;][;] 是向量拼接,θa\theta^aθa 是参数。

ttt 步的节点嵌入表示为 Xt={xt,1,...,xt,∣V∣}\mathcal{X}_t = \{x_{t,1}, ..., x_{t,|\mathcal{V}|}\}Xt={xt,1,...,xt,V}X1\mathcal{X}_1X1 是编码器的输出 X\mathcal{X}Xhath_a^that 用来检索上下文向量 ztz_tzt ( 通过 graph-based attention 计算 ) 。language LSTM 把 ztz_tzthtah_t^ahta 作为输入生成单词序列:
htl=LSTM([zt;hta],ht−1;θl)(4)h_t^l = \text{LSTM}([z_t;h_t^a], h_{t-1};\theta^l) \tag{4} htl=LSTM([zt;hta],ht1;θl)(4)

p(yt∣y<t)=softmax(Wphtl+bp)(5)p(y_t| y_{<t}) = \text{softmax}(W_p h_t^l + b_p) \tag{5} p(yty<t)=softmax(Wphtl+bp)(5)

其中 θl,Wp,bp\theta^l, W_p, b_pθl,Wp,bp 是参数。生成单词 yty_tyt 之后,通过 graph updating 机制更新节点嵌入 Xt\mathcal{X}_tXtXt+1\mathcal{X}_{t+1}Xt+1 记录新的图状态。

Graph-based Attention Mechanism

为了同时考虑图中语义内容和图结构信息,我们结合了两种不同的注意力机制,分别称为图语义注意力 ( graph content attention ) 和图流向注意力 ( graph flow attention ) 。

图语义注意力考虑查询向量 htah_t^ahta 与图编码向量 Xt\mathcal{X}_tXt 之间的语义相关性,计算注意力分数向量 αtc\alpha_t^cαtc
α~t,ic=wcTtanh⁡(Wxcxt,i+Whchta)(6)\tilde{\alpha}_{t,i}^c = w_c^T \tanh(W_{xc}x_{t,i} + W_{hc}h_t^a) \tag{6} α~t,ic=wcTtanh(Wxcxt,i+Whchta)(6)

αtc=softmax(α~tc)(7)\alpha_t^c = \text{softmax}(\tilde{\alpha}_{t}^c) \tag{7} αtc=softmax(α~tc)(7)

其中 Wxc,Whc,wcW_{xc}, W_{hc}, w_cWxc,Whc,wc 是语义注意力的参数,省略偏置。由于忽略了节点之间的连接,因此语义关注类似于传送,它可以在不同的解码时间步长从一个节点转移到另一个节点。

图流向注意力用于刻画图中的结构流向信息。流图 Gf\mathcal{G}_fGf 和原始的 ASG 不同:第一个是应该分配开始符号S,第二个区别在于对象节点和属性节点之间的双向连接,因为通常对象的顺序及其属性不是强制性的,应由句子的流畅性决定,第三个是如果节点的输出边不存在,则会为该节点构造一个自环边,从而确保图上的注意力不会消失。

假定 MfM_fMfGf\mathcal{G}_fGf 的邻接矩阵,第 iii 行表示第 iii 个节点的归一化度。图流向注意力用三种方式转换前一编码步骤的注意力分数向量 αt−1\alpha_{t-1}αt1 :

  1. 在相同的节点 αt,0f=αt−1\alpha_{t,0}^f = \alpha_{t-1}αt,0f=αt1 ,模型可能用多个单词表达一个节点
  2. 移动一步 αt,1f=Mfαt−1\alpha_{t,1}^f = M_f \alpha_{t-1}αt,1f=Mfαt1,从一个关系节点到它的物体节点的转换
  3. 移动两步 αt,2=(Mf)2αt−1\alpha_{t,2} = (M_f)^2 \alpha_{t-1}αt,2=(Mf)2αt1,从一个关系节点到一个属性节点的转换

最后的流注意力是这三个分数的软差值,通过一个动态门控制:
st=softmax(Wsσ(Wshhta+Wszzt−1))(8)s_t = \text{softmax}(W_s \sigma(W_{sh}h_t^a + W_{sz}z_{t-1})) \tag{8} st=softmax(Wsσ(Wshhta+Wszzt1))(8)

αtf=∑k=02st,kαt,kf(9)\alpha_t^f = \sum_{k=0}^2 s_{t,k} \alpha_{t,k}^f \tag{9} αtf=k=02st,kαt,kf(9)

Ws,Wsh,WszW_s, W_{sh}, W_{sz}Ws,Wsh,Wsz 是参数,st∈R3s_t \in \Bbb{R}^3stR3

最后,图注意力机制动态地融合了图语义注意力 αtc\alpha_t^cαtc 和图流向注意力 αtf\alpha_t^fαtf
βt=sigmoid(wgσ(Wghhta)+Wgzzt−1)(10)\beta_t = \text{sigmoid}(w_g \sigma(W_{gh}h_t^a) + W_{gz}z_{t-1}) \tag{10} βt=sigmoid(wgσ(Wghhta)+Wgzzt1)(10)

αt=βtαtc+(1−βt)αtf(11)\alpha_t = \beta_t\alpha_t^c + (1 - \beta_t) \alpha_t^f \tag{11} αt=βtαtc+(1βt)αtf(11)

因此,ttt 步的预测单词的上下文向量是 zt=∑i=1∣V∣αt,ixt,iz_t = \sum_{i=1}^{|\mathcal{V}|} \alpha_{t,i}x_{t,i}zt=i=1Vαt,ixt,i

Graph Updating Mechanism

更新图形表示,以在每个解码步骤中记录不同节点的访问状态。 注意力分数 αt\alpha_tαt 表示每个节点的访问强度,因此应该高度关注节点。然而,当生成一些非视觉单词例如 “the” “of”,虽然图节点已经访问了,但是不能通过生成的单词表达,因此不应该更新。因此,提出视觉门修改注意强度:
ut=sigmoid(fvs(htl;θvs))αt(12)u_t = \text{sigmoid}(f_{vs}(h_t^l;\theta_{vs})) \alpha_t \tag{12} ut=sigmoid(fvs(htl;θvs))αt(12)
其中 fvsf_{vs}fvs 是一个全连接网络,输出表示生成的单词是否可以表示注意的节点。

每一个节点的更新机制由两部分组成:擦除和添加 ( NTM ) 。首先,第 iii 个节点 xt,ix_{t,i}xt,i 根据更新的强度 ut,iu_{t,i}ut,i 以细粒度的方式针对每个特征维度擦除:
et,i=sigmoid(fers([htl;xt,i];θers))(13)e_{t,i} = \text{sigmoid}(f_{ers}([h_t^l;x_{t,i}];\theta_{ers})) \tag{13} et,i=sigmoid(fers([htl;xt,i];θers))(13)

x^t+1,i=xt,i(1−ut,iet,i)(14)\hat{x}_{t+1, i} = x_{t,i}(1 - u_{t,i}e_{t,i}) \tag{14} x^t+1,i=xt,i(1ut,iet,i)(14)

因此,如果一个节点不再需要访问可以设置为 0 。如果节点可能需要多次访问并跟踪其状态,我们还采用了添加更新操作:
αt,i=σ(fadd([htl;xt,i];θadd))(15)\alpha_{t,i} = \sigma(f_{add}([h_t^l;x_{t,i}]; \theta_{add})) \tag{15} αt,i=σ(fadd([htl;xt,i];θadd))(15)

xt+1,i=x^t+1,i+ut,iαt,i(16)x_{t+1,i} = \hat{x}_{t+1,i} + u_{t,i}\alpha_{t,i} \tag{16} xt+1,i=x^t+1,i+ut,iαt,i(16)

其中 fers,faddf_{ers}, f_{add}fers,fadd 是全连接层。这样,把 Xi\mathcal{X}_iXi 更新为 Xi+1\mathcal{X}_{i+1}Xi+1

Training and Inference

交叉熵损失
L=−log⁡∑t=1Tp(yt∣t<t,G,I)(17)L = -\log \sum_{t=1}^T p(y_t | t_{<t}, \mathcal{G}, \mathcal{I}) \tag{17} L=logt=1Tp(ytt<t,G,I)(17)

Examples


SayAsYouWish:Fine-grained Control of Image Caption Generation with Abstract Scene Graphs ---- 论文阅读笔记相关推荐

  1. 【论文阅读笔记】Say As You Wish: Fine-grained Control of Image Caption Generation with Abstract Scene Graphs

    Say As You Wish: Fine-grained Control of Image Caption Generation with Abstract Scene Graphs 2020-CV ...

  2. Say As You Wish: Fine-grained Control of Image Caption Generation with Abstract Scene Graphs阅读笔记

    人们可以根据自己的意愿使用粗糙到精细的细节来描述图像内容.然而,大多数图像字幕模型是与意图无关的,不能主动根据不同的用户意图生成各种描述.本文提出了抽象场景图(ASG)结构来细粒度地表示用户意图,并控 ...

  3. image generation from scene graphs 论文+code复现总结

    image generation from scene graphs 论文+code复现总结 abstraction 传统方法在一些限制好的领域像鸟或花,这些方法都还不错,但是在如实地分解复杂的段落为 ...

  4. Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记

    Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记 Concurre ...

  5. PolyFormer: Referring Image Segmentation as Sequential Polygon Generation 论文阅读笔记

    PolyFormer: Referring Image Segmentation as Sequential Polygon Generation 论文阅读笔记 一.Abstract 二.引言 三.相 ...

  6. 论文阅读笔记-场景图谱-图谱生成:Scene Graph Generation from Objects, Phrases and Region Captions

    文章目录 摘要 引言 正文部分 Conclusionn Li Y, Ouyang W, Zhou B等. Scene Graph Generation from Objects, Phrases an ...

  7. 【论文阅读笔记|ACL2022】Continual Sequence Generation with Adaptive Compositional Modules

    论文题目:Continual Sequence Generation with Adaptive Compositional Modules 论文来源:ACL2022 论文链接:https://acl ...

  8. 毫米波点云生成论文 阅读笔记 | 3D Point Cloud Generation with Millimeter-Wave Radar

    毫米波点云生成论文 | 3D Point Cloud Generation with Millimeter-Wave Radar Kun Qian, Zhaoyuan He, Xinyu Zhang ...

  9. 论文阅读笔记(4)——《Language Generation with Multi-Hop Reasoning on Commonsense Knowledge Graph》

    基于常识知识图的多跳推理语言生成 1 Abstract & Introduction 2 Related Work 2.1 Commonsense-Aware Neural Text Gene ...

  10. (sketch to image) 论文阅读笔记 SketchyCOCO:Image Generation from Freehand Scene Sketches

    Task Description:根据sketch生成全景图 Input: 包含前景sketch(如上图中的斑马,长颈鹿,大象等)和背景sketch(如草-草地,白云-天空,树-森林等)的全景级fre ...

最新文章

  1. C++中static关键字用法
  2. IDE之Jupyter:交互式文档Jupyter Notebook简介、安装、使用方法详细攻略
  3. 关于系统异常设计的再思考
  4. Evaluation of Deep Learning Toolkits
  5. PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能
  6. easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池
  7. 【Qt开发】QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent
  8. 大数据学习(5)-- NoSQL数据库
  9. uoni扫地机器人好用吗_抖音走红的日本uoni尤利扫地机器人好吗?体验感如何?...
  10. 应用交付脚本工具在HTTP服务中的应用
  11. 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证
  12. ICCV11 Distributed Cosegmentation via Submodular Optimization on Anisotropic Diffusion
  13. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月5日-3月11日)
  14. 郭天祥 10天搞定单片机 (3)数码管+中断
  15. 一个开源的 Markdown 在线编辑器
  16. 360随身WiFi驱动下载
  17. ae正在发生崩溃_本专业人才懂的梗 “pr未响应 ae正在发生崩溃”
  18. 怎么退出自适应巡航_定速巡航与自适应巡航到底哪个更强?如何正确使用这些功能?...
  19. 用R自动生成pdf文件
  20. 考研由考生编号估计学校,报考人数和专业

热门文章

  1. No module named ‘frontend‘
  2. VGG为什么叫做VGG,VGG的由来
  3. Vue+element+Nodejs学习记录(6)
  4. WebView 入坑
  5. 如何从哈斯图判断一个偏序集是不是格?
  6. IT运维工程师要会什么?
  7. MD-Pandoc进阶教程:图表、文献和目录
  8. 如何在unity上放置3d图片
  9. VS2015+MATLAB2016b混合编程
  10. 计算机专用英语词汇1695个词汇表,这个收藏了