网站建设策划书5000字,工作室设计图,做旅行网站好,岳阳市公共资源交易网知识蒸馏#xff1a;获取学生网络和教师网络指定蒸馏位点的输出特征并计算蒸馏 loss 的过程
知乎-mmrazor-模型蒸馏 知识蒸馏算法往往分为 reponse-based基于响应、feature-based基于特征 和 relation-based基于关系三类。 也可为 data-free KD、online KD、self KD#xff…知识蒸馏获取学生网络和教师网络指定蒸馏位点的输出特征并计算蒸馏 loss 的过程
知乎-mmrazor-模型蒸馏 知识蒸馏算法往往分为 reponse-based基于响应、feature-based基于特征 和 relation-based基于关系三类。 也可为 data-free KD、online KD、self KD可视为一种特殊的 online KD和比较经典的 offline KD
feature-based 方法以教师模型特征提取器产生的中间层特征为学习对象 而ChannelWiseDivergencecwd算法使用的是预测之前的logistic特征图在channel维度上取最大值即为最终的预测结果就是feature-based的蒸馏方法
mmrazor可以使用不同架构的student和teacher模型
可以使用connector对不同维度进行对齐以计算语义分割的蒸馏loss对于 feature-base 的方法当学生和教师网络输出特征维度不同时往往会对学生网络对应特征进行后处理以保证蒸馏 loss 正确计算connector实现
mmseg的模型在deconde_head.conv_seg后拿到的特征图为logist的特征图其内的元素都为小数而非预测的0/1
cwd算法是一种什么样的蒸馏算法呢是data-free的吗还是online的呢还是offline的呢 适用于mmseg的cwd模型蒸馏配置文件default_hook中的Student_CheckpointHook是自定义的hook继承自mmegin中的CheekpointHook cwd算法首先使用softmax归一化方法将每个通道的feature map转换成一个分布然后最小化两个网络对应通道的Kullback Leibler (KL)散度。通过这样做我们的方法着重于模拟网络间通道的软分布。特别的是KL的差异使学习能够更多地关注通道图中最突出的区域大概对应于语义分割最有用的信号
现象 由于model capacity gap的存在student往往弱于teacher模型但也并不绝对如果model本身的gap不是很离谱student还是有超越teacher的可能的因为student模型一般可以学习teacher模型蒸馏位点的特征和ground truth多种知识学习效率会更高如果本身student没有太大的问题还是有机会学的更好的。
_base_ [mmseg::_base_/datasets/pascal_voc12.py,mmseg::_base_/schedules/schedule_160k.py,mmseg::_base_/default_runtime.py
]# 模型的optim_wrapper学习率和学习策略将来自于继承的schedule_160k如果不改的话
# wandb的可视化设置在mmseg的default_runtime也继承自mmseg# schedule_160k.py中的自动保存权重的部分
default_hooks dict(_delete_True,timerdict(typeIterTimerHook),loggerdict(typeLoggerHook, interval100, log_metric_by_epochFalse),param_schedulerdict(typeParamSchedulerHook),# 使用了自定义的Student_CheckpointHookcheckpointdict(typeStudent_CheckpointHook, by_epochFalse, interval-1, max_keep_ckpts2, save_best[mDice, mIoU]),# checkpoint中interval-1则不会保存least.pthsampler_seeddict(typeDistSamplerSeedHook),visualizationdict(typeSegVisualizationHook))teacher_ckpt /root/autodl-tmp/all_workdir/mmseg_work_dir/baseline-convnext-tiny-upernet-rotate/best_mDice_iter_6800.pth # noqa: E501
teacher_cfg_path mmseg::all_changed/baseline-convnext-tiny_upernet-rotate.py # noqa: E501student_cfg_path mmseg::all_changed/pspnet_r18-d8_b16-160k_voc-material-512x512.py # noqa: E501
model dict(_scope_mmrazor,typeSingleTeacherDistill,architecturedict(cfg_pathstudent_cfg_path, pretrainedFalse),teacherdict(cfg_pathteacher_cfg_path, pretrainedFalse),teacher_ckptteacher_ckpt,distillerdict(typeConfigurableDistiller,distill_lossesdict(loss_cwddict(typeChannelWiseDivergence, tau1, loss_weight5)),student_recordersdict(logitsdict(typeModuleOutputs, sourcedecode_head.conv_seg)),teacher_recordersdict(logitsdict(typeModuleOutputs, sourcedecode_head.conv_seg)),connectorsdict(loss_conv_studict(typeConvModuleConncetor, in_channel2, out_channel2, kernel_size1, stride1, padding0,norm_cfgdict(typeBN)),loss_conv_teadict(typeConvModuleConncetor, in_channel2, out_channel2, kernel_size3, stride2, padding1, padding_modecircular,norm_cfgdict(typeBN))),loss_forward_mappingsdict(loss_cwddict(preds_Sdict(from_studentTrue, recorderlogits, connectorloss_conv_stu), # 含义从student_recorders(from_studentTrue)中读取名为logits的数据# 加上connnecor字段后表示从student_recorders中读取名为logists的数据而后将数据通过名为loss_conv_stu的连接器preds_Tdict(from_studentFalse, recorderlogits, connectorloss_conv_tea)))))# 从teacher_recorders中读取名为logits的数据而后将数据通过名为loss_conv_tea的连接器# 而无论是loss_cwd、logits、loss_conv_stu、loss_conv_tea都是自定的名称find_unused_parameters Truetrain_cfg dict(typeIterBasedTrainLoop, max_iters160000, val_interval200)
val_cfg dict(_delete_True, typemmrazor.SingleTeacherDistillValLoop)train_dataloader dict(batch_size16) # 更改batch_size否则会继承到pascal_voc12.py中的设置
# 这个16会作为teacher模型的推理batch和student模型的训练batchwork_dir /root/autodl-tmp/all_workdir/mmrazor_wokdir/distill/convnext-tiny-upernet_to_pspnet-r18模型蒸馏一 基于响应的KDDKD FitNets 基于响应的KD以teacher模型的分类预测结果为目标知识具体指的是分类器最后一个全连接层的输出成为logits。与最终的输出相比logits没有经过softmax进行归一化非目标类对应的输出值尚未被抑制。 教师模型和学生模型之间的损失差异一般用KD散度一般会用temperaturetau大于1的参数对logits进行软化以减小目标类和非目标类的预测值差异。 logits具备的含义为模型判断当前样本为各类别的信心为多少 1 logits提供的软标签信息比one-hot的真实标签有着更高的熵值从而提供了更多的信息量和数据之间更小梯度差异 2 软标签有着与标签平滑类似的效果提高了模型的泛化能力 3除了gt标签外还学习了软标签使得模型学到了更多的知识更倾向于学到不同的知识优化方向更稳定 基于特征的KDABATofdFactor Transfer 蒸馏位点位于模型中途获得的特征 通常teacher模型的通道大于学生通道二者无法完全对齐一般在学生的特征图后面接卷积将两者在维度和通道上对齐从而实现特征点的一一对应 1特征维度对齐特征加权mmrazor的connector模块的抽象 2知识定位设计规则选出更为重要的教师特征 基于关系的KDFSP, RKD也使用特征但计算不是特征点的一对一差异而是特征关系的差异 1样本间关系蒸馏在分类和分割中应用广泛因为构建高质量的关系矩阵需要大量样本
总结在语义分割中的cwd算法可以看作是基于响应的KD也可以看作是基于特征的KD因为在传统的cwd算法中使用的是在通过softmax之前的位置作为蒸馏位点输出对应的特征图去计算损失。