用扩散AI生成的合成数据的质量评估方法【4个指标】

news2024/11/26 8:23:57

在这里插入图片描述

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器

为了生成有用的图像数据集,我们使用真实世界的照片数据集作为指南针,探索即时工程的艺术。 我们的稳定扩散(Stable Diffusion)实验显示了生成模仿现实世界场景的多样化且令人信服的图像的复杂性。

由于很难手动确定某些即时修改何时会改善我们的合成数据集或使其变得更糟,因此我们引入了一个包含4个指标的定量框架来对任何合成数据集的质量进行评分。 本文逐步演示了这些质量分数如何指导及时的工程工作以生成更好的综合数据集。 同样的系统评估还可以帮助你优化合成数据生成器的其他方面。

如果你的机器学习任务需要自动标注局部区域,比如目标检测,那么用稳定扩散就不容易实现自动标注,更好的方法是使用 UnrealSynth这样的基于游戏引擎的合成数据生成器,能够自动生成包含标注的图像集,非常方便:

在这里插入图片描述

https://tools.nsdt.cloud/UnrealSynth

1、评估合成数据集的质量

根据任何提示生成合成数据后,你会想知道合成数据集的优点/缺点。 虽然可以通过简单地逐一查看生成的样本来获得想法,但这既费力又不系统。 Cleanlab Studio 提出了一种自动化方法来定量评估合成数据集的质量。 当你提供真实数据和应该增强它的合成数据时,该方法会计算四个分数,从不同方面对比你的合成数据与真实数据:

  • 不真实(Unrealistic):此分数衡量合成数据与真实数据的难以区分程度。 高值表明存在许多看起来不切实际的合成样本,这些样本显然是假的。 从数学上讲,该分数的计算方法为 1 减去具有真实或合成二进制标签的联合数据集中所有合成图像的平均标签问题分数。
  • 不具有代表性(Unrepresentative):该分数衡量真实数据在合成数据样本中的代表性程度。 高值表明可能存在合成样本分布无法捕获的真实数据分布的尾部(或罕见事件)。 从数学上讲,该分数的计算方式为 1 减去具有真实或合成二进制标签的联合数据集中所有真实图像的平均标签问题分数。
  • 变化太少(Unvaried):该分数衡量合成样本之间的差异程度。 高值表明合成数据生成器过于重复,生成了许多看起来彼此相似的样本。 从数学上讲,该分数的计算方式为 1 减去与其他合成样本接近重复的合成样本的比例。
  • 非原创(Unoriginal):该分数衡量合成数据的新颖性。 高值表明许多合成样本看起来像是真实数据集中发现的内容的副本,即合成数据生成器可能过于紧密地记忆真实数据而无法泛化。 从数学上讲,该分数的计算方式为 1 减去与真实数据集中的示例几乎重复的合成样本的比例。
    在这里插入图片描述

这些的具体例子是它们所揭示的分数和缺点,将在本文中进一步介绍。 你可以按照本教程计算自己的合成图像/文本/表格数据的这些分数(并了解它们的数学细节)。 这四个定量分数可通过单一 Python 方法计算,帮助你严格比较不同的合成数据生成器(即提示模板),特别是当通过手动检查样本无法立即清楚差异时。

2、零食数据集

在本文中,我们在合成图像生成方面的工作基于 Snacks 数据集。 该数据集包含 20 种不同类别食品的 4838 张实际照片。
在这里插入图片描述

来自 Snacks 数据集的随机照片

该数据集描述了广泛的零食类型(从水果到饮料)并且具有丰富的深度(每一类食物都以多种方式描述,具有不同的外观/背景)。 我们的目标是生成一个合成数据集,该数据集可用于:代替真实的 Snacks 数据集,或者使用额外的合成图像来增强原始数据。 正如我们将看到的,正确捕捉这些图像的丰富性并非易事(即使在这个有限的零食领域)。

3、根据提示生成图像

稳定扩散(Stable Diffusion)是一种随机文本到图像模型,可以生成从同一文本提示采样的不同图像。 为稳定扩散设计一个好的提示来生成合成图像数据集需要考虑我们试图模仿的真实图像的几个特征。

3.1 输出格式

首先要考虑的是所需的输出格式。 这涉及图像的媒介和风格,这会影响生成图像的整体外观和感觉。 鉴于我们的零食数据集中的所有图像都是零食的照片,因此在生成的图像中保留这种摄影风格非常重要。 我们可以通过在提示中加入诸如“……的照片”之类的指令来做到这一点。

我们通过使用基本提示生成大量 992 个图像来开始我们的实验。 对于我们的零食图像数据集,它很简单:

prompt = "A photo of a snack"

在这里插入图片描述

根据我们的基本提示生成的一些合成图像

