AIGC生图的自动化质量评估(2)

简介: AIGC生图的自动化质量评估




Pick-a-Pic


 主要内容


对于文生图模型,反映人类偏好的大型数据集,很少有公开的。为了解决这个问题,本项目创建了一个web应用程序,允许文生图模型的用户生成图像并指定他们的偏好。使用这个web应用程序,构建了一个大型的、开放的文生图数据集,并且标注有用户偏好。部分数据集如下:

image.png


利用这个数据集,可以训练一个基于clip的评分函数,即PickScore,它在预测人类偏好的任务上展示了很好的性能。PickScore可以对于多张生成图像进行偏好排序,以此比较不同文生图模型的效果、以及相同模型在不同参数下的效果。


 Pick-a-Pic数据集


Pick-a-Pic数据集概况:

  • 包含超过50w组信息和3.5w个不同的prompt。
  • 每组信息包含一个prompt、两张图、以及偏好标签。
  • 偏好标签有三种情况:喜欢第一张图,喜欢第二张图,两幅图都差不多。
  • 对一个图片的选择是由文生图任务的爱好者参与的,而不是完全无生图模型使用经验的人员。


如何通过web应用程序收集数据:

  • 用户首先写一个prompt,然后收到两张图片。
  • 用户做出偏好判断,选择其中一张偏好的图片。
  • 之后会呈现一个新的图像的图像来替代被拒绝的图像,用户会在这张新图和刚才喜欢的图像里做偏好选择。
  • 该流程会一直重复,直到用户改变prompt。

image.png


数据集中的图像是通过采用多个模型生成的,即Stable Diffusion 2.1、Dreamlike Photoreal2.0, 以及使用不同CFG值的Stable Diffusion XL模型。同时,作者将减少数据集中包含的NSFW示例的数量,并将定期上传最新版本的数据集。在处理收集到的交互时,作者过滤了NSFW短语,并且禁止一些非法用户。每一次收集,将数据集划分为训练、验证集和测试集:

  • 采样1000个prompt,确保每个prompt都是唯一的。
  • 将这些prompt随机分成大小相同的两组,来创建验证集和测试集。
  • 每个prompt采样一组信息。
  • 确保训练集和这两个子集之间没有重复的prompt。


 PickScore模型


为了训练评分函数,本项目使用人类偏好数据和类似于InstructGPT的reward模型,来微调CLIP-H。PickScore在预测用户偏好的任务中取得了SOTA表现,PickScore准确率为70.5%,人类志愿者准确率为68.0%,而原生CLIP-H为60.8%。人类偏好与PickScore有很强的相关性(0.917),而与FID指标则呈负相关(-0.900)。


PickScore遵循CLIP的架构:给定一个prompt x和一个图像y,评分函数s通过使用两个编码器计算文本和图像的相似度。

image.png


计算对于两张图的偏好得分:分别计算两张图与prompt的相似度,计算函数的分母为两张图与prompt的相似度,分子为其中一张图与prompt的相似度,这个函数的目的是做归一化计算。

image.png


计算loss函数:拿到模型的偏好得分后,计算与人工打分的KL散度,表示预测结果与真实结果的差距。训练过程中,通过调整模型参数来最小化KL散度。

image.png


由于许多图像对来自于相同的prompt,通过对于这些图像对进行加权平均,来减轻过拟合的风险。具体来说,每个图像的权重,与它在数据集中的出现频率成反比。


 模型评估


对于模型推理,如果两张图的偏好得分的差值的绝对值,小于一个超参t,即

image.png

则认为这两张图偏好一致。该超参,对于不同模型效果不一样,作者采取了一个最合适的值,来用于不同模型的评估。


使用Spearman方法来计算预测得分与人类预测结果的相似度:

image.png

相关效果,对于每两列,左侧为CLIP-H偏好的图像,右侧为PickScore偏好的图像,绿色框选中的图像为人类偏好的图像,可以看到,PickScore偏好和人类偏好更加接近,PickScore通常选择更美观和与prompt更一致的图像。

image.png


偏好打分模型:可以对于一组生成图像,进行打分排序,并选择得分最高的那一张。PickScore优于其他评估方法。

image.png


本项目的一些局限性:

  • 一些图像和提示可能包含NSFW内容,这可能会使数据产生偏差。
  • 用户的偏好可能可能反映在所收集的数据中。


总结与讨论


在AIGC生图过程中,进行图像质量的自动化评估,能快速进行打分、节省人工成本,更准确的进行模型效果比较,以促进模型迭代。对于特定场景的自动化评估,则需要建立对应的评估体系,包括评分准则、特定数据集、打分模型。我们团队正在进行家装行业AIGC的相关研发,以提高家装AI模型的效果。我们希望与对此方向感兴趣的同学一起探讨和交流。



参考文献



团队介绍


我们是淘天集团-场景智能技术团队,一支专注于通过AI和3D技术驱动商业创新的技术团队, 依托大淘宝丰富的业务形态和海量的用户、数据, 致力于为消费者提供创新的场景化导购体验, 为商家提供高效的场景化内容创作工具, 为淘宝打造围绕家的场景的第一消费入口。我们不断探索并实践新的技术, 通过持续的技术创新和突破,创新用户导购体验, 提升商家内容生产力, 让用户享受更好的消费体验, 让商家更高效、低成本地经营。

相关文章
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【8月更文挑战第27天】在软件开发的海洋中,自动化测试是确保航船不偏离航线的关键罗盘。随着人工智能(AI)技术的兴起,这艘航船正乘风破浪,以前所未有的速度前进。本文将探索如何通过AI技术优化自动化测试流程,不仅提高测试的效率和覆盖范围,而且增强测试用例的智能生成和结果分析能力。我们将从AI在自动化测试中的应用入手,深入探讨其对测试准确性和效率的影响,以及面临的挑战与未来的发展方向。
|
16天前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成:提升效率与质量的关键
在快节奏的软件开发环境中,自动化测试和持续集成已经成为不可或缺的部分。本文将探讨自动化测试和持续集成的重要性,以及它们如何协同工作以提高软件开发的效率和质量。通过分析自动化测试的策略、工具选择以及持续集成的实践,我们将揭示这些技术如何帮助开发团队快速响应变化,减少错误,并加速产品上市时间。
|
20天前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
45 3
|
2月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
33 5
|
2月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
22 2
|
2月前
|
机器学习/深度学习 人工智能 缓存
基于AIGC的自动化内容生成与应用
基于AIGC的自动化内容生成与应用
87 3
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
3月前
|
测试技术 持续交付 Python
自动化测试之美:打造高效的软件质量保障体系
【9月更文挑战第25天】在软件开发的海洋中,自动化测试是一艘能够引领我们高效航行的帆船。它不仅能帮助我们发现缺陷,更是一个持续集成和持续部署(CI/CD)过程中不可或缺的部分。本文将通过浅显易懂的语言和实际代码示例,引导读者理解自动化测试的价值,并学会如何实施它,从而提升软件的质量与开发效率。
46 4
|
3月前
|
敏捷开发 监控 测试技术
提升软件质量的利器:自动化测试的实践与反思
在软件开发的生命周期中,测试作为保障产品质量的重要环节,其重要性不言而喻。随着敏捷开发和持续集成等实践的普及,传统的手动测试方式已逐渐无法满足快速迭代的需求。因此,自动化测试作为一种提高测试效率和准确性的有效手段,正受到越来越多开发者的青睐。本文将深入探讨自动化测试的价值、实施步骤以及在实践中可能遇到的问题和解决方案,帮助读者更好地理解和应用自动化测试。
40 2