首页 > 其他分享 >Image captioning常用的指标

Image captioning常用的指标

时间:2023-04-27 11:37:15浏览次数:48  
标签:captioning 常用 参考 Image CIDEr 生成 gram SPICE 描述


1. n-gram是什么?

n-gram是自然语言处理中常用的一种模型,它是指由n个连续的词组成的序列。例如,在句子"I love natural language processing"中,1-gram可以表示为{“I”, “love”, “natural”, “language”, “processing”},2-gram(也称为bigram)可以表示为{“I love”, “love natural”, “natural language”, “language processing”},3-gram(也称为trigram)可以表示为{“I love natural”, “love natural language”, “natural language processing”},以此类推。

在机器翻译、文本生成等任务中,n-gram模型常常被用于计算文本的相似度、预测下一个词或短语等。通过统计不同n-gram出现的频率可以得到文本的语言模型,进而进行文本分类、机器翻译等任务。

2. BLEU是什么?

BLEU(Bilingual Evaluation Understudy)是一种常用的自动评价机器翻译质量的指标,也可以用于图像字幕生成任务。BLEU计算候选描述中n-gram与参考文本n-gram之间的重叠率得分。根据计算的不同n-gram(通常使用1到4个),BLEU将候选描述分为多个片段并计算各个片段的精确度,然后将这些精确度进行加权平均,以得出最终的BLEU分数。

BLEU主要是基于n-gram匹配来评估机器翻译或图像字幕生成的质量,但它忽略了语法和语义等方面的因素。因此,当评估语言生成模型时,BLEU经常与其他评价指标(如ROUGE、METEOR和CIDEr等)一起使用,以提供全面的评价结果。

在实现上,BLEU非常简单直观,可以使用Python中的nltk库进行计算。具体实现方法可以参考nltk库的文档和示例。

参考例子: BLEU评估指标_bleu指标_雨宙的博客

3. METEOR是什么?

METEOR(Metric for Evaluation of Translation with Explicit ORdering)是一种用于自动评估翻译和图像描述生成质量的指标。虽然METEOR最初是为机器翻译而开发的,但它已被广泛应用于图像描述的评估中。

在图像描述任务中,METEOR可以与其他常用指标(如BLEU和ROUGE)结合使用,提供更全面、准确的评价结果。与BLEU等基于n-gram匹配的指标不同,METEOR通过考虑单词层面的语义相似性、同义词、词形变化和词序等因素来衡量候选句子和参考句子之间的相似度。

具体而言,METEOR将候选句子和参考句子分别转换成单词集合,并使用WordNet等语义资源计算它们之间的相似度得分。此外,METEOR还考虑了其他因素,如未对齐单词、短语重复以及候选句子和参考句子长度差异等问题。最终,METEOR将所有这些因素结合起来,生成一个介于0和1之间的总体得分,越高表示候选句子和参考句子之间的相似度越高。

总之,METEOR是一种非常灵活、全面的评估指标,可帮助研究人员更准确地评估图像描述生成算法的性能。

参考例子:(7条消息) NLP基础知识点:METEOR_meteor计算公式_梆子井欢喜坨的博客

4. ROUGE-L是什么?

ROUGE-L(Recall-Oriented Understudy for Gisting Evaluation - Longest Common Subsequence)是用于自动文本摘要、机器翻译等任务的一种指标,用于衡量生成文本与参考文本之间的相似程度。ROUGE-L使用最长公共子序列(LCS)作为匹配标准,而不是像 ROUGE-N 那样使用 N-gram。

在 ROUGE-L 中,将每个词视为一个字符,先计算出生成文本和参考文本之间的最长公共子序列长度,然后计算出参考文本的长度,将两者相除得到 ROUGE-L 分数。为了避免分母为零的情况,在参考文本为空的情况下,分值被定义为1.0。

ROUGE-L 指标强调了生成内容与参考内容之间的顺序信息,因此更适用于评估自然语言生成模型,尤其是文本生成模型的性能。ROUGE-L 的优点是能够捕捉到生成文本与参考文本中重叠部分的完整性,在文本摘要和机器翻译等任务中得到广泛应用。

参考例子:NLP评估指标之ROUGE - 知乎 (zhihu.com)

5. SPICE是什么?

SPICE(Semantic Propositional Image Caption Evaluation)是一种用于自动图像描述生成任务的评价指标。相比于传统的基于n-gram重叠或句法结构的评价指标,SPICE考虑了更为详细和复杂的语义信息,可以更准确地评估自然语言生成模型在生成图像描述时的性能。

SPICE的计算过程包括以下几个步骤:

  1. 对参考描述和生成描述进行语义解析,将每个句子分解为逻辑命题。
  2. 计算所有逻辑命题之间的相似度得分,并按权重加权求和得到整个句子的相似度得分。
  3. 根据句子长度进行归一化,获得最终的SPICE指标得分。

具体来说,SPICE首先使用自然语言处理技术(如句法分析、词性标注等)对图像描述进行预处理,然后将每个句子转换成若干个逻辑命题。这些命题表达了句子中的各种语义信息,例如对象、关系、属性等。

接下来,SPICE使用谓词逻辑(Predicate Logic)对命题进行表示,并计算生成描述和参考描述之间所有命题之间的相似度得分。为了避免不同命题之间的权重影响,SPICE采用矩阵乘法的方法将其组合成一个统一的相似度矩阵,并在最后进行加权求和。最终,SPICE将相似度得分除以句子长度进行归一化,生成一个0到1之间的SPICE指标得分。

