知识蒸馏中有哪些经验| 目标检测 |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、同类型蒸馏模型精度
基于项目作者分享的信息,可以发现所得到的模型效果还是较为可观的。

执行不同蒸馏策略的代码如下

相关文章:
知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析
项目地址:https://github.com/Syencil/mobile-yolov5-pruning-distillation 项目时间:2022年 mobile-yolov5-pruning-distillation是一个以yolov5改进为主的开源项目,主要包含3中改进方向:更改backbone、模型剪枝、知识蒸馏。这里…...
Oracle 19c RAC单节点停机维护硬件
背景 RAC 环境下一台主机硬件光纤卡不定时重启,造成链路会间断几秒,期间数据库会话响应时间随之变长,该光纤卡在硬件厂商的建议下,决定停机更换备件,为保证生产影响最小,决定停掉该节点,另外节…...
Linux系统 进程
Linux系统 进程 进程私有地址空间用户模式和内核模式上下文切换 进程控制系统调用错误处理进程控制函数获取进程 ID创建和终止进程回收子进程让进程休眠加载并运行程序 进程 异常是允许操作系统内核提供进程(process)概念的基本构造块,进程是…...
机载视频流回传+编解码方案
无线网络,低带宽场景。不能直接转发ROS raw image(10MB/s),而要压缩(编码)后再传输。可以用rtsp的udp传输或者直接传输话题,压缩方法有theora(ROS image_transport默认支持ÿ…...
Ubuntu 20.04 Server版连接Wifi
前言 有时候没有网线口插网线或者摆放电脑位置不够时,需要用Wifi联网。以下记录Wifi联网过程。 环境:Ubuntu 20.04 Server版,无UI界面 以下操作均为root用户,如果是普通用户,请切换到root用户,或者在需要权…...
【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置
一、配置 Unity 相关 1.下载 UnityHub 下载地址:https://unity.com/download 安装打开后如图所示: 2.下载 VRChat 官方推荐版本的 Unity 跳转界面(VRChat 官方推荐页面):https://creators.vrchat.com/sdk/upgrade/…...
人工智能的微积分基础
目录 编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…...
Android 基础类(01)- Thread类 - readyToRun和threadLoop
一、前言: 在阅读AOSP代码过程中,我们经常会看到Thread子类重写两个方法:readyToRun和threadLoop,不清楚的同学,可能在这儿连调用逻辑都搞不清楚了,因为找不到谁调用了它。我这儿先不去深究Thread内部逻辑…...
C++设计模式之构造器
动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何…...
红日靶场-5
环境搭建 这个靶场相对于前几个靶场来说较为简单,只有两台靶机,其中一台主机是win7,作为我们的DMZ区域的入口机,另外一台是windows2008,作为我们的域控主机,所以我们只需要给我们的win7配置两张网卡&#…...
做异端中的异端 -- Emacs裸奔之路3: 上古神键Hyper
谈一下快捷捷冲突的问题。 Emacs几乎穷尽所有组合键 我用下面命令,在Fundamental模式下,枚举所有绑定。 (defun keymap-lookup-test-fn(); printable keys(setq printable-chars (number-sequence 33 126))(setq i 0)(while (< i (length printable…...
Java多线程介绍及使用指南
“多线程”:并发 要介绍线程,首先要区分开程序、进程和线程这三者的区别。 程序:具有一定功能的代码的集合,但是是静态的,没有启动运行 进程:启动运行的程序【资源的分配单位】 线程:进程中的…...
HarmonyOS 5.0应用开发——列表(List)
【高心星出品】 文章目录 列表(List)列表介绍列表布局设置主轴方向设置交叉轴方向 列表填充分组列表填充 滚动条位置设置滚动位置滚到监听 列表项侧滑 列表(List) 列表介绍 列表作为一种容器,会自动按其滚动方向排列…...
自动化电气行业的优势和劣势是什么
优势 市场需求广泛: 自动化电气技术广泛应用于电力系统、制造业、交通、农业等多个领域,随着智能化、数字化趋势的加强,其市场需求持续增长。在智能制造、智能电网等领域,自动化电气技术更是发挥着关键作用,推动了行业…...
第 42 章 - Go语言 设计模式
在Go语言中,设计模式是一种被广泛接受的解决常见问题的最佳实践。这些模式可以分为三类:创建型模式、结构型模式和行为型模式。下面我将结合案例以及源代码对这三种类型的设计模式进行详细讲解。 创建型模式 创建型模式主要关注对象的创建过程…...
【机器学习】---大语言模型
引言:开启大语言模型的奇幻旅程 近年来,人工智能(AI)领域正在经历一场前所未有的技术革命,而其中最耀眼的明星莫过于大语言模型(Large Language Models, LLMs)。这些模型,犹如现代科…...
挑战用React封装100个组件【002】
项目地址 https://github.com/hismeyy/react-component-100 组件描述 组件适用于需要展示图文信息的场景,比如产品介绍、用户卡片或任何带有标题、描述和可选图片的内容展示 样式展示 代码展示 InfoCard.tsx import ./InfoCard.cssinterface InfoCardProps {t…...
MarkDown-插入图片-图片url地址的生成获取方法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、url地址是什么二、如何获取图片的url地址1.了解图床2.使用图床获取图片URL地址2.1进入网站后,点击右下角“Select Image.”按钮,即可…...
插值、拟合和回归分析的相关知识
目录 0 序言 1 分段线性插值 2 多项式插值 3 样条插值 4 最小二乘拟合 5 多元线性回归 0 序言 在生产实践和科学研究中,常常有这些问题: 插值问题:由实验或测量得到变量间的一批离散样点,要求得到变量之间的函数关系或得到样点之外的…...
【小白学机器学习42】进行多次抽样,样本的分布参数和总体的分布参数的关系
目录 1 进行多次抽样,样本的分布参数和总体的分布参数的关系 2 样本容量越大,多次抽样的样本的分布参数和总体的分布参数的关系 3 随着样本容量增大,多次抽样均值的 平均值,方差的变化 4 随着样本容量增大,多次抽…...
3000+戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案
3000戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为戴森球计划中复杂的工厂布局而头疼吗&#…...
智慧农业棉花棉铃病害成熟度检测数据集VOC+YOLO格式969张6类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):969标注数量(xml文件个数):969标注数量(txt文件个数):969标注类别数&…...
IntelliJ IDEA 2023.3 集成 Maven 3.8.3 保姆级避坑指南:从环境变量到项目构建全流程
IntelliJ IDEA 2023.3 与 Maven 3.8.3 深度集成实战:从零构建企业级Java项目 作为一名长期使用IntelliJ IDEA进行Java开发的工程师,我深刻体会到Maven与IDE无缝集成的重要性。每次新版本发布,那些看似简单的配置背后往往隐藏着令人头疼的兼容…...
贝叶斯压缩技术优化空间回归模型计算效率
1. 空间回归模型与贝叶斯压缩概述空间回归模型是分析地理空间数据的核心工具,它通过空间位置信息建模变量间的非平稳关系。传统方法如高斯过程回归虽然灵活,但在处理大规模数据时面临O(N)的计算复杂度瓶颈。贝叶斯数据压缩技术通过随机线性变换实现维度约…...
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI免费完整操作教程
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI免费完整操作教程 这篇教程是针对金融学论文降AI教程写的——问得最多的操作细节,都在这里。 主工具:嘎嘎降AI(www.aigcleaner.com),4.8元一篇ÿ…...
Unity UGUI循环列表优化指南:SuperScrollView原理与实战
1. 为什么一个“滚动列表”值得单独写一篇工具指南? 在Unity UGUI项目里,我见过太多团队把“显示几十条数据”当成小功能随手写——用Scroll View拖个Content,写个for循环Instantiate prefab,加个Layout Group排版,再…...
终极突破指南:三步解锁原神PC版帧率限制,让你的显卡火力全开
终极突破指南:三步解锁原神PC版帧率限制,让你的显卡火力全开 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否曾经在提瓦特大陆上驰骋时,感觉自己…...
ComfyUI-Custom-Scripts自动完成终极指南:如何快速提升AI绘画提示词效率
ComfyUI-Custom-Scripts自动完成终极指南:如何快速提升AI绘画提示词效率 【免费下载链接】ComfyUI-Custom-Scripts Enhancements & experiments for ComfyUI, mostly focusing on UI features 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Custom-Sc…...
C166微控制器引导加载程序到应用程序控制权转移实践
1. C166引导加载程序到应用程序的控制权转移概述 在嵌入式系统开发中,引导加载程序(Boot Loader)与应用程序(Application)的分离设计是一种常见架构。这种设计允许我们在不擦除整个Flash的情况下更新应用程序,同时保持引导加载程序的稳定性。对于使用英飞…...
ARMv8调试状态下LDR指令未定义问题解析
1. 问题背景与现象分析在ARMv8-A架构的调试过程中,开发者经常会遇到一个令人困惑的现象:当外部调试器暂停核心执行后,向EDITR寄存器注入LDR X1, [X0]指令(机器码0xf9400001)时,Tarmac日志显示该指令被标记为…...