这个提示很简单,并且产生视觉上连贯的图像。 然而,这些图像往往是通用的,并且常常缺乏对零食类型的明确定义。

为了定量评估从此提示生成的合成图像数据(与真实 Snacks 数据集的图像进行比较),我们使用一种简洁的方法来计算 Cleanlab Studio 的 Python API 中提供的合成数据集问题分数:

scores = score_synthetic_dataset(real_and_synthetic_dataset)

根据上述提示生成的合成图像数据集的最终分数(值越高越差)为:

实验不具代表性不真实缺少变化非原创
基线提示0.982230.959180.00.0

这些分数揭示了有关我们的提示生成的合成数据集的见解:

  • 不真实的分数较高表明合成图像与真实图像之间存在明显差异(见下文)。
  • 不具代表性的高分表明合成图像没有捕捉到 Snacks 数据集的多样性和细微差别。
  • 缺少变化和非原创的分数为0表明我们生成的图像不重复,并且与真实数据相比显得足够新颖。 这是有道理的,因为稳定扩散具有高度的不确定性,并且尚未在我们的 Snacks 数据集上进行明确的微调。
    在这里插入图片描述

Cleanlab Studio 检测到的基线实验中的合成图像看起来明显是假的(不真实的高分)。

总体而言,从这个单一提示生成的图像几乎没有变化,并且所描绘的零食类型通常不清楚。 值得注意的是,稳定扩散的图像生成过程并不提供有关其旨在生成的零食类型的直接信息。 从像这样的单个提示模板中不太可能获得丰富且具有代表性的合成数据集。

3.2 主题

图像的主题是我们的提示工程策略中要考虑的下一个方面。 我们可以通过合并有关目标分类的信息来使提示更加具体。 这使我们能够更好地控制生成的图像内容,旨在使合成数据集与原始数据集中的类分布保持一致。

对于我们的零食数据集,主题与每张图像中显示的特定零食类型直接相关。

# Pseudocode
for each class_name in class_names:
    if class_name starts with a vowel:
        prompt = "A photo of an " + class_name
    else:
        prompt = "A photo of a " + class_name

通过以这种方式包含主题,每个提示都变得更有针对性。 我们现在不再使用通用的“零食照片”,而是使用“香蕉照片”或“苹果照片”等明确提示。 通过使用这些特定于类别的提示为每个类别生成 96 个图像,我们的目标是创建更准确地代表 Snacks 数据集中找到的各个类别的图像。 为了使此方法顺利运行,类名应该清晰、具体且一致。 如果它们不明确或模糊,生成的图像可能与预期主题不准确匹配。

在这里插入图片描述

一些根据基于主题的提示生成的合成图像

为了评估基于类别的提示生成的合成数据,我们再次采用自动质量评分方法:

scores = score_synthetic_dataset(real_and_synthetic_dataset)

我们的新实验生成的合成数据集得出以下分数:

实验不具代表性不真实缺少变化非原创
主题聚焦提示0.996740.957750.02610.0
  • 不真实的分数的边际下降表明,在以类别为中心的提示驱动下,特定的合成图像现在紧密地反映了同一类型的真实图像,并且总体上显得更加真实。

  • 尽管提示侧重于类别,但不具有代表性的分数的增加表明,由提示“……的照片”产生的合成图像集合并不能完全捕获 Snacks 数据集中更广泛的多样性。

  • 缺少变化的分数增加表明一些合成图像可能是彼此几乎相同的版本(这并不意外,因为我们的新提示不太开放)。 这是使提示更加具体的危险,生成的合成数据将变得不那么多样化!
    在这里插入图片描述

  • Cleanlab Studio 检测到的合成图像之间几乎重复,导致较高的缺少变化分数。
    非原创分数仍然很低,表明我们的合成样本似乎都不是直接从真实数据复制的(这是预期的,因为我们从未在本文中使用真实数据训练稳定扩散生成器)。

3.3 上下文

我们可以用来改进提示的另一件事是上下文。 指主体所处的背景或周围情况。 通过稳定扩散,模型在很大程度上决定了生成图像的背景或设置。 但是,通过在之前的课堂提示中添加“上下文规则”,我们可以尝试影响图像的这一部分。

我们的增强提示如下所示:

prompt = class_prompt + " " + context_rule

就我们的零食数据集而言,我们对零食通常可能出现的可想象场景或上下文进行了启发式选择。 对于实际应用,建议基于对现有数据的分析(例如不同背景的相对频率),有条理地选择上下文。

context_rules = [
    "in a bowl", 
    "on a plate", 
    "in a bag", 
    "at the supermarket", 
    "in a basket",
    "on a shelf",
]

在这里插入图片描述

一些根据我们的上下文增强提示生成的合成图像

我们生成了一个包含 4800 张来自不同类别 + 上下文组合的图像的合成数据集。 为了衡量上下文增强提示的有效性,我们再次使用 Cleanlab 的自动质量评分:

