GET3D 论文笔记(二)损失函数与指标

Metrics

为了衡量unconditional generation模型的能力,需要将生成集的形状 S g S_g Sg与参考集形状 S r S_r Sr进行对比,并衡量模型在几个指标上的表现。

几何指标

参考:

  • https://blog.csdn.net/weixin_43882112/article/details/121073634

一级指标

一级指标

COV

COV是一种评估3D形状合成质量的度量方法,它可以用来评估生成的形状集合是否覆盖了参考形状集合。具体来说,COV度量方法是指参考集中被至少匹配到一个生成集中的形状的比例。如果参考集中的每个形状都能够在生成集中找到至少一个匹配的形状,则COV值为1,否则,说明参考集中有的形状找不到匹配,则COV值小于1。COV度量方法可以与其他度量方法结合使用,例如Chamfer Distance (CD)和Light Field Distance (LFD),以全面评估3D形状合成的质量。

Q:如何计算COV?
A:COV的公式计算如下:

COV ⁡ ( S g , S r ) = ∣ { argmin ⁡ X ∈ S r D ( X , Y ) ∣ Y ∈ S g } ∣ ∣ S r ∣ , \operatorname{COV}\left(S_{g}, S_{r}\right)=\frac{\left|\left\{\operatorname{argmin}_{X \in S_{r}} D(X, Y) \mid Y \in S_{g}\right\}\right|}{\left|S_{r}\right|}, COV(Sg,Sr)=Sr {argminXSrD(X,Y)YSg} ,

在计算COV时,需要判断生成集合中的每个形状是否与参考集合中的至少一个形状匹配。具体来说,可以使用以下的方法进行形状匹配:

  1. 对于每个生成形状,计算它与参考集合中每个形状的距离。
  2. 如果该生成形状与参考集合中某个形状的距离小于预先定义的阈值,则将其视为匹配的形状。
  3. 重复上述过程,直到所有生成形状都被匹配或与参考集合中所有形状的距离均大于预先定义的阈值为止。

根据预定义的阈值,可以灵活地控制形状匹配的严格程度。一般来说,较小的阈值可以提高匹配的准确性,但可能会导致较低的COV值。相反,较大的阈值可以提高COV值,但可能会降低匹配的准确性。

Q:COV指标一定要认为指定一个阈值吗?
A:在计算COV指标时,必须指定一个阈值来判断形状匹配。阈值的大小将直接影响匹配的准确性和COV的值。不同的阈值将产生不同的匹配结果和COV值,因此在计算COV指标时必须选择一个适当的阈值。一般来说,可以根据具体的应用场景和需求来选择合适的阈值。如果要求匹配的准确性较高,则可以选择较小的阈值;如果要求匹配的鲁棒性较高,则可以选择较大的阈值。

MMD

MMD(Minimum Matching Distance,最小匹配距离)是一种用于比较两个形状集合相似性的度量方法。具体来说,MMD度量方法是指找到一种最优的形状匹配方式,使得两个形状集合之间的距离最小。

在计算MMD时,需要首先将参考集合中的每个形状与生成集合中所有形状进行匹配,计算它们之间的距离。然后,对于每个参考形状,选择与其距离最小的生成形状作为其匹配形状,并计算它们之间的距离。最终,MMD度量方法的值是所有生成形状和它们匹配形状之间距离的平均值。

MMD度量方法可以与其他度量方法结合使用,例如Chamfer Distance (CD)和Light Field Distance (LFD),以全面评估3D形状合成的质量。

通过计算MMD,可以得出生成形状与参考形状之间的距离,从而评估它们之间的相似性。MMD度量方法可以帮助开发人员在不同的3D形状合成算法之间进行比较,并帮助优化算法以获得更好的合成质量。

Q:MMD的公式计算?
A:MMD的公式如下:

MMD ⁡ ( S g , S r ) = 1 ∣ S r ∣ ∑ X ∈ S r min ⁡ Y ∈ S g D ( X , Y ) \operatorname{MMD}\left(S_{g}, S_{r}\right)=\frac{1}{\left|S_{r}\right|} \sum_{X \in S_{r}} \min _{Y \in S_{g}} D(X, Y) MMD(Sg,Sr)=Sr1XSrYSgminD(X,Y)

