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

一、R-precision分数简介

R-precision,也叫R分数,其通过对提取的图像和文本特征之间的检索结果进行排序,来衡量文本描述和生成的图像之间的视觉语义相似性。除了生成图像的真实文本描述外,还从数据集中随机抽取其他文本。然后,计算图像特征和每个文本描述的text embedding之间的余弦相似性,并按相似性递减的顺序对文本描述进行排序。如果生成图像的真实文本描述排在前r个内,则相关。

简单举个例子:假设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
CSDN下载:R分数复现 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行,如下:

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',这一句是指明生成的图像的所在位置:在这里插入图片描述
  3. args.out = '..\\RP_data',这一句指明你要输出的图像-文本数据对所在的位置。

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

    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分钟左右。

最后

特别鸣谢赵zewei同学的指导和帮助。

💖 个人简介:人工智能领域研究生,目前主攻文本生成图像(text to image)方向

📝 个人主页:中杯可乐多加冰

🔥 限时免费订阅:文本生成图像T2I专栏

🎉 支持我:点赞👍+收藏⭐️+留言📝

另外,我们已经建立了微信T2I学习交流群,如果你也是T2I方面的爱好者或研究者可以私信我加入。

如果这篇文章帮助到你很多,希望能不吝打赏我一杯可乐!多加冰哦!

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
attngan是一种新颖的文本生成图像模型,它可以根据输入的文本描述生成对应的图像。在复现attngan的代码之前,首先需要准备好相关的环境和数据集。 步骤一:环境准备 1. 安装Python和相关依赖库,建议使用Anaconda进行环境管理。 2. 下载attngan的源代码和预训练模型。 步骤二:数据集准备 1. 获取用于训练和测试的文本描述数据集,可以使用自己的数据集或者公开的数据集。 2. 准备对应的图像数据集,确保每个文本描述对应有一张或多张图像。 步骤三:代码中的细节 1. 确保代码中的路径设置正确,包括数据集路径、预训练模型路径等。 2. 注意文本描述和图像数据的对应关系,确保它们能够正确匹配。 步骤四:模型训练 1. 根据attngan的文档和示例代码,开始进行模型的训练,调整超参数和训练策略。 2. 监控模型的训练过程,确保模型能够收敛并取得良好的效果。 步骤五:模型测试 1. 使用训练好的模型进行图像生成,可以选择一些文本描述进行测试,观察生成图像质量。 2. 根据生成图像的效果,调整模型的参数或者数据集的准备方式,进行进一步的优化和调整。 避坑指南: 1. 注意数据集的质量和多样性,确保文本描述和图像的多样性和丰富性。 2. 在训练过程中,遇到训练时间过长或者模型不收敛的情况时,可以尝试调整学习率、增大数据集、简化模型结构等方法进行优化。 3. 注意预训练模型的选择和使用,可以根据自己的需求选择合适的预训练模型进行Fine-tuning。 通过以上步骤和避坑指南,可以较为顺利地复现attngan的代码,并成功进行文本生成图像实验和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中杯可乐多加冰

请我喝杯可乐吧,我会多加冰!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值