scores = score_synthetic_dataset(real_and_synthetic_dataset)

我们的合成数据集本次迭代的得分为:

实验不具代表性不真实缺少变化非原创
上下文提示0.999310.996040.01170.0

分析结果如下:

  • 不具代表性的分数的进一步增加强调,虽然上下文驱动的提示提供了一个新的角度,但期望它们自己捕获全部可能的图像是不合理的。
    在这里插入图片描述

描述 Cleanlab Studio 检测到的场景的真实图像在合成数据集中代表性不足。 第一行显示了几张真实的图像,其中包括人们和零食。 底行显示在合成数据集中没有很好地表示的欠光图像。

  • 不真实分数的增加表明,某些合成图像在受到我们的上下文规则约束时,显得不太自然,从而使它们与真实图像更容易区分。 并非每个上下文规则都适合每个类; 想象“盘子里的果汁”或“篮子里的冰淇淋”可能会产生与现实不一致的荒谬图像。

稳定扩散在图像生成方面表现出色,但捕捉现实世界的全部多样性仍然是一个挑战。 虽然我们的基线数据集是多种多样的,但它在监督学习环境中却表现不佳。 另一方面,课堂提示提高了真实感,但留下了许多真实图像的代表性不足。 令人惊讶的是,特定的背景提示加剧了这种代表性不足的情况。 我们的外卖? 课堂提示是我们获得更丰富的合成数据集的最佳选择。 为了真正超越并填补这些空白,完善我们的上下文提示是前进的方向。

在所有提示中,不切实际且不具代表性的分数都相当高。 稳定扩散倾向于在提示中对主题进行精美、理想化的描述。 这与真实数据集的自发性和多变性形成鲜明对比,真实数据集包含了我们在合成图像中无法真正观察到的各种照明条件、复杂的背景和模糊的上下文。

4、你的提示能激发出一千张独特的图像吗?

如今,提示工程(Prompt Engineering)是有效生成合成图像的关键。 本文演示了一种使用稳定扩散模型和 Snacks 数据集生成多样化且真实的合成图像数据集的方法。 这些策略也可以应用于许多其他环境。 设计有效提示的艺术是一种微妙的平衡——阐明太多细节可能会导致过于具体的图像,而保持太模糊可能会导致缺乏多样性。

Cleanlab Studio提出的对合成数据质量的定量评估对这一迭代过程有很大帮助。 通过自动化评估阶段,它使你能够更加专注于完善提示和改进合成图像(而不是费力地了解自己是否取得了进展)。


原文链接:稳定扩散合成数据的评估 — BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1167290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PPT模板,免费下载!

找免费PPT模板就上这6个网站,各种模板、素材都能找到,质量还很高,赶紧收藏起来! 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材,像设计类、办公类、自媒…

红海云签约中国煤科信息公司,数智引领科技型国企人力资源数字化变革

中煤科工集团信息技术有限公司(以下简称“中国煤科信息公司”)隶属于中国煤炭科工集团,作为中国煤科核心软件的研发中心、数据技术中心、内部信息化支撑中心,是中国煤科加快智能矿山建设和数字化转型的核心力量。 基于对数字化转…

软件设计模式原则(一)迪米特法则

开一个小专题——详细总结一下软件设计模式原则,这部分在《软计》和《java设计模式》中算是很重要的知识点,值得展开详细讲解一下~首先介绍的是【迪米特法则】 一.定义 迪米特法则又称为最少知识原则,其定义为:一个软件实体应当尽…

vue使用JsBarcode生成条形码

在工作中&#xff0c;有一个需求是接口返回的订单号生成条形码&#xff0c;如图&#xff1a; 1.安装依赖 yarn add jsbarcode2.引入 在script标签中引入 import JsBarcode from jsbarcode 3.使用 this.$refs.a.src的值为条形码的地址。 <template><div><img…

linux下多机器ssh免密码登录配置

20,21,22,23等4台机器配置ssh免密登陆 确认sshd配置 查看/etc/ssh/sshd_config文件&#xff0c;确认如下配置没有被注释掉&#xff1a; AuthorizedKeysFile .ssh/authorized_keys每一台机器修改hosts配置主机名&#xff08;可选&#xff09; 执行ssh命令&#xff0c;如…

积分球测试粉末反射率

积分球测试粉末主要是基于光在积分球内的反射和混合。具体来说&#xff0c;当光线进入积分球时&#xff0c;它将在球的内表面上进行反射。由于积分球的内表面是高反射材料&#xff0c;所以大部分光线将被反射&#xff0c;而不会逃逸出球体。在积分球内&#xff0c;光线经过多次…

基于51单片机的全自动洗衣机系统设计

