Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Saliency Maps

显著性图是用于评估每个像素对模型预测影响程度的热力图。涵盖梯度、CAM 和扰动方法、这些方法的局限及用途。

显著性图是一种热力图,用于评估输入图像中的每个像素对神经网络输出的影响程度,通常关注某个预测类别的分数。它是可解释 AI(XAI)在计算机视觉中最常用的工具之一:如果热力图在物体上高亮,说明预测有依据;如果在水印、背景或图像边框上高亮,则暴露了模型使用的捷径。显著性图将输出与输入像素关联起来,因此不同于网络的内部特征图,也不同于视觉 Transformer的注意力权重;后者展示的是某一层从何处收集信息。感知研究也用这个术语指代相关概念,即人眼在场景中的注视位置图,例如视觉注意力的Itti-Koch 模型。

梯度显著性如何工作#

Simonyan、Vedaldi 和 Zisserman(2013 年)提出的梯度显著性图使用反向传播计算某个类别分数相对于输入图像的梯度,而不是相对于模型权重的梯度。像素处梯度的幅值表示该处的微小变化会对分数产生多大影响;取三个颜色通道中最大的绝对值,就能为每个像素得到一个数值。对于 ImageNet分类器,在 PyTorch中只需一次前向传播和一次反向传播:

import urllib.request

from PIL import Image
from torchvision.models import ResNet50_Weights, resnet50
from torchvision.utils import save_image

# Load an ImageNet classifier and track gradients on the input pixels
weights = ResNet50_Weights.DEFAULT
model = resnet50(weights=weights).eval()
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg"))
x = weights.transforms()(image).unsqueeze(0).requires_grad_()

# Backpropagate the top class score to the pixels
scores = model(x)
top = scores.argmax().item()
scores[0, top].backward()

# Saliency: largest absolute gradient across the color channels, scaled for display
saliency = x.grad.abs().amax(dim=1)
save_image((saliency / saliency.quantile(0.99)).clamp(max=1), "saliency.png")
print(f"Explained class: {weights.meta['categories'][top]}")

它会打印 Explained class: minibus,并保存分类器看到的中心裁剪区域所对应的颗粒感 224 × 224 显著性图:原始梯度在相邻像素间会有噪声,后续方法则通过求平均或处理特征图来减少噪声。

显著性方法#

  • SmoothGrad:对添加噪声的多份图像副本分别计算梯度图并求平均,可消除大部分斑点噪声。
  • 积分梯度:沿着从基线(例如黑色图像)到输入图像的路径累积梯度,使像素分数之和等于两者类别分数的差值。
  • Grad-CAM:用最后一个卷积层的平均梯度为其特征图加权,再对结果进行上采样,即可得到较粗略但与类别相关的区域。LayerCAM(2021 年)会对每个位置分别加权,因此更早、分辨率更高的层也能生成可用的显著性图。
  • 遮挡法及其他扰动方法:遮住图像的一些局部区域并测量分数下降幅度,无需计算梯度,但每个局部区域都需要执行一次前向传播。

Ultralytics YOLO 可为目标检测及其他任务计算 LayerCAM 图:在预测模式下使用 visualize=True 时,它会根据每个高置信度预测的类别分数正梯度,为进入检测头的特征图中每个位置加权,并为每张图像保存一张合并后的热力图。

from ultralytics import YOLO

# 保存 LayerCAM 热力图,展示 YOLO26 检测结果背后的依据
model = YOLO("yolo26n.pt")
results = model("https://ultralytics.com/images/bus.jpg", visualize=True)

它会将 bus_cam.jpg 写入运行的保存目录,展示 NMS 移除重复框之前,超过置信度阈值的最多 16 个最强原始 YOLO26预测结果;添加 classes=[0] 后,则只会生成行人的热力图。

显著性图的局限#

显著性图展示输出对哪些位置敏感,却不说明模型如何推理;解释模型内部机制是机制可解释性的目标。Adebayo 及其同事在 2018 年进行的健全性检查发现,一些常用方法(例如引导式反向传播)在模型权重随机化后仍会生成几乎相同的图,因此这些图更多反映图像边缘,而非训练后的模型。即使预测结果不变,微小的输入扰动也可能导致显著性图发生剧烈变化。

实际应用#

  • 发现捷径:热力图显示,在 PASCAL VOC 数据集上训练的分类器部分依靠许多马匹照片中出现的版权标记来识别马匹。这种“聪明汉斯”行为无法从准确率中看出来。
  • 医学影像:胸部 X 光分类器的开发者会检查模型依据是否位于肺部,而不是扫描仪文字或胸腔引流管等治疗设备上;研究发现,气胸分类器可能会依赖这些因素。
  • 图像裁剪:Twitter 会根据人类注意力显著性模型预测的观众首要注视点来裁剪图像预览;该公司研究人员在 2021 年进行的审查发现,这些裁剪会系统性地偏向某些人群。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来