首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R分数复现 R-precision评估指标定量 文本生成图像R分数定量实验全流程复现(R-precision)定量评价实验踩坑避坑流程

R分数复现 R-precision评估指标定量 文本生成图像R分数定量实验全流程复现(R-precision)定量评价实验踩坑避坑流程

原创
作者头像
中杯可乐多加冰
修改2024-11-29 16:02:26
修改2024-11-29 16:02:26
24800
代码可运行
举报
运行总次数:0
代码可运行
2024好事发生

这里推荐一篇实用的文章:用堆实现优先级队列:从基础到实战

优先级队列在许多场景中是一种不可或缺的数据结构。与普通队列不同,优先级队列的插入顺序并不会决定元素的取出顺序,而是由其优先级大小来决定。不论是在操作系统的任务调度中,还是在大型服务器的请求处理中,优先级队列都起到至关重要的作用。这篇文章深入探讨的就是如何使用 堆结构 来实现一个优先级队列,用 Java 代码实现。

下面开始今天的主题:

一、R-precision分数简介

R-precision是一种衡量文本描述和生成图像之间视觉语义相似性的指标,它通过比较提取的图像特征和文本特征之间的相似度来评估。具体来说,R-precision首先需要对生成的图像提取特征,同时从数据集中随机抽取其他文本描述,包括生成图像的真实文本描述。然后,计算图像特征和每个文本描述的text embedding之间的余弦相似性,这是一种衡量两个向量之间角度相似度的方法。计算完成后,所有文本描述会根据相似性从高到低进行排序。如果生成图像的真实文本描述在排序后的前r个位置内,那么这个描述被认为是相关的。R-precision的值就是真实文本描述出现在前r个的概率,这个值越高,说明生成的图像与真实文本描述的相关性越强,因此R-precision是一个衡量图像生成质量的重要指标。

简单举个例子:假设r为3,有一百个文本,其中包括一个真实对应的文本和99个随机取出来的文本,将他们转为text embedding,然后分别与生成的图像计算余弦相似度,然后排序,如果真实文本生成的embedding排在前3位,则认为该图像与文本有相关性。

R-precision表示的是排序后真实文本出现在前r个的概率,越大说明图像与真实文本描述越相关,R-precision越大越好

二、 R-precision-CUB定量实验步骤

这里我们以DF-GAN在CUB上面的模型定量为例:

2.1、下载R-precision代码

Github:https://github.com/maincarry/R-Precision

2.2、分析

下载后发现代码工程包括build_RPdata.py、config.py、encoder.py、eval_Rprecision.py、all_texts.txt。

all_text.txt:包括birds的所有描述文本 build_RPdata.py:功能是根据生成的图像建立图像-文本的数据对 config.py:一些参数的设置,用不着,可以不管 encoder.py:图像编码器和文本编码器 eval_Rprecision.py:功能是根据图像-文本的数据对评估图像文本的对齐性

2.3、配置好文件

以DF-GAN为例: 将文件放到以上箭头指定的位置(此处只是为了方便这样放,也可以自己单独做文件夹放,只要后面的文件路径你能配好随意放都行)

2.4、更改路径参数

打开build_RPdata.py,找到160~180行,如下:

代码语言:javascript
代码运行次数:0
运行
复制
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Generate RP test data from evaluation output.')
    parser.add_argument('-p', dest='path', type=str, help='Path to image directory')
    parser.add_argument('-c', dest="cap", default='all_texts.txt',
                        help='Optional: specify all texts file. Default to all texts in dataset.')
    parser.add_argument('-d', dest='out', type=str, help='Output directory', default='./')
    parser.add_argument('-t', dest='text', type=str, help='Directory to text data',
                        default='D:\\MyPythonWorkplace\\DF-GAN-master\\data\\bird\\text\\text')
                        # default='D:\\AttnGAN-master\\data\\birds\\text')
    parser.add_argument('-r, --random', dest='rand', action='store_true',
                        help='If set, sample is selected randomly instead of sequentially.')
    args = parser.parse_args()

    # args.p = 'D:\\AttnGAN-master\\models\\netG_epoch_250\\valid\\single\\'
    args.p = '..\\test\\valid\\single_580epoch'
    # args.out = 'D:\\AttnGAN-master\\R_Precision_attnGAN-master\\RP_data\\'
    args.out = '..\\RP_data'

其中需要更改的参数有三个

  1. parser.add_argument('-t', dest='text', type=str, help='Directory to text data',default='D:\\MyPythonWorkplace\\DF-GAN-master\\data\\bird\\text\\text'),这一句是指明数据集文本所在的位置,修改为你放置的地方,如果你按照2.3放置好了文件的话,你可以改成default='..\\data\\bird\\text\\text'
  2. args.p = '..\\test\\valid\\single_580epoch',这一句是指明生成的图像的所在位置:

  1. args.out = '..\\RP_data',这一句指明你要输出的图像-文本数据对所在的位置。

打开eval_R_precision.py,找到第306行左右:

代码语言:javascript
代码运行次数:0
运行
复制
    args = parse_args()
    BATCH_SIZE = 64
    args.fake_dir = '..\\RP_data'
    args.cap_path = '..\\data\\bird\\captions.pickle'
    args.manualSeed = 1900

其中需要更改的参数有两个

  1. args.fake_dir指明的是RP_data即图像-文本数据对存放的文件路径。
  2. args.cap_path指明的是数据集captions.pickle包的所在路径。

2.5、生成RP_data

运行build_RPdata.py,生成数据对文件保存到RP_data文件夹中。 如果出现读取文件错误可以更改86行:txt_file = os.path.join(args.text, os.path.basename(dir), "{}.txt".format(fname.split(" ")[0][:-1])),看是不是路径提取时出的错误。

2.6、评估R分数

运行eval_R_precision.py开始评估,等待结束即可,3000份图像-文本数据对的话评估时间大概在7分钟左右。

R-precision虽然是一个衡量文本描述和生成图像之间相似性的有用指标,但它存在一些局限性。它依赖于余弦相似性来评估特征之间的相似度,可能无法完全捕捉图像和文本之间的复杂语义关系。此外,它可能对全局背景色过于敏感,导致评估结果不准确。样本的代表性和数据预处理方法也会影响其稳定性和可靠性。R-precision还依赖于预先训练的分类器,这限制了其在不同数据集上的适用性,并可能导致过拟合。最后,由于它基于特征提取,无法描述特征的空间关系,这可能导致在评估生成图像的质量时出现偏差。因此,R-precision需要与其他评价指标结合使用,以获得更全面的评估结果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、R-precision分数简介
  • 二、 R-precision-CUB定量实验步骤
    • 2.1、下载R-precision代码
    • 2.2、分析
    • 2.3、配置好文件
    • 2.4、更改路径参数
    • 2.5、生成RP_data
    • 2.6、评估R分数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档