Image Captioning常用指标CIDEr原理

本文最后更新于:2023年3月16日 下午

Image Captioning常用指标CIDEr原理

CIDEr是论文CIDEr: Consensus-based Image Description Evaluation提出的一种评价模型生成的一个文本多个标签文本的相似度的方法,本文对其原理进行介绍。

先定义一些符号:模型对于图像IiI_i生成的文本cic_i,对应的标签为Si={si,1,,si,m}S_i=\{s_{i,1},\dots,s_{i,m}\}ω\omega是n-gram的单词,当n=1时就是单词,n=2时将两个单词看作一个整体作为一个2-gram的单词,以此类推,所有的ω\omega组成了n-gram词表Ω\Omega

在开始之前,所有文本中的单词都会转换成其最初的形式,比如把“fishes”、“fishing”、“fished”转换成“fish”,这个地方算是预处理。

随后计算文本中每个n-gram的TF-IDF值(后面的叙述把n-gram写作单词):TF-IDFTF(词频)与IDF(逆文档频率)的乘积。其中TF是当前文本单词出现次数 / 当前文本总词数,衡量单词的重要性(越常出现的单词越重要)。IDF是log(文本总数量 / 出现了单词的文本数量),衡量单词的稀有性(任何地方都会出现的单词不重要,比如“的”、“地”),当某个词出现在了所有文档中时,IDF就是0,特别地当一个词没有出现在任何文本中,那么IDF也为0。

在Caption的计算中,IDF的“文本总数量”是图像的个数。

所以对于每个文本(模型输出和GT)都可以计算出其所包含所有的n-gram对应的TF-IDF,这些组成一个向量,向量的理论长度是所有的n-gram(以1-gram为例,长度是所有出现过的单词的数量),但是其中大部分为0。然后模型输出和每个对应的GT之间计算余弦相似度。

相似度得到之后,就可以在所有GT间平均,然后在所有n-gram的尺度平均,再在所有图像的尺度平均得到最终的指标。

⚠️假如只有一个图像,是无法计算CIDEr的,因为IDF始终为0。

⚠️换言之,CIDEr与评价的数量有关系……

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Image 1:
模型输出:
a girl explaining how to upload a music
GT:
a clip showing a computer screen which contains instructions
a person explaining how to download song
a person is showing what to do on their computer
a person provides instructions on searching for music downloads online
a screencast demonstration of how to download music from the internet is shown

Image 2:
模型输出:
a animation is shown to help learn colors
GT:
a animation is shown to help learn colors
a commercial for paint
a pain can singing
a purple paint can is moving around
a song about colors with paint cans

统计Image 1的模型输出词频:a:2girl:1,……,a girl: 1,……,to upload a music:1

对于a,TF是2,IDF是log22=0\log\frac{2}{2}=0,因为它出现在了Image1的GT和Image2的GT中所以分母是2,最终TF-IDF是0。

对于girl,TF是1,IDF是log21\log \frac{2}{1},因为girl没有出现在任何GT中,但为了分母不为0加上了1,最终TF-IDF是log2=0.6931\log 2 = 0.6931

对于explaining,出现在了一个GT中,所以IDF的分母是1,和上面一样。

最后得到结果如下(只列出1-gram):

1
2
3
4
5
6
7
('a',): 0.0,
('girl',): 0.6931471805599453,
('explaining',): 0.6931471805599453,
('how',): 0.6931471805599453,
('to',): 0.0,
('upload',): 0.6931471805599453,
('music',): 0.6931471805599453

对GT的每一个文本也进行如上的统计,第一个GT的结果如下:

1
2
3
4
5
6
7
8
('a',): 0.0,
('clip',): 0.6931471805599453,
('showing',): 0.6931471805599453,
('computer',): 0.6931471805599453,
('screen',): 0.6931471805599453,
('which',): 0.6931471805599453,
('contains',): 0.6931471805599453,
('instructions',): 0.6931471805599453,

他们之间计算点乘相似性,即对于模型输出里面的每一个词,在GT中找到对应词的权重(没有就是0),然后相乘。上面这个GT是没有相似性的,我们再找一个:

1
2
3
4
5
6
7
('a',): 0.0,
('person',): 0.6931471805599453,
('explaining',): 0.6931471805599453,
('how',): 0.6931471805599453,
('to',): 0.0,
('download',): 0.6931471805599453,
('song',): 0.0

可以发现,explaininghow是可以计算相似性的:

0.69310.6931+0.69310.69315×0.69312×4×0.69312=0.4472\frac{0.6931*0.6931+0.6931*0.6931}{\sqrt{5\times0.6931^2} \times \sqrt{4\times0.6931^2}} = 0.4472

所以Image1的输出与第二个GT的1-gram相似度就是0.4472,其余同理。