S g S_g Sg是生成集合, S r S_r Sr是参考集合。对于每个参考集合中的形状 X X X,公式中的 min ⁡ Y ∈ S g D ( X , Y ) \min_{Y \in S_g} D(X,Y) minYSgD(X,Y)表示将 X X X与生成集合 S g S_g Sg中所有形状 Y Y Y进行匹配,并选择匹配距离最小的 Y Y Y,即 X X X S g S_g Sg中的最相似形状。 D ( X , Y ) D(X,Y) D(X,Y)表示 X X X Y Y Y之间的距离,可以是 d C D d_{CD} dCD或者 d L F D d_{LFD} dLFD

在计算MMD时,首先需要对参考集合中的每个形状 X X X找到与其匹配的最相似形状 Y Y Y,然后计算所有匹配形状对 ( X , Y ) (X,Y) (X,Y)之间的距离,并取平均值作为MMD的值。

二级指标

CD

X ∈ S g X \in S_g XSg表示一个生成的形状, Y ∈ S r Y \in S_r YSr表示参考集的一个形状。为了计算 d C D d_{CD} dCD,本文首先从形状X和Y各自 采集N=2048个点 X p ∈ R N × 3 X_{p} \in \mathbb{R}^{N \times 3} XpRN×3 Y p ∈ R N × 3 Y_{p} \in \mathbb{R}^{N \times 3} YpRN×3

然后计算:

d C D ( X p , Y p ) = ∑ x ∈ X p min ⁡ y ∈ Y p ∥ x − y ∥ 2 2 + ∑ y ∈ Y p min ⁡ x ∈ X p ∥ x − y ∥ 2 2 . d_{\mathrm{CD}}\left(X_{p}, Y_{p}\right)=\sum_{\mathbf{x} \in X_{p}} \min _{\mathbf{y} \in Y_{p}}\|\mathbf{x}-\mathbf{y}\|_{2}^{2}+\sum_{\mathbf{y} \in Y_{p}} \min _{\mathbf{x} \in X_{p}}\|\mathbf{x}-\mathbf{y}\|_{2}^{2} . dCD(Xp,Yp)=xXpyYpminxy22+yYpxXpminxy22.

这样,通过将模型转化为点云,就能比较两个模型之间的距离了。

LFD

LFD的完整定义出自论文: Distance measurement based on light field geometry and ray
tracing. Optics Express

Light Field Distance(LFD)是一种用于计算3D形状之间距离的度量方法,它可以捕捉3D形状的几何和纹理信息,与Chamfer Distance相比更加复杂。

Q:LFD的计算公式与计算过程
A:LFD的计算公式如下:

d L F D ( X p , Y p ) = 1 ∣ V ∣ ∑ v ∈ V ( 1 − exp ⁡ ( − 1 ∣ I v ∣ ∑ i ∈ I v d ( X i , Y i ) ) ) d_{\mathrm{LFD}}\left(X_{p}, Y_{p}\right)=\frac{1}{\left|V\right|} \sum_{v \in V}\left(1-\exp \left(-\frac{1}{\left|I_{v}\right|} \sum_{i \in I_{v}} d\left(X_{i}, Y_{i}\right)\right)\right) dLFD(Xp,Yp)=V1vV(1exp(Iv1iIvd(Xi,Yi)))

其中, X p X_p Xp Y p Y_p Yp分别是两个形状的点云, V V V是用于渲染形状的视角集合, I v I_v Iv表示在第 v v v个视角下,用于渲染的图像的像素点集合, d ( X i , Y i ) d(X_i,Y_i) d(Xi,Yi)是在形状点 X i X_i Xi Y i Y_i Yi之间计算的欧几里得距离。

