文章目录
- 知识蒸馏基础原理精讲
-
- 1. 什么是知识蒸馏?
- 2. 轻量化网络的方式有哪些?
- 3. 为什么要进行知识蒸馏?
- 3.1 提升模型精度
- 3.2 降低模型时延,压缩网络参数
- 3.3 标签之间的域迁移
- 4. 知识蒸馏的理论依据?
- 5. 知识蒸馏分类
- 5.1目标蒸馏-Logits方法
- 5.2 特征蒸馏方法
- 6. 知识蒸馏的过程
- 6.1 升温(T)操作
- 6.2 温度(T)特点
- 7. 蒸馏损失计算过程
- 8. 知识蒸馏在NLP/CV中的应用
- 8.1 目标蒸馏-Logits方法应用
- 8.2 特征蒸馏方法应用
- 9. 知识蒸馏的误区
- 参考文献
- 知识蒸馏理论篇
-
- 1.《Object detection at 200 Frames Per Second》
- 1.1 蒸馏难点
- 1.2 蒸馏损失
- 1.3 实验结果
- 2. 《Learning Efficient Object Detection Models with Knowledge Distillation》
- 2.1 目标检测中的知识蒸馏
- 2.2 蒸馏方法
- 2.3 分类任务
- 2.4 回归任务
- 2.5 特征蒸馏
- 2.6 实验结果
- 2.7 总结
- 知识蒸馏实战篇
-
- 0. 环境准备
- 1. 训练学生网络
- 2. 训练教师网络
- 3. 知识蒸馏训练
- 4. 实验结果
- 5. YOLOv5官方项目修改说明
- 6. 源码
- 7.常见错误
- 8. 参考代码
知识蒸馏基础原理精讲
1. 什么是知识蒸馏?
知识蒸馏就是把一个大的教师模型的知识萃取出来,把他浓缩到一个小的学生模型,可以理解为一个大的教师神经网络把他的知识教给小的学生网络,这里有一个知识的迁移过程,从教师网络迁移到了学生网络身上,教师网络一般是比较臃肿,所以教师网络把知识教给学生网络,学生网络是一个比较小的网络,这样就可以用学生网络去做一些轻量化网络做的事情。
2. 轻量化网络的方式有哪些?
- 压缩已训练好的模型:知识蒸馏、权值量化、权重剪枝、通道剪枝、注意力迁移
- 直接训练轻量化网络:SqueezeNet、MobileNetv1v2v3、MnasNet、SHhffleNet、Xception、EfficientNet、EfficieentDet
- 加速卷积运算:im2col+GEMM、Wiongrad、低秩分解
- 硬件部署:TensorRT、Jetson、TensorFlow-Slim、openvino、FPGA集成电路