机器学习

Image captioning评价方法之CIDEr

2022-03-16  本文已影响0人  ce0b74704937

文章地址:CIDEr: Consensus-based Image Description Evaluation

代码地址(非官方,且代码实现的是CIDEr-D):https://github.com/tylin/coco-caption

文章由微软和Virginia Tech联合发表在CVPR2015上。

CIDEr是专门用来评价image captioning效果的评价指标。

下面先定义一些符号。对于一张图片I_i,candidate sentence定义为c_i, reference sentences定义为S_i=\{s_{i1}, ..., s_{im}\}。一个n元组(n-gram)定义为\omega_k,一个n元组为一个或者多个单词组成的有序序列。本文n取1,2,3,4。

一、CIDE

在进行CIDE计算之前,先将所有句子中的单词转换为原始形式,及“fishes”、“fishing”、“fished”都转换为fish。

文章认为评价指标应该考虑几点:

  1. candidate sentence中的n-grams在reference sentences中出现的频率
  2. 类似1,没在reference sentences中出现的n-grams也不应该在candidate sentence中出现
  3. 在所有图片的描述经常出现的n-grams,应该降低它们的权重(因为这种n元组没有太多针对性的信息含量,即与当前图片的信息相关性较小)

基于上述三点,文章提出一个叫TF-IDF(Term Frequency Inverse Document Frequency)的概念,TF表示在当前candidate sentence中出现的频率,IDF表示反比在所有reference sentences出现的频率。

对于一个n元组\omega_k出现在某一个reference sentences_{ij}中的次数记为h_k(s_{ij}),同理,h_k(c_i)表示该n元组出现在c_i的次数。那么对于该n元组的TF-IDF表示为

g_k(s_{ij})=\frac{h_k(s_{ij})}{\sum_{\omega_l\in{\Omega}} h_l(s_{ij})}log(\frac{|I|}{\sum_{I_p\in I}min(1, \sum_q h_k(s_{pq}))})

式中\Omega表示所有的n元组的个数,I表示所有的图片个数。

可以看出对于某一个n元组\omega_k来说,TF-IDF就是TF*IDF, 式子的左边就是TF右边就是IDF。在s_{ij}中n元组出现次数越多,TF值就越大。n元组在所有的s_{pq}中出现的次数越多,IDF就越小。

CIDEr_n则是用来计算candidate sentence和reference sentences在n长度的元组表示时的相似度,用公式表示为

CIDEr_n(c_i, S_i)=\frac{1}{m}\sum_j\frac{\textbf{g}^n(c_i)\cdot \textbf{g}^n(s_{ij})}{||\textbf{g}^n(c_i)||\cdot ||\textbf{g}^n(s_{ij})||}

式中\textbf{g}^n(c_i)是由n-gram取长度n时g_k(c_i)组成的向量,对应的||\textbf{g}^n(c_i)||表示该向量的模。\textbf{g}^n(s_{ij})含义类似。m为对应图片I_i有多少个reference sentences。

从式中可以看出,就是向量的内积除以向量的模,含义就是两个向量的相似程度。

最终n变化时,所有的CIDEr_n取平均得到CIDEr

CIDEr(c_i, S_i)=\sum^N_{n=1}\omega_nCIDEr_n(c_i, S_i)

其中\omega_n=1/N, 文章取N=4。

二、CIDEr-D

文章提出了CIDEr的修改版本CIDEr-D,目的是为了防止评价指标的gaming问题。gaming问题就是防止针对某一种评价指标来优化算法使得当人类给出的分很低,但是评价指标给出的分很高。

首先,去除了将句子中的单词转换为原始形式这一步,为了就是让句子生成时对应的状态是对的。

第二,在CIDEr评价指标中,对一些重复单词得到的长句子,CIDEr的分数越高,为了减少这种影响,文章加入了高斯因子,用于惩罚candidate和reference sentence长度相差较大的情况。

最后,给一些重复高置信度(即信息含量较多的句子,比如图片有一条鱼,那句子重复说fish的情况)的单词的句子加惩罚。例如对于某个指定的n元组来说,取该n元组在candidate和reference sentence出现次数最小的数。(类似于Bleu的操作)

那么CIDEr-D_n(c_i, S_i)

CIDEr-D_n(c_i, S_i)=\frac{10}{m}\sum_j e^{\frac{-(l(c_i)-l(s_{ij})^2}{2\sigma^2}}\sum_j\frac{min(\textbf{g}^n(c_i),\textbf{g}^n(s_{ij}))\cdot \textbf{g}^n(s_{ij})}{||\textbf{g}^n(c_i)||\cdot ||\textbf{g}^n(s_{ij})||}

式中,l(c_i)l_(s_{ij})表示candidate和reference sentences的长度,10是为了将CIDEr-D的值和其它评价指标的值大小相似,\sigma=6

那么CIDEr-D的计算方式为

CIDEr-D(c_i, S_i)=\sum^N_{n=1}\omega_nCIDEr-D_n(c_i, S_i)

其中\omega_n=1/N

上一篇下一篇

猜你喜欢

热点阅读