《LD:Localization Distillation for Object Detection》论文笔记
参考代码:LD
1. 概述
导读:这篇文章研究的是检测场景下的知识蒸馏方案。在该场景下的蒸馏有采取直接将对应特征图匹配到对应维度之后做特征图差异最小化,也有使用Teacher输出的GT作为引导排除大量背景等无关信息的。在这篇文章中参考和借鉴了在原分类网络中做蒸馏的思想,也就是在网络输出概率分布软化之后做蒸馏。因而这篇文章就使用到GFocal的边界框回归方案,这样就可以直接在输出的概率分布上做蒸馏,从而避免了Teacher和Student网络结构不对应带来的匹配问题,因此更加灵活。在实际进行蒸馏的时候文章指出直接将大小模型进行蒸馏其实是次优的策略,因而提出了一种渐进蒸馏的方案。除了传统上将大小模型进行蒸馏,文章也指出可以使用Self-Distillation的方法实现更加稳定的训练和达到更好的结果。
在检测场景下会遇到一些边界模糊的场景,如下图中红色的虚线圈处:
直接使用传统的只是蒸馏策略是很难显式捕获到这些信息的,需要对其进行建模,而GFocal正是完成此项任务的,因而这篇文章就是在GFocal输出概率分布基础上实现蒸馏。
2. 方法设计
2.1 Localization Distillation(LD)
在GFocal中边界框的输出是区间上概率分布,每条边的回归值可以描述为离散积分的形式(具体请参考GFocal论文):
e^=eTp=∑i=1neiPr(ei),e∈{l,r,b,t}\hat{e}=e^Tp=\sum_{i=1}^ne_iPr(e_i),\ e\in\{l,r,b,t\}e^=eTp=i=1∑neiPr(ei), e∈{l,r,b,t}
则这里的概率分布就可以套用在分类中的蒸馏,直接加上软化因子进行概率分布上的蒸馏,避免了需要网络维度适配的问题。其蒸馏的示意图如下:
上文中提到的软化因子τ\tauτ对蒸馏网络性能的影响如下:
2.2 Teacher Assistant Strategy
文章指出直接将大小模型进行蒸馏其结果是次优的,对此可以在大小模型中间线性划分出几个不同大小的模型(也就是Teacher Assistant),之后从大模型沿着这些设计出来的模型逐渐进行蒸馏,但是这样的操作会消耗很多的时间和算力。也就是看下图的形式,从模型T到S设计出从大到小变化的一些网络{A1,A2,…,Am}\{A_1,A_2,\dots,A_m\}{A1,A2,…,Am},然后从A1A_1A1到AmA_mAm逐渐蒸馏。
下表展示了逐渐蒸馏与直接进行蒸馏得到的结果对比:
2.3 Self-LD
除了实现大小模型上的蒸馏,其实还可以使用自我蒸馏的方式。这样做的好处是可以得到更加稳定的蒸馏结果和更好的性能。在下面给出这方面的一些文章以方便理解:
REF1:微调预训练模型的新姿势——自集成和自蒸馏
Improving BERT Fine-Tuning via Self-Ensemble and Self-Distillation
该提出了两种自蒸馏的方式:Self-Distillation-Averaged(SDA)和Self-Distillation-Voted(SDV)。在SDA中,首先计算出过去K个time step参数的平均值作为Teacher Model。在SDV中,将过去K个time step的参数视为K个Teacher Model。SDA的目标函数计算方式如下:
Lθ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),BERT(x,θˉ))L_{\theta}(x,y)=CE(BERT(x,\theta),y)+\lambda MSE(BERT(x,\theta),BERT(x,\bar{\theta}))Lθ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),BERT(x,θˉ))
其中,θˉ=1k∑k=1Kθt−k\bar{\theta}=\frac{1}{k}\sum_{k=1}^K\theta_{t-k}θˉ=k1∑k=1Kθt−k。SDV的目标函数计算方式如下:
Lθ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),BERT(x,1k∑k=1KBERT(x,θt−k)))L_{\theta}(x,y)=CE(BERT(x,\theta),y)+\lambda MSE(BERT(x,\theta),BERT(x,\frac{1}{k}\sum_{k=1}^KBERT(x,\theta_{t-k})))Lθ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),BERT(x,k1k=1∑KBERT(x,θt−k)))
REF2:论文串烧:Self-Knowledge Distillation
论文列表:
- Self-Knowledge Distillation: A Simple Way for Better Generalization
- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation
增加了Self-LD与未增加的区别见下表所示:
3. 实验结果
《LD:Localization Distillation for Object Detection》论文笔记相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- 从分布式数据库的CAP特性说起
- 页面金额显示两位小数点问题
- 【Luogu】P1131时态同步(树形DP)
- 【计算机网络复习 物理层】2.1.1 物理层基本概念
- numpy方法读取加载mnist数据集
- 来看各种数值的反转吧(洛谷P1553题题解,Java语言描述)
- DLL注入(CreateRemoteThread方式)
- django 基础框架学习 (一)
- AIO 理论 与 编程
- python3.4连接mysql5.7数据库增删改查
- HTML+CSS简易淘宝页面
- “Python小屋”1300篇历史文章分类速查表
- JS小图切换大图轮播代码
- 直流电机PID控制源码c语言,51单片机PID+PWM直流电机转速闭环控制源码(12864液晶显示)...
- java mvc接收json_详解springmvc 接收json对象的两种方式
- django 框架 SQL 语句 查询篇
- NR5G基础概念扫盲
- 正斜杠 “/” 与反斜杠 “\”辨析
- 客户体验改善计划的用户注销通知导致服务器自动重启
- Linux报错:Port xxx is in use by another program. Either identify and stop that program...