**单片机设计介绍&#xff0c;基于51单片机的全自动洗衣机系统设计(仿真、程序、论文) 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的全自动洗衣机系统是一种集成控制、传感、显示等功能于一体的智能洗衣机系统&a…

Security ❀ UDP/TCP传输层常见DOS攻击详解

文章目录 1. UDP协议基础2. UDP Flood2.1. 攻击原理2.2. 防护方法 3. TCP三次握手和四次挥手3.1. 三次握手3.2. 四次挥手 4. SYN Flood4.1. 攻击原理4.2. 防护方法 5. SYN-ACK Flood5.1. 攻击原理5.2. 防护方法 6. ACK Flood6.1. 攻击原理6.2. 防护方法 7. FIN/RST Flood7.1. 攻…

来可电子基于UDS的ECU刷写方案

车辆电子控制单元&#xff08;ECU&#xff09;的刷写方式也正在发生重大变化。传统的ECU刷写方法通常使用CAN卡连接电脑进行&#xff0c;现在越来越多的汽车商家和软件开发人员开始采用基于总线UDS来进行ECU刷写。 1、通过我们LKmast上位机软件编写配置刷写步骤 2、导入到我们…

python将图片序列保存成gif

这里用到的模块是imageio。用imageio.mimsave即可将图片序列保存成gif动态图。以下是本人编写的小实验&#xff1a; import cv2 import imageiopaths ["./images/0001.png", "./images/0002.png", "./images/0003.png", ...] frames [] for i…

瑞禧生物分享纳米粉体~二硫化钼粉体 MoS2 纯度:99% 纳米二硫化钼(MoS2)

二硫化钼粉体 名称&#xff1a;二硫化钼粉体 纯度&#xff1a;99% 外观&#xff1a;粉末 纳米二硫化钼(MoS2)粉体硫化钼粉体 二硫化铝化学性质稳定、热稳定性好 、摩擦系数低 、润滑作用优 良且在较为苛 刻的工作环境下能保持 良好的摩擦性能因此二硫化铝被广泛应用于固体润…

一键报警可视对讲管理机10寸触摸屏管理机

一键报警可视对讲管理机10寸触摸屏管理机 一、管理机技术指标&#xff1a; 1、10寸LCD触摸屏&#xff0c;分辨率1024*600&#xff1b; 2、摄像头1200万像素 3、1000M/100M自适应网口&#xff1b; 4、按键设置&#xff1a;报警/呼叫按键&#xff0c;通话/挂机按键&#xff0…

count+group by

一、count()函数 1、count(*) 把所有的行数都查询出来&#xff0c;除非该行中所有的数据为null SELECTCOUNT(*) FROMemployees结果&#xff1a;107 2、count(commission_pct) 把指定列中所有的行数查出来&#xff0c;只要一行为null&#xff0c;那就不计数 SELECTCOUNT(com…

【Qt-22】Qt乱码问题解决

最近在Qt项目中遇到TCP通信接收数据乱码的问题&#xff0c;很是苦恼&#xff0c;经过多次尝试&#xff0c;终于得以解决。 感谢Qt TcpSocket 传递数据乱码显示_qt中socket接受到的客户端数据显示不出来-CSDN博客 彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_XX風的博客…

采购供应链思维导图

供应链采购&#xff0c;是指企业根据生产需要&#xff0c;通过与供应商签订合同&#xff0c;由供应商提供原材料、零部件、包装材料等&#xff0c;企业负责产品的制造&#xff0c;并将产品销售给用户的一种交易方式。 供应链管理 横向:采购把东西买进来&#xff0c;生产去加工增…

windows 使用 EasyScreenLive 和 EasyDarwin 软件实现相机 rtsp 推流

1. 下载软件 实现 rtsp 推流&#xff0c;需要运行&#xff08;1&#xff09;rtsp 服务器、&#xff08;2&#xff09;rtsp 推流客户端。 rtsp 服务器 EasyDarwin&#xff1a;https://github.com/EasyDarwin/EasyDarwin rtsp 推流客户端 EasyScreenLive&#xff1a;https://git…

打造个人的Minecraft服务器:Java+cpolar实现我的世界联机游戏

文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …

GCN火车票识别项目 P2 图卷积神经网络介绍

深度学习一直都是被几大经典模型统治着&#xff0c;常见的有CNN、RNN网络&#xff0c;它们在CV和NLP领域都取得了优异的效果。但人们发现了很多CNN、RNN无法解决&#xff0c;或者效果不好的问题——图结构数据&#xff0c;如社交网络、人物关系、分子结构等&#xff0c;所以就有…

基于51单片机的传送带产品计数器系统设计

**单片机设计介绍&#xff0c;基于51单片机的传送带产品计数器系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的传送带产品计数器系统是一种集成计数、显示、控制等功能于一体&#xff0c;用于自动计数传送…