13 生成对抗网络中的模型评估指标
系列进度
生成对抗网络高级 · 第 13 / 21 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
GAN 进阶内容要围绕稳定性、条件控制、架构变化和评估方法建立判断框架。阅读时可以按「常见的评估指标 -> Inception Score -> Fréchet Inception Distance -> 视觉评估」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「常见的评估指标」,再查「Inception Score」。
在上一篇文章《超分辨率生成对抗网络(SRGAN)之SRGAN的评估指标》中,我们探讨了 SRGAN 模型中评估图像超分辨率质量的几种常用指标。这一篇,我们将重点关注生成对抗网络(GANs)中的模型评估方法及其常见指标。这些指标对于比较不同 GAN 模型的生成性能、选择最佳模型、以及优化模型参数至关重要。
常见的评估指标
1. Inception Score (IS)
评估 GAN 模型时,先看 FID、IS、样本多样性、失败样例、训练稳定性和业务可用性。
Inception Score 是一种评估 GAN 生成图片质量的常用指标。它旨在通过评估生成图像的多样性和图像的识别度来反映生成模型的表现。
Inception Score 的定义为:
其中:
- 是生成模型。
- 是给定图像 时的条件概率分布,表示图像的类别。
- 是生成图像的边际概率分布。
在实际操作中,我们可以使用预训练的 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 进行评估的步骤如下:
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 Score 和 Fréchet Inception Distance,并提供了计算这些指标的示例代码。了解和运用这些指标能够有效帮助我们比较和选择不同的 GAN 模型,为下一步的模型选择与调优提供依据。
《生成对抗网络中的模型评估指标》读到最后,可以把图里的流程当成检查表:问题是否明确,操作是否落地,判断标准是否能复用。
下一篇文章将详细探讨生成对抗网络中的模型评估,包括模型选择与调优的相关策略,以进一步提升生成模型的性能和效果。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
生成对抗网络中的模型评估指标适合谁读?
这是 生成对抗网络高级 系列第 13 / 21 篇,适合正在学习生成对抗网络高级,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇生成对抗网络高级教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读