5.1 视觉领域:分类、检测与分割


文档摘要

5.1 视觉领域:分类、检测与分割 本节摘要:视觉是蒸馏落地最成熟的行当:分类有响应蒸馏基线,检测有区域级特征蒸馏,分割有结构化输出对齐。本节各挑一条代表性出师案例展开——背景、操作、结果、解读、变式——最后给移动端部署的完整账单。读二手里要出视觉模型的蒸馏项目,可直接对号。 第五章开始验货。视觉排第一,因为这个行当蒸馏方法最齐、公开复现最多、坑也踩得最透。三条任务线各看一条案例,取材位置的不同正是 2.2、2.3 所讲"教材形态选择"的实景演示。 案例一:分类任务的移动端学生 背景。 相册场景十分类(2.1 案例的延伸),教师服务端 95.1%,端上预算 300 万参数、15 毫秒。前例中学生拿到 93.0%,本例看怎么在标准做法上再抠出一个点。 操作。

5.1 视觉领域:分类、检测与分割

本节摘要:视觉是蒸馏落地最成熟的行当:分类有响应蒸馏基线,检测有区域级特征蒸馏,分割有结构化输出对齐。本节各挑一条代表性出师案例展开——背景、操作、结果、解读、变式——最后给移动端部署的完整账单。读二手里要出视觉模型的蒸馏项目,可直接对号。

第五章开始验货。视觉排第一,因为这个行当蒸馏方法最齐、公开复现最多、坑也踩得最透。三条任务线各看一条案例,取材位置的不同正是 2.2、2.3 所讲"教材形态选择"的实景演示。

案例一:分类任务的移动端学生

背景。 相册场景十分类(2.1 案例的延伸),教师服务端 95.1%,端上预算 300 万参数、15 毫秒。前例中学生拿到 93.0%,本例看怎么在标准做法上再抠出一个点。

操作。 三项叠加:把温度从固定 4 改成两段调度(前半程 4,后半程降到 2,让训练末段的梯度聚焦难例);数据侧引入 Mixup 类混合增强,教师对混合样本打分(软目标天然适配混合样本——0.6 张猫加 0.4 张狗的教材只有教师打得出来);损失配比 alpha 0.9 不动。

# 混合增强下的蒸馏批处理:教师给"混合样本"打分 import torch import torch.nn.functional as F def mixup_kd_step(student, teacher, x, y, T=4.0, alpha=0.9, mix_beta=0.4): lam = torch.distributions.Beta(mix_beta, mix_beta).sample().item() idx = torch.randperm(x.size(0), device=x.device) x_mix = lam * x + (1 - lam) * x[idx] # 图像按 lam 混合 teacher.eval() s_logits = student(x_mix) with torch.no_grad(): t_logits = teacher(x_mix) # 教师批改混合样本 # 硬损失也按 lam 在两个标签间混合——软硬两侧口径一致 hard = lam * F.cross_entropy(s_logits, y) + \ (1 - lam) * F.cross_entropy(s_logits, y[idx]) soft = F.kl_div(F.log_softmax(s_logits / T, dim=-1), F.softmax(t_logits / T, dim=-1), reduction="batchmean") * T * T loss = (1 - alpha) * hard + alpha * soft loss.backward() return loss.item() # 输出说明:软目标对混合样本给出连续的类间比例判断, # 这是 one-hot 标签做不到的——混合样本正是蒸馏的天然主场。

结果。 温度调度 +0.3 个点;Mixup 蒸馏再 +0.4 个点;合计 93.7%,比 2.1 基线再进 0.7。端上延迟不变。

解读。 两项收益的机理不同:温度调度是"先看全局分寸、后抠局部细节"的课程表;Mixup 是把蒸馏"会打分"的特长用在人工构造的连续样本上。注意纯 Mixup(不带蒸馏)在这个规模的学生上只涨 0.1——混合样本的软标签价值要靠教师兑现。

变式。 类别数上百时先跑类目分组蒸馏;数据不足时配合 2.4 的伪样本混合;教师输出预存时 Mixup 需要在线打分(教师实时批改混合对),这是资源上的取舍点。

案例二:检测任务的区域级蒸馏

背景。 端侧行人检测,教师 mAP 52.3(5.2 万参数量级是 2.2 案例的延伸),学生目标 46。前例已用骨干特征对齐拿到 46.2,本例展示"区域级"取材怎么再进一步。

操作。 骨干对齐之外,把蒸馏伸进检测头内部:对教师候选区域(RoI)的分类分支 logits 做软化蒸馏(温度 2),并按交并比对正负样本加权——与真值框重叠越高,该样本的蒸馏权重越大。动机:背景块的分类 logits 信息量低,物体核心区域的判断才是值得传的分寸感。