LFD的计算过程如下:

  1. 对于给定的形状 X p X_p Xp Y p Y_p Yp,将它们分别从 V V V中的每个视角渲染成图像。
  2. 对于每个视角 v ∈ V v\in V vV,将图像 I v I_v Iv编码为特征向量。具体来说,LFD使用Zernike moments和Fourier descriptors编码图像,这些特征向量可以捕获图像的纹理和几何信息。
  3. 对于每个形状点 X i X_i Xi Y i Y_i Yi,计算它们在所有视角下的特征向量之间的距离 d ( X i , Y i ) d(X_i,Y_i) d(Xi,Yi)
  4. 对于每个视角 v ∈ V v\in V vV,计算渲染出的图像中所有像素点之间的距离 d ( I v , i , I v , j ) d(I_{v,i},I_{v,j}) d(Iv,i,Iv,j),其中 i , j ∈ I v i,j\in I_v i,jIv
  5. 对于每个视角 v ∈ V v\in V vV,将所有像素点之间的距离累加起来,并计算该视角下的距离平均值 1 ∣ I v ∣ ∑ i ∈ I v d ( X i , Y i ) \frac{1}{|I_v|}\sum_{i\in I_v}d(X_i,Y_i) Iv1iIvd(Xi,Yi)
  6. 对于所有视角,将它们下的平均距离进行平均,并使用指数函数进行变换得到LFD的值。

LFD度量方法的值越小,表示两个形状之间的距离越小,两者之间的相似度越高。LFD能够比较准确地捕捉形状的几何和纹理信息,因此在3D形状合成、形状检索和形状比对等领域得到了广泛的应用。

所以,LFD可看作有两步,对于两个待对比的形状,有多个视角去观察:

  1. 对于每个视角,计算编码后各个像素点的编码向量的距离,取它们的平均值
  2. 然后,计算不同视角经过指数处理后的平均和。

Q: 1-exp的作用是什么
A在LFD的计算公式中,使用1-exp是为了将视角下的平均距离进行缩放,以便在计算LFD时,每个视角的权重不同,且随着距离的增加而逐渐减小。这个指数变换是根据视角下的距离平均值计算的,因此距离越大,这个值就越接近0。使用1-exp的形式,可以将距离平均值从[0,inf]映射到[0,1]的范围内,使得LFD的值在[0,1]之间,这样方便对不同数据集和实验结果进行比较和分析。

同时,使用指数变换可以让LFD对于不同的距离变化更加敏感,以便更好地区分两个形状之间的差异。例如,当距离变化较小时,1-exp(x)的值会变化很快,这可以帮助LFD更加精确地区分不同的形状。

纹理指标

参考

为了评估生成的纹理的质量,我们采用了常用于评估2D图像合成质量的Fréchet Inception Distance (FID)指标。具体而言,针对每个类别,我们从预定义的相机分布中随机采样摄像机位置,并为生成的形状渲染50k个视角(每个形状一个视角),并且使用了测试集中的所有图像。然后,我们使用预先训练好的Inception v3模型对这些图像进行编码,其中我们将最后一个pooling层的输出作为最终编码。

公式计算如下:

FID ⁡ ( S g , S r ) = ∥ μ g − μ r ∥ 2 2 + Tr ⁡ [ Σ g + Σ r − 2 ( Σ g Σ r ) 1 / 2 ] \operatorname{FID}\left(S_{g}, S_{r}\right)=\left\|\boldsymbol{\mu}_{g}-\boldsymbol{\mu}_{r}\right\|_{2}^{2}+\operatorname{Tr}\left[\boldsymbol{\Sigma}_{g}+\boldsymbol{\Sigma}_{r}-2\left(\boldsymbol{\Sigma}_{g} \boldsymbol{\Sigma}_{r}\right)^{1 / 2}\right] FID(Sg,Sr)= μgμr 22+Tr[Σg+Σr2(ΣgΣr)1/2]

其中, S g S_g Sg表示生成图像集合, S r S_r Sr表示真实图像集合, μ g \boldsymbol{\mu}_g μg μ r \boldsymbol{\mu}_r μr分别是生成图像编码和真实图像编码的均值向量, Σ g \boldsymbol{\Sigma}_g Σg Σ r \boldsymbol{\Sigma}_r Σr分别是它们的协方差矩阵。Tr是迹操作。

