Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 ISFIDR-prec等
Posted 中杯可乐多加冰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 ISFIDR-prec等相关的知识,希望对你有一定的参考价值。
目录
一、介绍
文本生成图像的评估也是一个很有挑战性的工作,一个良好的t2i模型评价指标不仅要评估生成的图像是否真实,而且要评估文本描述与生成图像之间的语义相关性。
度量指标目前常用的有8种,如下表,IS、FID、SceneFID是对图像质量的一个判断,R-prec、VS、SOA、Captioning是对图像和文本的相关性的一个判断:
度量指标 | 图像质量 | 图像多样性 | 图像保真性 | 文本相关性 | 对象符合性 | 数量对齐性 | 稳健性 | 可解释性 | 自动化 |
---|---|---|---|---|---|---|---|---|---|
IS | √ | √ | |||||||
FID | √ | √ | √ | ||||||
SceneFID | √ | √ | |||||||
R-prec | √ | √ | |||||||
VS | √ | √ | |||||||
SOA | √ | √ | √ | ||||||
Captioning | (√) | √ | |||||||
User Studies | √ | √ | √ | √ | √ | √ | √ | √ | √ |
下面将总结几种常用的定量指标,分析其原理、应用和在其上取得的分数排行榜。
二、inception score(IS)
2.1、原理
IS分数用到了KL散度和熵的数学知识,其主要原理在于计算p(y|x)和p(y)之间的散度:
I S = exp ( E x K L ( p ( y ∣ x ) ∥ p ( y ) ) \\mathrmIS=\\exp \\left(\\mathbbE_x \\mathrmKL(p(y \\mid x) \\| p(y))\\right. IS=exp(ExKL(p(y∣x)∥p(y))
- 不要被公式吓住,其实很简单,我们先从里面最核心的来看
- p ( y ∣ x ) p(y|x) p(y∣x):其中x表示一个生成的样本,y是预测的标签,简单来说:x 表示模型生成的图片,y 表示这个图片包含的主要物体,条件概率 p ( y ∣ x ) p(y|x) p(y∣x)代表:给出一个图片,预测图片中包含的物体的概率,也就是有很高的把握对其进行正确分类,概率越大,越容易的知道其中包含什么物体。所以从一定程度上, p ( y ∣ x ) p(y|x) p(y∣x)代表了图片的质量,概率越高越好。
- p ( y ) p(y) p(y):y是预测的标签,p(y)表示边际分布,换句话说就是标签的分布情况,我们希望标签分布均匀,而不希望模型生成的都是某一类图片。这时候我们考虑的不是条件概率了,而是边缘概率p(y)。举个不恰当的例子来说,第一个模型生成出的图像的概率这样:p(喜鹊)=0.98,p(麻雀)=0.01,p(鸽子)=0.01,第二个模型生成图像的概率是p(喜鹊)=0.33,p(麻雀)=0.34,p(鸽子)=0.33。那么我们肯定认为第二个模型生成的多样性更好一点。 故 p ( y ) p(y) p(y)可以代表模型生成的多样性,我们希望p(y)分布均匀,最好达到p(y1=p(y2)=…=1/n,
- 熵的概念:指信息熵,个人理解成混乱程度。当概率小的时候,则不确定性大,熵的值就会越大。我们希望 p ( y ∣ x ) p(y|x) p(y∣x)概率越高越好,用熵来说,则其熵值越小越好,熵越小,不确定性越小,就能越好的对生成图像进行分类。我们希望各个 p ( y ) p(y) p(y)概率越小越好,用熵来说,则其熵值越大越好,熵越大,不确定性越大(更加混乱),就能生成更多的类别。
- KL散度:通过3我们希望p(y|x)的熵越小越好,p(y)的熵越大越好,故此时引入KL散度,KL散度也叫相对熵,表示两者的离散状态,简单来说就是两个概率的信息熵的差值: p ( y ) p(y) p(y)的熵减去 p ( y ∣ x ) p(y|x) p(y∣x)的熵。
综上所述,IS分数越大越好。越大表示散度越大,即两者熵的差值越大。
2.2、复现
IS分数通过使用预先训练好的Inception-v3网络,对生成的图像进行分类来计算。通常由大量样本(通常为30k或50k)的十次分割的平均值和方差(正态分布用)计算得出。
代码:https://github.com/hanzhanggit/StackGAN-inception-model
复现:正在进行中…
2.3、排行榜
在CUB数据集上的IS分数排行(部分):
排名 | 模型 | IS分数(↑) |
---|---|---|
1 | ManiGAN | 8.47 |
2 | RiFeGAN | 5.23 |
3 | DF-GAN | 4.86 |
4 | DM-GAN | 4.75 |
5 | MirrorGAN | 4.56 |
6 | AttnGAN | 4.36 |
7 | StackGAN++ | 4.04 |
8 | StackGAN | 3.70 |
2.4、不足
IS分数不能检测过度拟合,也不能测量类内变化。因此,如果一个网络能够记住训练集,或者每次只生成一个完美的图像,那么它将获得非常高的成功率
此外,它没有使用真实世界样本的统计数据,并将其与合成样本的统计数据进行比较.而是使用在ImageNet数据集上预训练的分类器,该数据集主要包含以一个对象为中心的图像。因此,它可能不太适合更复杂的数据集。
三、FID(Fréchet Inception Distance )
3.1、原理
FID分数用于根据预训练网络提取的特征,测量真实图像分布和生成图像分布之间的距离。
F I D = ∥ μ r − μ g ∥ 2 2 + Tr ( Σ r + Σ g − 2 ( Σ r Σ g ) 1 / 2 ) \\mathrmFID=\\left\\|\\boldsymbol\\mu_r-\\boldsymbol\\mu_g\\right\\|_2^2+\\operatornameTr\\left(\\boldsymbol\\Sigma_\\boldsymbolr+\\boldsymbol\\Sigma_g-2\\left(\\boldsymbol\\Sigma_\\boldsymbolr \\boldsymbol\\Sigma_g\\right)^1 / 2\\right) FID=∥∥μr−μg∥∥22+Tr(Σr+Σg−2(ΣrΣg)1/2)
- 物理意义:真实图像在空间中是服从一个分布的(假设为正态分布),而GAN生成的特征也是一个分布,GAN做的事情就是不断训练使这两个分布尽可能的相同。FID就是计算这两个分布直接的距离,使用的距离算法叫做Frechet distance。(比较好的还有Wasserstein-2 distance)
- 假设你有基础的统计学知识,很简单就能明白两个正态分布只要均值和方差相同,则两个分布相同。而我们这里的图像是多维的分布,所以使用协方差矩阵衡量单个分布里两个维度之间的相关性,FID正是用均值和协方差矩阵来计算两个分布之间的距离。
- 上式由两个部分组成,r表示真实图像,g表示生成图像。第一部分中μ 表示分布的均值,第一部分为两个均值 μ 的差的平方。
- 第二部分中,Σ表示协方差,Tr表示迹(矩阵对角线上的元素和),第二部分为协方差矩阵的和减去根号下协方差矩阵的乘积的迹。
FID计算两个分布之间的距离,距离越小代表生成的分布越贴近于真实分布,故FID越小越好。
3.2、复现
与IS类似,计算FID中我们也同样使用inception network网络,由30k或50k的真实和生成的图像样本计算,使用预先训练的Inception-v3模型的最后一个池化层的激活来获得视觉特征。
代码:https://github.com/mseitzer/pytorch-fid
复现:正在进行中…
3.3、排行榜
在COCO数据集上的FID分数排行(部分):
排名 | 模型 | FID分数(↓) |
---|---|---|
1 | Lafite | 8.12 |
2 | OFA | 10.5 |
3 | LightweightManiGAN | 12.39 |
4 | OP-GAN | 24.70 |
5 | ManiGAN | 25.08 |
6 | AttnGAN+VICTR | 29.26 |
7 | DMGAN+VICTR | 32.37 |
8 | StackGAN++ | 81.59 |
3.4、不足
FID的评价指标有很高的偏差,需要相同数量的样本进行公平比较。且其基于特征提取,也就是依赖于某些特征的出现或者不出现,因此无法描述这些特征的空间关系。例如用GAN去生成人脸,如果嘴巴长在眼睛上面,FID可能也会认为它是一张较好地生成结果。
另外其面临着与IS相同的问题,因为它依赖于在ImageNet上预先训练的分类器。不适合在内部差异较大的数据集上使用,无法区分过拟合。
四、R-precision
4.1、原理
R-precision通过对提取的图像和文本特征之间的检索结果进行排序,来衡量文本描述和生成的图像之间的视觉语义相似性。除了生成图像的真实文本描述外,还从数据集中随机抽取其他文本。然后,计算图像特征和每个文本描述的text embedding之间的余弦相似性,并按相似性递减的顺序对文本描述进行排序。如果生成图像的真实文本描述排在前r个内,则相关。
简单举个例子:假设r为3,有一百个文本,其中包括一个真实对应的文本和99个随机取出来的文本,将他们转为text embedding,然后分别与生成的图像计算余弦相似度,然后排序,如果真实文本生成的embedding排在前3位,则认为该图像与文本有相关性。
R-precision表示的是排序后真实文本出现在前r个的概率,越大说明图像与真实文本描述越相关,R-precision越大越好。
4.2、复现
复现:正在进行中
4.3、排行榜
在CUB数据集上的R分数排行(部分)
排名 | 模型 | R-prec (↑) |
---|---|---|
1 | DMGAN | 76.58% |
2 | ControllGAN | 69.33% |
3 | AttnGAN | 67.82% |
4 | MirrorGAN | 57.67% |
R-precision的测量数据较少,有些数据还有争议,待各位补充。
4.4、不足
R-prec在COCO图像上通常会失败,因为在COCO图像中,可能会将高度相似性分配给提到全局背景色的错误标文本描述或出现在中间的对象。
五、VS相似度(Visual-Semantic Similarity)
5.1、原理
VS相似度通过一个经过训练的视觉语义嵌入模型计算图像和文本之间的距离来衡量合成图像和文本之间的对齐。具体来说,学习两个映射函数,分别将图像和文本映射到公共表示空间。然后通过下面的公式,比较其相似性:
V S = f t ( t ) ⋅ f x ( x ) ∥ f t ( t ) ∥ 2 ⋅ ∥ f x ( x ) ∥ 2 \\mathrmVS=\\fracf_t(t) \\cdot f_x(x)\\left\\|f_t(t)\\right\\|_2 \\cdot\\left\\|f_x(x)\\right\\|_2 VS=∥ft(t)∥2⋅∥fx(x)∥2ft(t)⋅fx(x)
- f t f_t ft表示的是文本编码器
- f x f_x fx表示的是图像编码器
- VS计算编码后的文本和图像的余弦值相似度,从而判断文本与图像是否相关。
VS相似度越高越好。VS相似度表示文本与图像的相似程度,越高表示越相似。
5.2、排行榜
在CUB数据集上的VS相似度排行(部分)
排名 | 模型 | VS相似度 (↑) |
---|---|---|
1 | SEGAN | 30.2 |
2 | PPAN | 29.8±14.6 |
3 | StackGAN | 22.8±16.2 |
4 | AttnGAN | 22.5 |
VS相似度的测量数据同样较少,且浮动较大。
5.3、不足
VS相似度最大的缺点就是即使对于真实图像,标准偏差也非常高。因此,它不能提供一种非常精确的评估模型性能的方法。其还没有被社区广泛采用,报告的结果也很少。
六、其他
其他定量指标还有:Captioning Metrics、Semantic Object Accuracy (SOA)、LPIPS等等
七、总结
很明显,t2i的评估仍然是一个非常困难的问题。要评价一个好的T2I模型,应该考虑其是否既能生成高质量的图像,又能生成与输入描述一致的图像。
在图像质量方面需要考虑图像:a)高图像保真度和多样性的模型,b)解纠缠表示,c)明确定义的界限,d)对小变换的不变性,e)与人类判断和排序高度一致,f)低样本和计算复杂度…等等
在图像文本对齐方面,由于许多不同的标题可以正确描述描绘复杂场景的图像,暂时没有很好的定量评价标准,很难定义图像与输入描述对齐的确切含义。一个良好的图像文本对齐评估应包括以下指标:a)所提到的物体是否被正确描绘和易于识别 ,b)生成的物体的数量和位置是否与文本相符,c)生成的图像是否能够被文本正确描述,d)是否对输入描述中的微小变化具有鲁棒性(比如更换颜色)…等等
觉得本文不错的话,还请点赞、评论、关注,这将给我带来很大的动力。
有其他疑问请在评论区留言,你提出的问题将对作者和其他人提供很大帮助。
以上是关于Text to Image 文本生成图像定量评价指标分析笔记 Metric Value总结 ISFIDR-prec等的主要内容,如果未能解决你的问题,请参考以下文章
Text to image论文精读 NAAF:基于负感知注意力的图像-文本匹配框架 Negative-Aware Attention Framework for Image-Text Matching
无法使用 pytesseract.image_to_string 从图像中读取文本
[CVPR2020]论文翻译SwapText: Image Based Texts Transfer in Scenes