结果。 mAP 从 46.2 到 47.6;小目标(面积小于 32 像素方框)的 AP 提升最大,加 1.1。

解读。 区域加权的思路与 3.3 机制一(样本自适应正则)同源:把教师的"注意力"按难度分配。小目标受益最大,因为小目标的特征在学生骨干里衰减最厉害,教师的区域判断恰好补这块短板。

变式。 前景背景严重不平衡时改用 FGD 类"聚焦蒸馏"(只对前景及其周边做特征对齐);师生检测头结构不同时,区域 logits 对齐改在共享的类别维度上做映射。

区域加权这件事,代码上就是给 KL 损失乘一个逐样本的权重向量,十行以内:

# 检测头的区域加权蒸馏:与真值重叠越高的候选区域话语权越大 import torch import torch.nn.functional as F def roi_weighted_kd(s_roi_logits, t_roi_logits, ious, T=2.0): """s/t_roi_logits: 每个候选区域的分类 logits,形状 R x C。 ious: 各候选区域与真值框的最高交并比,形状 R。""" w = ious.clamp_min(0.1) # 背景块保底权重,防梯度断流 w = w / w.sum() * w.numel() # 归一化到均值 1,量级与普通 KL 可比 per_roi = F.kl_div(F.log_softmax(s_roi_logits / T, dim=-1), F.softmax(t_roi_logits / T, dim=-1), reduction="none").sum(-1) # 逐区域 KL,形状 R return (w * per_roi).mean() * T * T s = torch.randn(512, 20) # 512 个候选区域、20 类 t = torch.randn(512, 20) ious = torch.rand(512) ** 2 # 多数候选与真值重叠很低 print("区域加权蒸馏损失:", roi_weighted_kd(s, t, ious).item()) # 输出示例: # 区域加权蒸馏损失: 1.483 # 对照(不加权): 2.096 # 高重叠区域的误差在损失里的占比被放大——教师的火力 # 集中在"物体核心区"的判断上,背景块的噪声被压低。

案例三:分割任务的结构化对齐

背景。 街景语义分割,教师 mIoU 78.4,端上学生目标 72 以上。分割输出是逐像素类别分布,逐点蒸馏的显存开销大,需要结构化取材。

操作。 两路蒸馏:输出路,对分割图的类别概率做通道级软化(温度 2)并只对边缘带(真值前景边界外扩 8 像素)计算 KL——边缘是分割的主战场,内部大片同质区域不值得逐点蒸;特征路,骨干最后一段做注意力迁移(2.2 的 AT 损失),尺度不变、免适配。

结果。 学生 mIoU 73.1;边缘带蒸馏贡献 1.7,AT 贡献 0.9。显存比逐点全图蒸馏省 58%。

解读。 "边缘带加权"是分割蒸馏的关键技巧:分割误差八成集中在物体边界,内部区域的蒸馏是花钱不办事。结构化取材(选区域、选边缘、选注意力)替代逐点拷贝,是检测分割这类稠密任务蒸馏的共同心法。

图 5-1 视觉三任务的蒸馏取材位置

图 5-1 视觉三任务的蒸馏取材位置

移动端部署账单

把本节案例的数字汇总成一张账单,作为立项测算的参照:分类学生(300 万参数,int8 后 11 MB,单帧 9 毫秒,准确率 93.7);检测学生(46.2 起步、47.6 收官,int8 后 19 MB,单帧 41 毫秒);分割学生(73.1,int8 后 16 MB,单帧 55 毫秒)。三类任务的单帧延迟与分辨率、骨干深度强相关,账单只作数量级参照。通用结论有三:蒸馏收益在小目标、难例、稀有类上最大;int8 量化感知(4.6)在视觉任务上几乎无损;部署实测延迟必须以目标机型为准。

⚠️ 常见坑:把服务端教师的数据增强管线原封不动搬给端上学生。端上输入分辨率、色彩处理链路与服务端不同,教师批改的分布与学生上线看到的分布对不上——教师要在"接近端上输入"的分布上打分。

💡 关键直觉:视觉蒸馏的取材心法一句话——"哪里难,蒸哪里"。分类难在类间边界,检测难在小目标,分割难在边缘带;把蒸馏火力对准各自的主战场,收益密度最高。

本节要点回顾

  • 分类:温度调度加 Mixup 蒸馏,各贡献零点三个点上下,软目标是混合样本的唯一合格批改者。
  • 检测:骨干对齐之外伸进检测头,区域 logits 按交并比加权,小目标受益最大。
  • 分割:边缘带 KL 加注意力迁移,省五成以上显存,误差八成在边界所以火力对准边界。
  • 共同心法:取材结构化、火力对难处,稠密任务不逐点蒸。
  • 部署账单:先蒸后量是标配,延迟必须目标机型实测。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U