有一个隐含的错误?
三个要点
✔️ 在FID的计算中存在一个重大错误。
✔️ FID被发现受到图像格式的影响。
✔️ 建议使用双三次插值的PILs
On Buggy Resizing Libraries and Surprising Subtleties in FID Calculation
written by Gaurav Parmar, Richard Zhang, Jun-Yan Zhu
(Submitted on 22 Apr 2021)
Comments: Published on arxiv.
Subjects: Computer Vision and Pattern Recognition (cs.CV); Graphics (cs.GR); Machine Learning (cs.LG)
code:![]()
![]()
首先
本文是一项仔细评估FID中提到的变异性问题的研究,它被用来评估GAN的准确性。即使你没有使用GANs做研究,你也一定要看一看这篇论文,因为它包含的信息可能会影响到相对较多的人。当然,如果你正在使用GANs进行研究,这是一篇必读的文章
审查
我们将简要说明如何评估GAN的准确性。
首先要考虑的是,GAN的高精确度意味着什么?也就是说,它是否产生了一个美丽的形象?如果你能生成一个人们无法确定的人脸图像呢?这里出现的问题是,我们不能把明显的东西与准确性进行比较。如果我们能进行比较,我们就能评估准确性,但例如,我们如何衡量由GAN生成的人脸图像(假的)的 "真实性"?这就是为什么我们开发了
ID(Inception Score, 2016): 这是一个使用在Imagenet学到的Inception网络的评价指数。简单地说,这就像GAN生成的图像是否容易被在真实图像上训练的Inception网络识别为真实物体。
然而,这种方法有一个很大的缺陷,它没有考虑到真实图像的分布。因此,著名的FID(Fréchet Inception Distance)被提出来与真实图像的分布进行比较。
FID的想法是,我们可以通过测量弗雷谢距离来计算真实图像的分布和生成图像的分布之间的距离,这是FID的一个缺点,如前所述,真实图像的分布没有被考虑在内。如图所示,弗雷谢距离是在真实图像的特征和生成的图像之间测量的。
背景
上述评论中提到的FID实际上有一些问题。
- 在FID计算中,有一个隐含的图像大小调整。(上图中调整为~是相关部分。 )
这必须做成299 x 299,以便纳入Inception网络。而这种大小调整取决于框架,并且总是在计算时进行。基本上,这是不可避免的。 - 没有固定的FID实现,它取决于研究人员。
因此,即使使用相同的FID,由于使用的脚本不同,其数值也有差异。
这些问题是众所周知的。但总的来说,这篇论文充满了图书馆,在计算FID时首先就存在错误。我在这里感到非常惊讶。
图书馆错误检查
这是比较每个库的实际下采样方法的结果(左图)。所做的是将一个128x128的圆形图像降采样为16x16。很明显,除了PIL,降采样失败了,它有一个混叠伪影。右边的结果也清楚地显示了处理后的噪声图像的差异。
在调整大小的过程中,存在这样一个依赖于库的错误,可能会对FID的计算产生一些影响。在这篇文章中,我们将研究这个问题。
通过调整大小的功能对FID的影响
我们想看看调整大小的效果,所以两个输入都是真实的图像。所以分布是一致的。当改变每个库的大小部分时,评估结果(右边的表格)。理想情况下,图像是相同的,所以所有图书馆的FIDs都是匹配的)。
当然,PIL-bicubic对将是-。虽然有一些错误,但除PIL-box外,所有图书馆的FID都是正确的。然而,其他图书馆的结果显然不好。换句话说,由于使用的是哪一个库,精确度是有差别的。另外,右侧的StyleGAN2显示了实际生成的图像。很明显,除PIL外,其他图书馆的数值有很大误差。
图像存储格式对FID的影响结果
当然,图像中的信息量因保存为PNG或JPEG而不同,所以作者认为这里也可能对FID有影响,也考虑了这一点。调整大小是固定在PIL-bic上的,输入的图像被特意压缩成JPEG来考虑。
看一下结果,JPEG压缩的质量设置越差(JPEG-00,00部分的值越低),FID就越差。当然,当我们检查StyleGAN2生成的图像时,结果是一样的,PSNR没有像FID那样有很大的退化。可以说,至少有一个JPEG压缩的效果。我想我在这里想说的不是压缩不好,而是它受到存储格式的影响,所以你基本上必须使存储格式与你使用的数据集相匹配。接下来,我将简要地解释一下。
首先,脸部图像数据集为FFHQ,以PNG格式存储。所以你可以看到,它受到JPEG压缩的影响。另外,生成的图像在生成时是一个连续值(float),但在存储时必须转换为一个离散值(int)。因此,也显示了在Inception中实际输入一个浮点数的结果,但可以看出效果很小。
该研究还考虑了其他LSUN Church。该数据集以JPEG-75格式存储。看一下结果,需要注意的是,虽然由于某些原因,结果在有一些噪音的情况下会更好,而且FID受到存储格式的影响,但趋势与上述情况不同。
然而,基于这些结果,作者建议使用PNG。也许在未来的人工智能的CV研究中可以推荐PNG。另外,虽然图像的离散值有一些影响,但影响不大,与FFHQ类似。
复审
保存格式对FID的影响没有库的影响那么大。因此,我们将保存格式固定为PNG,并在各种库被改变时重新实验了FID。我们用PIL-bicubic、官方的Tensorflow实现和非官方的Pytorch实现来检验结果,这些都可以正确调整大小。括号内的数字代表与最小值的差异。
有趣的是,Pytorch的结果在所有情况下的FID都是最小的。换句话说,用Pytorch计算FID是不公平的,因为它提供了一个更有利的比较。更有趣的是,无论使用哪个实现库,模型之间的差异都是一样的。只要使用相同的库实现,模型本身的准确性就没有问题。
此外,如果我们比较FID-correct(PIL-bicubic)和FID-buggy(=pytorch),我们可以看到在所有训练步骤中,pytorch实现的FID更小。.然而,FID-correct和FID-buggy并不是完全相关的)。
数据集的结果
现在我们将在Imagenet中进行之前的考虑,并在一般数据中查看FID。
在这个结果中,我们没有看到FID的退化程度与FFHQ一样多。有可能是Imagenet的分辨率较低,受调整大小的影响较小。事实上,FFHQ是1024x1024,所以分辨率还不到一半,但Imagenet的分辨率几乎一样。
另外,看下采样程度的影响,很明显,下采样的比例越大,对FID的影响越大。
摘要
在这项研究中,我发现FID受到库的错误调整大小实现的影响。然而,由于它没有受到Imagenet上的实验的极度影响,我认为它最终会受到第一个背景部分中提到的混叠伪影的发生的影响。当然,纠正库实现中的错误是必要的,但我们今后应该注意的是,如果我们不检查在处理时是否会不知不觉地产生一些人工制品,我们的研究就会在不知不觉中继续进展。
此外,还有一些指标,如LPIPS,不调整大小,所以我也想关注这些。这是因为作者Richard Zhang是提出LPIPS的人。
与本文相关的类别