🧠 图解记忆: 生图质量不能靠单一分数:离线指标筛查语义与分布问题,视觉 Judge 检查细节,线上行为验证真实用户价值。
💡 答案要点
评估维度:
生图质量评估
├── 语义一致性:生成的图和文字描述匹配吗?
├── 视觉质量:图像清晰,无明显瑕疵?
├── 多样性:多次生成的结果差异够大?
└── 风格一致性:批量生成时风格统一?定量指标:
| 指标 | 含义 | 计算方式 | 工具 |
|---|---|---|---|
| FID(Fréchet Inception Distance) | 生成图与真实图分布距离,越小越好 | 特征分布KL散度 | pytorch-fid |
| CLIP Score | 图文语义相似度(0-1,越高越好) | cos(CLIP图像特征, CLIP文本特征) | openai/clip |
| IS(Inception Score) | 图像质量+多样性综合 | Inception网络类别分布 | 较少用 |
| SSIM | 结构相似度(参考图对比) | 亮度+对比度+结构 | skimage |
工程实现:自动化评估管道
展开 Python 代码示例(51 行)
python
import torch
import clip
from PIL import Image
class ImageQualityEvaluator:
def __init__(self):
self.clip_model, self.preprocess = clip.load("ViT-B/32")
def clip_score(self, image_path: str, prompt: str) -> float:
"""图文语义相似度 CLIP Score"""
image = self.preprocess(Image.open(image_path)).unsqueeze(0)
text = clip.tokenize([prompt])
with torch.no_grad():
image_feat = self.clip_model.encode_image(image)
text_feat = self.clip_model.encode_text(text)
# 余弦相似度
score = torch.cosine_similarity(image_feat, text_feat).item()
return score # 一般 0.25+ 认为语义匹配
async def llm_judge(self, image_path: str, prompt: str) -> dict:
"""LLM 作为裁判进行多维评估"""
response = await vision_llm.complete(
image=image_path,
text=f"""
评估这张图片与描述的匹配程度。
描述:{prompt}
从以下维度打分(0-10):
1. 语义匹配度:图像内容与描述是否一致
2. 视觉质量:清晰度、色彩、构图
3. 细节准确性:描述中的关键细节是否都体现
输出JSON: {{"semantic": 0-10, "quality": 0-10, "detail": 0-10, "overall": 0-10}}
"""
)
return json.loads(response)
def batch_evaluate(self, generations: list[dict]) -> dict:
"""批量评估,输出汇总报告"""
scores = []
for gen in generations:
clip_s = self.clip_score(gen["image"], gen["prompt"])
scores.append(clip_s)
return {
"avg_clip_score": sum(scores) / len(scores),
"min_clip_score": min(scores),
"pass_rate": sum(1 for s in scores if s > 0.25) / len(scores)
}实际评估体系(三层):
线下评估:FID + CLIP Score(自动化,CI/CD集成)
上线灰度:A/B 测试,真实用户满意度
线上监控:用户点赞/重新生成率(代理指标)面试话术:
"生图评估应组合语义一致性、视觉质量、文本可读性、安全性和线上行为。CLIP Score 与 FID 只能衡量部分代理指标,阈值必须用本业务数据校准;视觉模型 Judge 也会有位置、风格和模型同源偏差,因此需要盲测人工抽检与失败案例集。"
应用
| 应用 | 技术选型 |
|---|---|
| 图文检索 | CLIP + 向量数据库 |
| 图像字幕 | BLIP / BLIP-2 |
| 视觉问答 | BLIP-2 + LLM |
| 多模态 RAG | CLIP检索 + GPT-4V生成 |
| LLaVA | CLIP+MLP+LLaMA,两阶段训练(对齐+指令) |