通过考虑更为复杂和详细的语义信息,SPICE可以更准确地评估自然语言生成模型在生成图像描述时的性能,对于描述质量的准确性和语义表达的多样性有更高的敏感性和评价能力。

参考例子:(8条消息) Image captioning评价方法之SPICE_Michaelliu_dev的博客-

6. CIDEr-1是什么?

CIDEr(Consensus-based Image Description Evaluation)是一种用于自动图像描述生成任务的评价指标,其中CIDEr-1是指CIDEr得分中的一部分。

CIDEr-1是CIDEr中的一个重要组成部分,用于衡量单个词在参考描述中的普遍性和频率。具体来说,它使用逆文档频率(Inverse Document Frequency,IDF)的概念计算每个单词的权重,并考虑每个单词在生成描述中的出现次数。CIDEr-1对于每个参考描述都计算了一个得分,然后取平均值作为最终的CIDEr-1得分。

与其他评估指标不同,CIDEr-1不仅考虑每个单词在生成描述中的频率,还考虑了该单词在参考描述集合中的普遍性和频率。这样做的目的是更好地反映单词的关键性和贡献度,从而更准确地评估生成描述的质量。

CIDEr评估指标的整体思想是采用一种基于一致性的方法,通过比较多个参考描述之间的相似度来评估生成描述的质量。具体而言,CIDEr将参考描述中的短语进行分解,并计算这些短语与生成描述中的短语之间的相似度。这种方法不仅考虑了单词频率,还考虑了短语重复和多样性等因素,能够更准确地反映生成描述的质量。

CIDEr评估指标已经成为自然语言处理领域中图像描述生成任务的重要评价指标之一,而其组成部分CIDEr-1则是其中一个关键的组成部分。

参考例子:(10条消息) 用于图像描述的评价指标CIDEr讲解_cider指标_六六六六神的博客-


标签:captioning,常用,参考,Image,CIDEr,生成,gram,SPICE,描述
From: https://blog.51cto.com/lihuanyu/6230095

相关文章

  • ES常用dsl语句
    1、fileld_2字段存在与fileld_1字段不存在GET index_1/_search{"track_total_hits":true,"query":{"bool":{"must_not":[{"exists":{"field":"fileld_1"}}],"must&quo......
  • Dockerfile构建镜像常用指令
    1.常用命令Dockerfile是一个文本文件,包含了一条条的指令,在基于指定的镜像上,一条指令构建一层,最终构建出一个新的镜像。关键字作用备注格式FROM指定基础镜像指定基于哪个镜像开始构建FROM<image>:<tag>MAINTAINER作者信息标明这个dockerfile是谁写的(已弃用)......
  • Python常用魔法方法
    Python常用魔法方法1、__new__()__new__是在实例创建之前被调用的,用于创建实例,然后返回该实例对象2、__init__()__init__是当实例对象创建完成后被调用的,用于初始化一个类实例classMyClass(object):def__init__(self,name,age):print('__init__called')......
  • Docker CLI docker compose logs常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • FileBuffer-ImageBuffer代码实现
    #include"stdafx.h"#include<stdio.h>#include<windows.h>#include<malloc.h>////FileBuffer函数DWORDReadPEFile(LPVOID*ppFileBuffer){FILE*pFile=NULL;DWORDSizeFileBuffer=0;pFile=fopen("C://WINDOWS//system......
  • P43FileBuffer-ImageBuffer
    MISC可能比SizeOfRawData大可能含有一些数据未初始化RVA:相对偏移地址FOA:文件偏移地址PE加载的过程: 1、根据SizeOfImage的大小,开辟一块缓冲区(ImageBuffer). 2、根据SizeOfHeader的大小,将头信息从FileBuffer拷贝到ImageBuffer 3、根据节表中的信息......
  • 我的C++常用函数
    /*根据多个分隔符来分隔字符串.比如":,]"*/std::vector<std::string>SplitString(conststd::string&str,conststd::string&delimiters){std::vector<std::string>tokens;size_tprev=0,pos;while((pos=str.find_first_of(d......
  • pgsql 常用SQL
     ##查看数据库版本。selectversion();##查看表空间select*frompg_tablespace;##大小相关的。1)查看表空间大小selectpg_tablespace_size('pg_default');2)查看各个表空间的大小selectspcname,pg_size_pretty(pg_tablespace_size(spcname))frompg_tables......
  • web前端开发常用的代码编写工具有哪些?
    不同类型的开发人员使用的工具大有不同,所以说没有绝对好,对任何人员都适用的工具,我们只能以友好度,功能性,扩展性,界面/体验,跨平台等等这些来作为评判标准。下面我们就给它分类并一一介绍:大师级别vivi对于使用过unix的朋友来说,绝对是再熟悉不过的代码编辑器,有多少伟大的程序和代码......
  • Linux常用命令redis相关
    一、查询文件中的内容vim文件名使用/xxx即可查询文件中的xxx单词,n下一个选中单词,N上一个选中单词。一、防火墙1.查看防火墙状态:firewall-cmd--state2.启动防火墙systemctlstartfirewalld3.关闭防火墙systemctlstopfirewalld二、redis1、开启redis服......