项目地址:https://panderson.me/spice/
上述的项目地址包含了论文地址和代码地址。
该方法是由The Australian National University和Macquarie University联合发表在ECCV2016上。
文章认为之前的评价方法采用n-gram的方式计算不是特别的好,例如下面例子
(a) A young girl standing on top of a tennis court.
(b) A giraffe standing on top of a green field.
a,b两个句子完全不是相同的意思,但是即使使用5-gram来度量,由于都存在‘standing on top of a’这个短语,导致这两个句子的相似度会很高。
而拿下面例子来说:
(c) A shiny metal pot filled with some diced veggies.
(d) The pan on the stove has chopped vegetables in it.
c,d是表达一个意思,但是拿n-gram来度量,它们相似度很低。
文章考虑利用scene graph来对两个句子之间的相似度进行度量。先要说明的是,SPICE(Semantic Propositional Image Caption Evaluation)从名字上看是为了image caption任务提出的,但是对结果进行评测时,实际是比较candidate caption和reference caption之间的关系,所以跟MT(machine translation)任务的评测很像。又由于文章使用了semantic结构对场景描述,给出了对应的名词,所以文章的方法更适合评价image captions任务。
先给出一些符号的定义,一个candidate caption用c表示,对应同一个图片的的reference captions集合用
S
=
{
s
1
,
.
.
.
,
s
m
}
S=\{s_1, ..., s_m\}
S={s1,...,sm}表示。评价的目的就是求c与S之间的相似度。
一、Semantic Parsing—Captions to Scene Graphs
在计算相似度之间,先介绍一下scene graph的概念,并且解释一下怎么将caption转换为scene graph。
给定一个目标类别(object classes)的集合C,一个关系类型(relation types)集合R,一个属性类型(attribute types)集合A,和一个caption c,将c转换为scene graph的方法用符号表示为
G
(
c
)
=
⟨
O
(
c
)
,
E
(
c
)
,
K
(
c
)
⟩
G(c)=\langle O(c), E(c), K(c)\rangle
G(c)=⟨O(c),E(c),K(c)⟩
式中,
O
(
c
)
⊆
C
O(c)\subseteq C
O(c)⊆C表示c中提到的目标,
E
(
c
)
⊆
O
(
c
)
×
R
×
O
(
c
)
E(c)\subseteq O(c)\times R\times O(c)
E(c)⊆O(c)×R×O(c)表示目标之间的连接,
K
(
c
)
⊆
O
(
c
)
×
A
K(c)\subseteq O(c)\times A
K(c)⊆O(c)×A表示目标与属性之间的关系连接。
文章先使用the Stanford Scene Graph Parser将caption转换为一个依赖树结构,然后利用九个简单的语言规则将树结构转换为一个scene graph。如下图所示,左边为一幅图和它对于的一些描述,右边为所有描述生成的一张scene graph。图中红色表示目标,绿色表示属性,蓝色表示关系。
二、SPICE计算
在上面流程等到了candidate和reference scene graphs后,需要将图中的连接逻辑用一系列的元组表示。用公式表示如下:
T
(
G
(
c
)
)
=
Δ
O
(
c
)
⋃
E
(
c
)
⋃
K
(
c
)
T(G(c))\overset{\Delta}{=}O(c)\bigcup E(c)\bigcup K(c)
T(G(c))=ΔO(c)⋃E(c)⋃K(c)
上式中,T表示将scene graph转换为元组集合。元组包含了一个或者两个或者三个元素,这些元素用来表示目标、属性、关系之间的关系。
如下图所示的的scene graph
表示成元组集合为:
{(girl), (court), (girl, young), (girl, standing), (court, tennis), (girl, on-top-of, court)}
知道如何将scene graph转换为元组集合后,那么就可以计算SPICE了,用公式表示如下:
P
(
c
,
S
)
=
∣
T
(
G
(
c
)
)
⨂
T
(
G
(
S
)
)
∣
∣
T
(
G
(
c
)
)
∣
P(c, S)=\frac{|T(G(c))\bigotimes T(G(S))|}{|T(G(c))|}
P(c,S)=∣T(G(c))∣∣T(G(c))⨂T(G(S))∣
R
(
c
,
S
)
=
∣
T
(
G
(
c
)
)
⨂
T
(
G
(
S
)
)
∣
∣
T
(
G
(
S
)
)
∣
R(c, S)=\frac{|T(G(c))\bigotimes T(G(S))|}{|T(G(S))|}
R(c,S)=∣T(G(S))∣∣T(G(c))⨂T(G(S))∣
S
P
I
C
E
(
c
,
S
)
=
F
1
(
c
,
S
)
=
2
⋅
P
(
c
,
S
)
⋅
R
(
c
,
S
)
P
(
c
,
S
)
+
R
(
c
,
S
)
SPICE(c, S)=F_1(c,S)=\frac{2\cdot P(c, S)\cdot R(c,S)}{P(c, S)+R(c, S)}
SPICE(c,S)=F1(c,S)=P(c,S)+R(c,S)2⋅P(c,S)⋅R(c,S)
式中
⨂
\bigotimes
⨂表示两个元组集合匹配上的元组,这里匹配采用的是与METEOR相同的规则,即形式不同或者同义词都认为是相同的词。
上述是一张图片的评测结果,如果是一个数据集,那么总的结果为所有结果求平均。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)