参考笔记:
YOLOv5改进系列(二十五) 知识蒸馏理论与实践_yolov5知识蒸馏-CSDN博客
全网最细图解知识蒸馏(涉及知识点:知识蒸馏实现代码,知识蒸馏训练过程,推理过程,蒸馏温度,蒸馏损失函数)-CSDN博客
学习视频:【精读AI论文】知识蒸馏_哔哩哔哩_bilibili
目录
5.1.1 Hard-targets、Soft-targets
本文主讲的是目标蒸馏-Logits方法
1. 什么是知识蒸馏

知识蒸馏
知识蒸馏就是把一个大的教师模型的知识萃取出来,把它浓缩到一个小的学生模型,可以理解为一个大的教师神经网络把他的知识教给小的学生网络,这里有一个知识的迁移过程,从教师网络迁移到了学生网络身上,教师网络一般比较臃肿,所以教师网络把知识教给学生网络,学生网络是一个比较小的网络,这样就可以用学生网络去做一些轻量化网络做的事情
2.轻量化网络的方式有哪些
(1)压缩已训练好的模型:知识蒸馏、权值量化、权重剪枝、通道剪枝、注意力迁移
(2)直接训练轻量化网络:SqueezeNet、MobileNetv1v2v3、MnasNet、ShuffleNet、EfficientNet、EfficientDet
(3)加速卷积运算:im2col + GEMM、Wiongrad、低秩分解
(4)硬件部署:TensorRT、Jetson、TensorFlow-lite、Openvino、FPGA集成电路
3.为什么要知识蒸馏
深度学习在计算机视觉、语音识别、自然语言处理等内的众多领域中均取得了令人难以置信的性能。但是,大多数模型在计算上过于昂贵,无法在移动端或嵌入式设备上运行。因此需要对模型进行压缩,这样小的模型就适用于部署在终端设备上了

Student Model 部署在终端设备上
(1)提升模型精度
如果对目前的网络模型 A 的精度不是很满意,那么可以先训练一个更高精度的 teacher 模型 B(通常参数量更多,时延更大),然后用这个训练好的 teacher 模型 B 对 student 模型 A 进行知识蒸馏,得到一个更高精度的 A 模型。
(2)降低模型时延,压缩模型参数
如果对目前的网络模型 A 的时延不满意,可以先找到一个时延更低,参数量更小的模型 B ,通常来讲, B 模型精度也会比较低,然后通过训练一个更高精度的 teacher 模型 C 来对这个参数量小的模型 B 进行知识蒸馏,使得该模型 B 的精度接近最原始的模型 A,从而达到降低时延的目的。
(3)标签之间的域迁移
假如使用狗和猫的数据集训练了一个 teacher 模型 A ,使用香蕉和苹果训练了一个 teacher 模型 B ,那么就可以用这两个模型同时蒸馏出一个可以识别狗、猫、香蕉以及苹果的模型,将两个不同域的数据集进行集成和迁移
4.知识蒸馏的理论依据
知识蒸馏使用的是 Teacher—Student 模型,其中 Teacher 是“知识”的输出者, Student 是“知识”的接受者。知识蒸馏的过程分为 3 个阶段:
(1)Teacher 模型训练:简称为 Net-T ,它的特点是模型相对复杂,也可以由多个分别训练的模型集成而成。我们对 Teacher 模型不作任何关于模型架构、参数量、是否集成方面的限制,唯一的要求就是,对于输入 X , 其都能输出


1451

被折叠的 条评论
为什么被折叠?