具体来说,FID的计算过程如下:

  1. 使用预训练的Inception网络对 S g S_g Sg S r S_r Sr中的图像进行编码,得到它们的特征向量。
  2. 计算 μ g \boldsymbol{\mu}_g μg Σ g \boldsymbol{\Sigma}_g Σg,即生成图像编码的均值向量和协方差矩阵。
  3. 计算 μ r \boldsymbol{\mu}_r μr Σ r \boldsymbol{\Sigma}_r Σr,即真实图像编码的均值向量和协方差矩阵。
  4. 计算 ∣ μ g − μ r ∣ 2 2 \left|\boldsymbol{\mu}{g}-\boldsymbol{\mu}{r}\right|_{2}^{2} μgμr22,即两个均值向量之间的欧几里得距离的平方。
  5. 计算 Σ g + Σ r − 2 ( Σ g Σ r ) 1 / 2 \boldsymbol{\Sigma}{g}+\boldsymbol{\Sigma}{r}-2\left(\boldsymbol{\Sigma}{g} \boldsymbol{\Sigma}{r}\right)^{1 / 2} Σg+Σr2(ΣgΣr)1/2,即两个协方差矩阵之间的距离。
  6. 计算矩阵距离的迹(trace)操作,得到最终的FID值。

Q:什么是协方差矩阵?
A:如参考所说。

Q:如何理解第五步?
A:在计算协方差矩阵的平方根

这个公式可以被解释为计算生成样本和真实样本的统计分布之间的距离。首先, Σ g \boldsymbol{\Sigma}_g Σg Σ r \boldsymbol{\Sigma}_r Σr是生成图像的编码和真实图像的编码的协方差矩阵。这些矩阵的和代表了这两个分布的总体方差。然后, ( Σ g Σ r ) 1 / 2 (\boldsymbol{\Sigma}_g \boldsymbol{\Sigma}_r)^{1/2} (ΣgΣr)1/2 表示这两个协方差矩阵的乘积的平方根,这被称为它们的乘积协方差矩阵。

Σ g + Σ r \boldsymbol{\Sigma}_g+\boldsymbol{\Sigma}_r Σg+Σr 减去 2 ( Σ g Σ r ) 1 / 2 2(\boldsymbol{\Sigma}_g\boldsymbol{\Sigma}_r)^{1/2} 2(ΣgΣr)1/2 可以理解为计算两个分布之间的差异,同时考虑它们的方差和协方差。它的计算结果表示两个分布的距离,这个距离越小,说明它们的分布越相似,生成的图像就越好。Trace操作是将这个矩阵的所有特征值相加,这是一种衡量矩阵变化的方式,可以用来衡量两个协方差矩阵的距离。因此,使用这个公式可以比较准确地衡量生成图像和真实图像之间的差距。

Q:协方差矩阵时由两个变量集合计算得出的吗?那么 Σ g \boldsymbol{\Sigma}_g Σg Σ r \boldsymbol{\Sigma}_r Σr是如何计算的?
A:是的,协方差矩阵是由两个变量集合计算得出的。在FID中, Σ g \boldsymbol{\Sigma}_g Σg Σ r \boldsymbol{\Sigma}_r Σr分别是生成图像编码和真实图像编码的协方差矩阵。

对于每个编码矢量,可以将其视为多个变量的集合,因为编码矢量的每个维度都可以看作是一个变量。因此,可以将生成图像编码和真实图像编码看作是由多个变量组成的集合。对于每个集合,可以计算它的协方差矩阵,以反映变量之间的关系。因此, Σ g \boldsymbol{\Sigma}_g Σg Σ r \boldsymbol{\Sigma}_r Σr是分别从生成图像编码和真实图像编码的集合计算得出的协方差矩阵。

Q: v i \mathbf{v}_i vi 的协方差矩阵是由该集合内的向量互相运算得出的吗?如果每个向量的维度是 R d R^d Rd,那么该协方差矩阵的维度是多少?
A: 协方差矩阵 Σ g \boldsymbol{\Sigma}_g Σg的维度是 d × d d\times d d×d

