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

Knowledge Distillation

知识蒸馏通过训练小型学生模型模仿大型教师模型的输出或特征,以低得多的计算量保留其大部分准确率。

知识蒸馏是一种模型压缩技术,通过训练较小的“学生”神经网络来复现更大、更准确的“教师”模型的行为。学生除了使用或代替真实标签外,还会从教师的输出概率或内部特征中学习;这些信息更丰富的目标,使学生的准确率高于仅使用标签训练的相同架构。最终得到的模型足够快速且小巧,可以部署在手机、嵌入式板卡及其他边缘 AI硬件上,同时保留教师模型的大部分性能。Buciluǎ、Caruana 和 Niculescu-Mizil 于 2006 年证明,集成模型的知识可以压缩到单个模型中;Hinton、Vinyals 和 Dean于 2015 年将这一方法命名为知识蒸馏,并提出了大多数方法至今仍在使用的温度软化目标。

知识蒸馏的工作原理#

标签只能说明图像中有一只狼。经过训练的教师模型给出的 softmax 输出包含更多信息:图像有点像哈士奇,有一点像猫,但完全不像汽车。这些错误类别的相对概率通常称为暗知识,并以软目标的形式传递给学生。在 softmax 之前,先将 logits 除以大于 1 的温度 T,可以使概率分布更平缓,让较小的概率也具有足够权重,便于模型学习。蒸馏损失是教师与学生软化后分布之间的 Kullback-Leibler 散度,并乘以 T²,使其梯度大小与普通标签损失的梯度大致相当:

import torch
import torch.nn.functional as F

# Logits for one wolf photo over the classes [wolf, husky, cat, car]
teacher_logits = torch.tensor([[6.0, 4.0, 1.0, -2.0]])
student_logits = torch.tensor([[4.0, 1.0, 1.5, 0.0]])

# Dividing logits by a temperature T > 1 softens the teacher's distribution
for T in (1.0, 4.0):
    probs = F.softmax(teacher_logits / T, dim=1)
    print(f"T={T}: teacher probabilities {[round(p, 3) for p in probs[0].tolist()]}")

# Distillation loss: KL divergence between the softened distributions, scaled by T^2
T = 4.0
soft_targets = F.softmax(teacher_logits / T, dim=1)
student_log_probs = F.log_softmax(student_logits / T, dim=1)
loss = F.kl_div(student_log_probs, soft_targets, reduction="batchmean") * T**2
print(f"Distillation loss at T={T}: {loss.item():.3f}")

T=1 时,教师给狼类别的概率为 0.875,而给猫的概率只有 0.006,给汽车的概率为 0.0。T=4 时,同一组 logits 会变成 0.493、0.299、0.141 和 0.067,这向学生表明,狼比猫更像哈士奇,而猫比汽车更像哈士奇。学生会尽量降低这一损失,此处损失为 1.244;通常还会将它与基于真实标签的常规任务损失加权求和。教师模型在整个过程中保持冻结状态,只执行前向传播:

蒸馏类型#

  • 基于响应的蒸馏:学生匹配教师的最终输出,如上文的软目标方法;除了 logits 外,学生不需要教师提供任何其他信息。DistilBERT在预训练时将这种方法与语言建模损失和隐藏状态损失结合,使 BERT 的尺寸缩小 40%、速度提高 60%,同时保留 97% 的语言理解能力。
  • 基于特征的蒸馏:学生匹配教师的中间特征图,并通过一个较小的学习型投影器来弥合通道数量上的差异。FitNets提出了这些“提示”,并训练出一个参数量约比教师少 10.4 倍、但在 CIFAR-10 上表现优于教师的学生模型。
  • 基于序列的蒸馏:语言模型教师生成文本,学生则使用这些输出进行微调。DeepSeek 使用 DeepSeek-R1 筛选的 800,000 个样本,对基于 Qwen2.5 和 Llama 3 的 R1 蒸馏模型进行了微调。

基于特征的蒸馏适用于检测器,因为检测器的输出是数千个边界框和分数,而不是一个类别分布。训练时收到 distill_model 教师模型后,Ultralytics YOLO 会使用这种蒸馏方式:一个冻结的大型 YOLO26 模型会提供三个颈部特征图,这些特征图会输入其检测头;学生通过 1×1 卷积投影器匹配这些特征图,并使用按教师置信度加权的 L2 损失,损失缩放系数为 dis(默认为 6.0)。在 COCO val2017 上,蒸馏后的 YOLO26 nano 模型达到 41.5 mAP50-95,而同一模型在没有教师的情况下训练时为 40.9,且两者的推理成本相同。

from ultralytics import YOLO

# 学生:将要部署的紧凑型 YOLO26 nano 模型
model = YOLO("yolo26n.pt")

# 教师:用于指导训练、之后会被舍弃的较大 YOLO26 检查点
results = model.train(data="coco8.yaml", epochs=5, distill_model="yolo26s.pt")
  • 迁移学习:将模型自身的权重作为新任务的起点。蒸馏则会训练另一个通常更小的架构,使其在相同任务上模仿某个模型。
  • 模型剪枝:从训练好的网络中移除权重、通道或层。剪枝后的模型通常会使用原模型进行蒸馏微调,以恢复准确率。
  • 模型量化:以较低精度(如 INT8)存储权重和激活值。量化会缩小相同的架构,而蒸馏则会选择更小的架构;两者可以结合使用。
  • 模型集成:在推理时对多个模型的结果取平均。将集成模型蒸馏为一个学生模型,正是这项技术最初的动机。
  • 数据集蒸馏:尽管名称相似,它压缩的是数据集而非模型。Wang 等人将 MNIST 的 60,000 张训练图像压缩为 10 张合成图像(每个类别一张);使用固定初始化的网络经过几步梯度更新后,这些图像即可使模型接近原始准确率。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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