郭震 AI公众号:郭震AI

13 生成对抗网络中的模型评估指标

发布日期:

最近更新:

分类: GANs进阶

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点5 个
图文要点6 张
正文规模1.6k 字
生成对抗网络中的模型评估指标结构图查看大图
生成对抗网络中的模型评估指标结构图

GAN 进阶内容要围绕稳定性、条件控制、架构变化和评估方法建立判断框架。阅读时可以按「常见的评估指标 -> Inception Score -> Fréchet Inception Distance -> 视觉评估」建立结构,再回到正文里的代码、案例或指标做验证。

生成对抗网络中的模型评估指标核对图查看大图
生成对抗网络中的模型评估指标核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「常见的评估指标」,再查「Inception Score」。

在上一篇文章《超分辨率生成对抗网络(SRGAN)之SRGAN的评估指标》中,我们探讨了 SRGAN 模型中评估图像超分辨率质量的几种常用指标。这一篇,我们将重点关注生成对抗网络(GANs)中的模型评估方法及其常见指标。这些指标对于比较不同 GAN 模型的生成性能、选择最佳模型、以及优化模型参数至关重要。

常见的评估指标

1. Inception Score (IS)

GAN评估指标判断卡查看大图
GAN评估指标判断卡

评估 GAN 模型时,先看 FID、IS、样本多样性、失败样例、训练稳定性和业务可用性。

Inception Score 是一种评估 GAN 生成图片质量的常用指标。它旨在通过评估生成图像的多样性和图像的识别度来反映生成模型的表现。

Inception Score 的定义为:

IS=exp(ExG[DKL(p(yx)p(y))])IS = \exp\left(\mathbb{E}_{\mathbf{x} \sim G} \left[ D_{KL}(p(y|\mathbf{x}) || p(y)) \right]\right)

其中:

  • GG 是生成模型。
  • p(yx)p(y|\mathbf{x}) 是给定图像 x\mathbf{x} 时的条件概率分布,表示图像的类别。
  • p(y)p(y) 是生成图像的边际概率分布。

在实际操作中,我们可以使用预训练的 Inception 网络来计算这个分数。假设我们已经有了 GAN 生成的图像,我们可以按照以下步骤计算 IS:

from keras.applications.inception_v3 import InceptionV3
from keras.preprocessing.image import img_to_array, load_img
import numpy as np
from scipy.special import kl_div

def calculate_inception_score(images):
    model = InceptionV3(weights='imagenet')
    # 预处理图像
    images = [img_to_array(load_img(image, target_size=(299, 299))) for image in images]
    images = np.array(images)
    predictions = model.predict(images)
    # 计算 KL 散度
    kl_divs = [kl_div(pred, np.mean(predictions, axis=0)) for pred in predictions]
    inception_score = np.exp(np.mean(kl_divs))
    return inception_score

2. Fréchet Inception Distance (FID)

Fréchet Inception Distance 是另一种重要的评估指标,用于衡量生成图像与真实图像之间的距离。FID 通过在特征空间中比较生成图像和真实图像的分布来评估模型性能。

FID 的公式为:

FID=μrμg2+Tr(Σr+Σg2(ΣrΣg)1/2)FID = ||\mu_r - \mu_g||^2 + \text{Tr}(\Sigma_r + \Sigma_g - 2(\Sigma_r \Sigma_g)^{1/2})

在上述公式中:

  • μr\mu_rμg\mu_g 是真实图像和生成图像在特征空间中的均值。
  • Σr\Sigma_rΣg\Sigma_g 是真实图像和生成图像的协方差矩阵。

使用 FID 进行评估的步骤如下:

from keras.applications.inception_v3 import InceptionV3
from keras.preprocessing.image import img_to_array, load_img
from scipy.linalg import sqrtm

def calculate_fid(real_images, generated_images):
    model = InceptionV3(weights='imagenet', include_top=False, pooling='avg')
    
    # 特征提取
    real_images = [img_to_array(load_img(image, target_size=(299, 299))) for image in real_images]
    generated_images = [img_to_array(load_img(image, target_size=(299, 299))) for image in generated_images]
    
    real_features = model.predict(np.array(real_images))
    generated_features = model.predict(np.array(generated_images))
    
    mu_r, sigma_r = real_features.mean(axis=0), np.cov(real_features, rowvar=False)
    mu_g, sigma_g = generated_features.mean(axis=0), np.cov(generated_features, rowvar=False)
    
    fid = np.sum((mu_r - mu_g)**2) + np.trace(sigma_r + sigma_g - 2 * sqrtm(np.dot(sigma_r, sigma_g)))
    return fid

3. 视觉评估

除了定量指标之外,视觉评估 也是 GAN 生成模型的重要评估方式。人类的主观评估可以显著补充定量指标的局限性。通过展示生成的图像,并要求评估者对其质量和真实性进行评分,可以获取更直观的反馈。

生成对抗网络中的模型评估指标应用复盘卡查看大图
生成对抗网络中的模型评估指标应用复盘卡

复习《生成对抗网络中的模型评估指标》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

生成对抗网络中的模型评估指标应用检查卡查看大图
生成对抗网络中的模型评估指标应用检查卡

练习《生成对抗网络中的模型评估指标》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

小结

在本篇中,我们讨论了两种常见的生成对抗网络模型评估指标:Inception ScoreFréchet Inception Distance,并提供了计算这些指标的示例代码。了解和运用这些指标能够有效帮助我们比较和选择不同的 GAN 模型,为下一步的模型选择与调优提供依据。

GAN 进阶阅读地图卡查看大图
GAN 进阶阅读地图卡

《生成对抗网络中的模型评估指标》读到最后,可以把图里的流程当成检查表:问题是否明确,操作是否落地,判断标准是否能复用。

下一篇文章将详细探讨生成对抗网络中的模型评估,包括模型选择与调优的相关策略,以进一步提升生成模型的性能和效果。

相关教程

相关入口

AI 教程总索引

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

相关内容

相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...