Q:如何理解FID
A:可以使用 Frechet 距离(又称 Wasserstein-2 距离)计算两个分布之间的距离。(两个分布的Frechet距离)

两个高斯分布(合成图像和真实图像)的差异由 Frechet 距离(又称 Wasserstein-2 距离)测量。
——「GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium」(https://arxiv.org/abs/1706.08500), 2017.

使用来自 Inception v3 模型的激活函数输出来归纳每个图像,得分即为「Frechet Inception Distance」。

从Frechet Distance到FID

参考

单变量时:

在数学上,Frechet Distance用于计算两个“多元”正态分布之间的距离。对于“单变量”正态分布,Frechet距离为

对于单变量正态分布,Frechet距离等同于Wasserstein距离,也称为Earth Mover’s Distance (EMD),其公式为:

d ( X , Y ) = ( μ X − μ Y ) 2 + ( σ X − σ Y ) 2 \mathrm{d}(\mathrm{X}, \mathrm{Y})=\left(\mu_{X}-\mu_{Y}\right)^{2}+\left(\sigma_{X}-\sigma_{Y}\right)^{2} d(X,Y)=(μXμY)2+(σXσY)2
我们可以理解为,均值之差的平方,加上std variance之差的平方。

那么拓展到FID时,左半部分显然是均值之差的平方,如何理解右半部分?
FID ⁡ ( S g , S r ) = ∥ μ g − μ r ∥ 2 2 + Tr ⁡ [ Σ g + Σ r − 2 ( Σ g Σ r ) 1 / 2 ] \operatorname{FID}\left(S_{g}, S_{r}\right)=\left\|\boldsymbol{\mu}_{g}-\boldsymbol{\mu}_{r}\right\|_{2}^{2}+\operatorname{Tr}\left[\boldsymbol{\Sigma}_{g}+\boldsymbol{\Sigma}_{r}-2\left(\boldsymbol{\Sigma}_{g} \boldsymbol{\Sigma}_{r}\right)^{1 / 2}\right] FID(Sg,Sr)= μgμr 22+Tr[Σg+Σr2(ΣgΣr)1/2]

我们看右半部分,像不像 ( a 1 / 2 − b 1 / 2 ) 2 (a^{1/2} -b^{1/2})^2 (a1/2b1/2)2的形式?而 a 1 / 2 a^{1/2} a1/2在对角线上的每个元素,有点像是标准差。

  1. 首先,已知协方差矩阵的对角线位置上计算的是方差(加了根号后,你可以假装它变成标准差)。
  2. 于是,Tr内的公式计算结果,每个对角线上的元素是标准差的平方
  3. 而Tr是对角线上的元素之和,所以迹的每个元素都是两个标准差的差的平方。

而第3点的形式与FD的形式相似,但不完全相同,因为矩阵的平方根不等于矩阵内每个元素的平方根。如何去进一步理解?暂时先放着。

FID-3D and FID-Ori

FID-3D和FID-Ori是FID指标的两个变体,用于评估生成图像与真实图像之间的差异,它们的区别在于生成2D图像的方式有所不同。它们的计算步骤如下:

对于FID-Ori,使用三维感知图像合成方法的神经体渲染直接得到二维图像。
对于FID-3D,对于那些没有输出纹理网格的基线方法,使用Marching Cubes提取其底层神经场的几何信息。然后,找到每个像素光线与生成网格相交的交点,并使用交点的三维位置从网络中查询RGB值。这样,渲染的图像更忠实地表示底层的3D形状,并考虑了几何和纹理的质量。注意,对于直接生成纹理3D网格的方法,FID-3D和FID-Ori是相同的,如GET3D。
在FID-3D中,由于使用了三维的几何信息,所以能够更全面地衡量生成3D形状的质量,而在FID-Ori中,只考虑了二维图像的质量,更偏向于那些直接生成有效的二维图像的基线方法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值