当前位置: 首页 > article >正文

知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析

项目地址:https://github.com/Syencil/mobile-yolov5-pruning-distillation
项目时间:2022年
mobile-yolov5-pruning-distillation是一个以yolov5改进为主的开源项目,主要包含3中改进方向:更改backbone、模型剪枝、知识蒸馏。这里主要研究其知识蒸馏部分,根据其分享的实验数据,获取对目标检测中模型剪枝的认知。希望阅读本博文的读者,能给项目一个satr。
在这里插入图片描述
该项目中关于知识蒸馏首先介绍了基本分类情况,关于实验主要是分享了三种蒸馏策略下的模型效果。

蒸馏是希望将T模型学习到的知识迁移到S模型中。通常蒸馏方式大体可以分为:1)Response-based,2)Feature-based,3)Relation-based。

按照策略则可以分为1)online distillation,2)offline distillation 和3)self distillation

按照蒸馏算法可以分为1)adversarial distillation,2)multi-teacher distillation, 3)cross-modal distillation,4)graph-based distillation,5)attention-based distillation,6)data-free distillation,7)quatized Distillation,8)lifelong distillation, 9)nas distillation。

mobile-yolov5-pruning-distillation项目将采用多种不同的蒸馏方式尝试对mobilev2-yolo5s提点,每一种Strategy都对应有相关论文。并不是每一种方式都有效,可能和组合方式以及参数调节都有关。

在这里插入图片描述

1、Strategy 1 Output-based Distillation

以mobilev2-yolo5s作为S-model,希望能将T-model在coco和voc上学习到的知识蒸馏到mobilev2-yolo5s中。以Object detection at 200 Frames Per Second为基础方法配置蒸馏损失函数,抑制背景框带来的类别不均衡问题。 用L2 loss作为蒸馏基础函数,损失中的蒸馏dist平衡系数选择为1。

选取基于darknet为backbone的yolo5s作为T模型。这样能尽可能的保证结构上的一致。而yolo5s的参数量和计算量差不多正好是mobilev2-yolo5s的两倍, capacity gap并不是很明显。蒸馏后提了接近3个点。

这里所表明2点信息:
1、参考Object detection at 200 Frames Per Second抑制背景框蒸馏,可以提示3个点的map 2、在教师模型与学生模型间gap过大,会影响蒸馏效果,反而不如gap低的低精度教师模型效果好

在这里插入图片描述

2、Strategy 2 Feature-based+Output-based Distillation

Strategy 1仅仅只是蒸馏最后一个输出层,属于distillation中Response-Based。考虑到特征提取也是可以进行蒸馏的,提升backbone在特征提取上的表征能力。 对于T和S特征图之间维度存在不匹配的情况,我们首先应用一个Converter网络将通道数转换成相同的 这个思想在FitNet上就提出过,实际操作中更类似于如下
在这里插入图片描述
实验效果一 尝试将特征图和输出层一起作为蒸馏指导。对于T和S中间特征图输出维度不匹配的问题,采用在S网络输出接一个Converter,将其升维到T网络匹配。 Converter由conv+bn+relu6组成,T网络输出单独接一个relu6,保证激活函数相同。 output层参数为1.0,feature参数为0.5。mAP0.663甚至比baseline都要低。 蒸馏效果如下所示
在这里插入图片描述
feature distillation居然让模型掉点了,怀疑是feature权重太大。loss与map日志如下:
1、loss降到0.1667,mAP可以提升到0.68,还是低于baseline。
2、继续下降到0.05,mAP可以回到baseline的水平,
3、在训练末期mAP还在上升,loss还在下降。最后尝试训练100个epoch,mAP才回到74。

实际上还尝试过各种变形和各种参数,但是感觉效果仍然不好。这表明进行feature distillation对于目标检测而言很大概率是一个负优化

3、Strategy 3 Teach-Assistant Distillation

在Strategy 1.2的实验中可以看出,T越强力蒸馏的S提升并不一定更多,反而更低。类似的实验在TADK也有。 用yolov5l作为T网络提升不高的原因可能有2点。1)T更复杂,S没有足够的capacity来模仿T,2)T的精度更高,模型确定性更强,输出logits(soft label)变得less soft。 但是我想让更大的yolov5l作为指导网络,那么可以利用yolov5s作为助教网络辅助蒸馏。

将yolov5l作为T网络,yolov5s作为TA网络(这里T和TA之间其实差距也是非常大的,7倍差距),mobilev2-yolo5s作为S网络。

  • 首先对TA蒸馏,提升yolov5s在voc上的mAP。
  • 其次利用TA对S蒸馏。

不过从TA的精度来看,由于T和TA存在显著的能力gap,蒸馏出的TA并没有精度上,故没有进行第二步蒸馏。
在这里插入图片描述

5、同类型蒸馏模型精度

基于项目作者分享的信息,可以发现所得到的模型效果还是较为可观的。
在这里插入图片描述

执行不同蒸馏策略的代码如下
在这里插入图片描述


http://www.kler.cn/a/415269.html

相关文章:

  • 蜜罐攻击网络渗透工具推荐
  • shell(9)
  • 机器学习5-多元线性回归
  • 微信小程序数据请求教程:GET与POST请求详解
  • vs 项目属性表
  • 尚硅谷学习笔记——Java设计模式(一)设计模式七大原则
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 开源项目:纯Python构建的中后台管理系统
  • 解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法
  • 【sqlcipher】pc端sqflite使用过程中遇到的问题
  • 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言
  • 【青牛科技】电动工具电流反馈型相位控制电路D2010
  • 传输控制协议(TCP)
  • 计算机网络:IP协议详细讲解
  • Hot100 - 搜索二维矩阵II
  • Unity的GPU Instancing技术
  • 智能驾驶,车联网,传感器,车载电子集中展示|2025北京自动驾驶展
  • 欧科云链研究院:比特币还能“燃”多久?
  • 【vue-router】Vue-router如何实现路由懒加载
  • Spring Boot 3.x 多环境配置详解
  • vscode、android studio、vim 国产AI编程插件Fitten Code
  • nVisual可视化资源管理工具
  • com.alibaba.fastjson.JSONException: not close json text, token : error
  • HTTPS 的应用数据是如何保证完整性的?
  • 玩转 uni-app 静态资源 static 目录的条件编译
  • 【Linux】线程同步与互斥 (生产者消费者模型)