Distilling Object Detectors via Decoupled Features

article/2025/8/6 8:49:57

Abstract

相比于图像分类而言,目标检测器更加复杂,具有多个损失函数。而目前的的检测中,其主要将注意力集中在对象的区域中,但本文指出,从背景中提取的特征信息对于学生模型的学习也是必不可少的。且由于目标区域和背景区域包含的信息不同,所以所授予的权重也应该时不同的。在此基础上,本文提出了一种新的基于解耦特征的蒸馏算法DeFeat,性能有所提升,

1. Introduction

先介绍了为了提升目标检测的准确性,计算资源成本的增加和检测速度的明显降低。解决方法有:量化、剪枝、网络设计和知识蒸馏等。接下来介绍了几个基于知识蒸馏的目标检测算法,FGFI让学生网络学习教师网络目标的附近锚定位置;TADF通过颈部特征中的高斯mask对对象区域和检测头中的正样本作为学生网络学习对象。但这些方法仅从目标区域提取知识,忽略背景。

通过实验可知,即仅通过背景区域特征提取学生也可以显著提高学生的学习能力,甚至可以获得与通过目标区域提取学生相类似的结果如下图)。

之前的文献也有表明,物体和背景之间有很强的关系,对象可能性 P ( O ∣ V o , V b ) = P ( O ∣ V b ) P ( V o ∣ O , V b ) P ( V o ∣ V b ) P (O|V_o, V_b)=P (O|V_b)\frac{P (V_o|O,V_b)}{P (V_o|V_b)} P(OVo,Vb)=P(OVb)P(VoVb)P(VoO,Vb) 。其中, V o , V b V_o, V_b Vo,Vb表示目标特征和背景特征,通过公式可知,所有的概率都与背景信息有关。同时,通过观察以前的论文可知:目标区域和背景区域都可以通过蒸馏独立地受益于目标检测,但一旦集成在一起,性能会下降。

基于上述分析,提出将知识蒸馏的特征解耦,并分别赋予不同的重要性,包含两个阶段的特征:即FPN特征和ROI-Aligned特征。使用 ground-truth mask将FPN特征分割成目标和背景,并在教师和学生之间使用均方误差损失:均方误差损失ROI-Aligned特征也被分为pos和neg部分,基于这些解耦的RoI-Aligned特征生成的分类分数是使用KL散度损失来得到的。

2. Related Work

综上所述,现有的目标检测提取框架忽略了背景区域在中间特征中的重要作用和分类头中的负区域proposal(但对整个特征映射的模拟和分类头中的提取都忽略了前景和背景的不平衡,这可能导致次优结果)。

3. Distillation via Decoupled Features

一般来说,目标检测器由三到四个部分组成:1)backbone-用于提取特征 2)neck-融合多层特征 3)RPN-用于生成proposals 4)开始对象分类和边界看回归。蒸馏的目的是让学生网络学习教师网络的知识,可以是中间层特征或分类头中的propos的软预测。

定义 S ∈ R H × W × C 和 T ∈ R H × W × C S ∈ R^{H×W ×C} 和 T ∈ R^{H×W ×C} SRH×W×CTRH×W×C分别为学生和教师的中间特征。通过中间特征进行蒸馏的表述为:
L f e a = γ 2 N ∑ h = 1 H ∑ w = 1 W ∑ c = 1 C I ( ϕ ( S h , w , c ) − T h , w , c ) 2 L_{fea} = \frac{\gamma}{2N}\sum_{h=1}^{H}\sum_{w=1}^{W}\sum_{c=1}^{C}{I(\phi(S_{h,w,c}) − T_{h,w,c})^2} Lfea=2Nγh=1Hw=1Wc=1CI(ϕ(Sh,w,c)Th,w,c)2
其中 N = H W C N=HWC N=HWC是元素总数 , γ \gamma γ为蒸馏损失的调节系数, ϕ \phi ϕ表示适应层, I I I表示掩膜。

对RPN输出的K个区域的proposals, 分类头需要计算所有proposals的软标签。通过软标签预测的蒸馏可表述为:
L c l s = 1 K ∑ i = 1 K L C E ( y i s , Y i ) + λ K ∑ i = 1 K L K L ( y i s , y i t ) L_{cls} = \frac{1}{K}\sum_{i=1}^{K}L_{CE}(y^s_i , Y_i)+\frac{\lambda}{K}\sum_{i=1}^{K}L_{KL}(y^s_i , y^t_i) Lcls=K1i=1KLCE(yis,Yi)+Kλi=1KLKL(yis,yit)
超参数 λ \lambda λ用来平衡不同的损失, L C E L_{CE} LCE L K L L_{KL} LKL分别表示交叉熵损失和KL散度损失, Y i Y_i Yi表示真实值, y i s , y i t y^s_i , y^t_i yis,yit分别表示

学生预测标签和老师预测标签。学生网络的整体损失为:
L = L f e a + L c l s + L r e g + L r p n L = L_{fea} + L_{cls} + L_{reg} + L_{rpn} L=Lfea+Lcls+Lreg+Lrpn
L r e g L_{reg} Lreg 是边界盒回归损失, L r p n L_{rpn} Lrpn是RPN损失

3.1 Decouple Intermediate Features in Distillation

如下图所示。,仅通过背景区域的蒸馏仍然可以获得与仅通过对象区域的蒸馏相当的结果, 因此中间特征中的背景区域可以补充目标区域,进一步帮助学生检测器的训练。问题是如何在蒸馏过程中适当的整合这两类区域。

基于以上观察,通过解耦特征提取学生。对于尺寸为 H × W H × W H×W的特征, 首先我们根据ground-truth生成一个二值掩码M:
M i , j = 1 [ ( i , j ) ∈ B ] M_{i,j} = 1\quad[(i, j) ∈ B] Mi,j=1[(i,j)B]
其中 M ∈ { 0 , 1 } H × W M ∈ \{0, 1\}^{H×W} M{0,1}H×W,如果 ( i , j ) (i,j) (i,j)属于对象,则 M = 1 M=1 M=1,否则为0。如果detector包含可以输出多层特征的FPN,就将每个ground-truth分配到相应级别,然后分别生成掩码M。最后使用生成的二进制掩码来解耦颈部特征。

中间特征的蒸馏损失为:
L f e a = α o b j 2 N o b j ∑ h = 1 H ∑ w = 1 W ∑ c = 1 C M h , w ( ϕ ( S h , w , c ) − T h , w , c ) 2 + α b g 2 N b g ∑ h = 1 H ∑ w = 1 W ∑ c = 1 C ( 1 − M h , w ) ( ϕ ( S h , w , c ) − T h , w , c ) 2 L_{fea} = \frac{α_{obj}}{2N_{obj}}\sum_{h=1}^{H}\sum_{w=1}^{W}\sum_{c=1}^{C}M_{h,w}(\phi(S_{h,w,c}) − T_{h,w,c})^2+\frac{α_{bg}}{2N_{bg}}\sum_{h=1}^{H}\sum_{w=1}^{W}\sum_{c=1}^{C}(1-M_{h,w})(\phi(S_{h,w,c}) − T_{h,w,c})^2 Lfea=2Nobjαobjh=1Hw=1Wc=1CMh,w(ϕ(Sh,w,c)Th,w,c)2+2Nbgαbgh=1Hw=1Wc=1C(1Mh,w)(ϕ(Sh,w,c)Th,w,c)2
其中, N o b j = C ∑ h = 1 H ∑ w = 1 W M w , h N_{obj} = C\sum_{h=1}^{H}\sum_{w=1}^{W}M_{w, h} Nobj=Ch=1Hw=1WMw,h,,表示目标区域的元素数, N o b j = C ∑ h = 1 H ∑ w = 1 W ( 1 − M w , h ) N_{obj} = C\sum_{h=1}^{H}\sum_{w=1}^{W}(1-M_{w, h}) Nobj=Ch=1Hw=1W(1Mw,h),表示背景元素的个数。 α o b j , α b g \alpha_{obj}, \alpha_{bg} αobj,αbg分别表示目标区域和背景区域的系数

3.2. Decouple Region Proposals in Distillation

目标对象(positive)的蒸馏损失始终大于背景(negative)的蒸馏损失.如果不平衡两者,则背景proposals产生的小梯度会淹没在positive proposas的大梯度中,从而限制进一步细化。因此,我们建议在提取分类头时,将区域建议解耦为正(对象)propoals和负(背景)proposals,以达到最佳收敛。我们将教师检测器生成的区域建议输入教师和学生的头部,以生成类别预测 p t p_t pt p s p_s ps,positive proposal和negative proposal分别处理,如下图所示:

DeFeat结构图

对于positive proposals的概率 z z z,使用温度 T o b j T_{obj} Tobj来软化(这是温度为T的softmax):
p s , T o b j ( c ∣ θ s ) = e x p ( z c s / T o b j ) ∑ j = 1 C e x p ( z j s / T o b j ) c ∈ Y p^{s,T_{obj}} (c | θ^s) = \frac {exp(z^s_c/T_{obj})}{\sum_{j=1}^{C}exp(z^s_j /T_{obj})}\;c ∈ Y ps,Tobj(cθs)=j=1Cexp(zjs/Tobj)exp(zcs/Tobj)cY

p t , T o b j ( c ∣ θ t ) = e x p ( z c t / T o b j ) ∑ j = 1 C e x p ( z j t / T o b j ) c ∈ Y p^{t,T_{obj}} (c | θ^t) = \frac {exp(z^t_c/T_{obj})}{\sum_{j=1}^{C}exp(z^t_j /T_{obj})}\;c ∈ Y pt,Tobj(cθt)=j=1Cexp(zjt/Tobj)exp(zct/Tobj)cY

其中, θ s \theta^{s} θs θ t \theta^t θt分别表示教师学生网络和教师网络的参数, Y = { 1 , 2 , . . . , C } Y = \{1, 2, ..., C\} Y={1,2,...,C}是类别。

为了从教师中提取学生的知识,使用了KL散度:
L c l s = β o b j K o b j ∑ i = 1 K b i L K L ( p i s , T o b j , p i t , T o b j ) + β b g K b g ∑ i = 1 K ( 1 − b i ) L K L ( p i s , T b g , p i t , T b g ) L_{cls} = \frac{β_{obj}}{K_{obj}}\sum_{i=1}^{K}b_iL_{KL}(p_i^{s, T_{obj}}, p_i^{t, T_{obj}}) +\frac{β_{bg}}{K_{bg}}\sum_{i=1}^{K}(1-b_i)L_{KL}(p_i^{s, T_{bg}}, p_i^{t, T_{bg}}) Lcls=Kobjβobji=1KbiLKL(pis,Tobj,pit,Tobj)+Kbgβbgi=1K(1bi)LKL(pis,Tbg,pit,Tbg)

L K L ( p s , T , p t , T ) = T 2 ∑ c = 1 C p t , T ( c ∣ θ t ) l o g p t , T ( c ∣ θ t ) p s , T ( c ∣ θ s ) L_{KL}(p^{s,T} , p^{t,T} ) = T^2\sum_{c=1}^{C}p^{t,T}(c|θ^t)log\frac{p^{t,T}(c | θ_t)}{p^{s,T}(c|θ^s)} LKL(ps,T,pt,T)=T2c=1Cpt,T(cθt)logps,T(cθs)pt,T(cθt)

其中, b i b_i bi表示真实对象的第i个标签, β o b j \beta_{obj} βobj β b g \beta_{bg} βbg表示阳性和阴性的系数, K o b j = ∑ i b i K_{obj}=\sum_{i}b_i Kobj=ibi K b g = ∑ i ( 1 − b i ) K_{bg}=\sum_{i}(1-b_i) Kbg=i(1bi)表示positive proposals和negative proposals的数量。 T 2 T^2 T2用来保证梯度大小的比例。

4. Experiments

image-20220306145714443


http://chatgpt.dhexx.cn/article/ScnJcpLZ.shtml

相关文章

Decoupled Attention Network for Text Recognition

摘要: 最流行的文字检测的方法是注意力机制,但是大多数的注意力机制方法由于循环的对齐操作会导致严重的对齐问题。因为对齐操作依赖于历史解码信息。 本文提出的DAN将对齐操作与历史解码信息解耦。 原理: Connectionist temporal classifi…

涨点技巧:Detect系列---Yolov5/Yolov7加入解耦头Decoupled_Detect,涨点明显

目录 1. Decoupled Head介绍 2.Yolov5加入Decoupled_Detect 2.1 DecoupledHead加入common.py中: 2.2 Decoupled_Detect加入yolo.py中: 2.3修改yolov5s_decoupled.yaml 3.数据集下验证性能 🏆 🏆🏆🏆&…

Decoupled Contrastive Learning 论文解读和感想

本文首先提出了当前对比学习的三大痛点: 1、当前的sota方法结构都过于复杂 2、对比学习要想取得效果,必须要用大batch 3、超参敏感(个人认为这里说的超参是指数据增强方式) 然后本文以SimCLR为例,通过对对比损失的梯度进行分析,发…

DECOUPLED WEIGHT DECAY REGULARIZATION

引言 Adam作为一个常用的深度学习优化方法,提出来的时候论文里的数据表现都非常好,但实际在使用中发现了不少问题,在许多数据集上表现都不如SGDM这类方法。 后续有许多工作针对Adam做了研究,之前整理过关于优化算法的发展历程&am…

Decoupled Dynamic Filter Networks

转载自:https://www.cnblogs.com/liuyangcode/p/14755924.html 对depth-wise的改进,将卷积核的参数改为根据输入变化的方式 Introduction 卷积缺点在于:内容不变,计算量高动态filter可以根据内容自适应,但是会提高计算量。depth…

Analyzing and Leveraging Decoupled L1 Caches in GPUs

introduction 我们都知道L1/L2/L3cache解决了内存墙的问题,但是作者分析出现有的缓存架构有着天然缺陷, 作者列出的many to few communication,也就是L1ache中大量的数据传输到L2cache中,可能对于L1cache的带宽使用率不是很高&a…

Decoupled network

Decoupled network https://zhuanlan.zhihu.com/p/37598903 神经网络机制存在的缺陷? 过拟合,梯度消失或者是膨胀,训练依靠大量样本,对网络初始化及其敏感记忆协迁移等等。 Decupled network是对operator的改进 现在的卷积操作…

Decoupled Knowledge Distillation论文阅读+代码解析

本文来自2022年CVPR的文章,论文地址点这里 一. 介绍 知识蒸馏(KD)的通过最小化师生预测对数之间的KL-Divergence来传递知识(下图a)。目前大部分的研究注意力都被吸引到从中间层的深层特征中提取知识。与基于logit的精馏方法相比&#xff0c…

令牌桶算法

一 算法 令牌桶算法和漏桶算法不同的是,有时后端能够处理一定的突发情况,只是为了系统稳定,一般不会让请求超过正常情况的60%,给容灾留有余地。但漏桶算法中后端处理速度是固定的,对于短时的突发情况,后端…

动态分区分配算法(1、首次适应算法 2、最佳适应算法 3、最坏适应算法 4、邻近适应算法)

文章目录 前言知识总览1、首次适应算法2、最佳适应算法3、最坏适应算法4、邻近适应算法知识回顾与重要考点 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。 提示:以下是本篇文章…

《算法4》读书笔记(一)

写在前面:配套网站algs4.cs.princeton.edu,可以把这个网站作为编程的时候的参考资料。这本书比较实用(某瓣评分9.3),但没有动态规划部分,作为两三年没怎么碰过算法和数据结构的菜狗,看了《图解算…

《算法4》深入理解红黑树

红黑树是一种性能非常优秀的数据结构,关键在于它能保证最坏的性能也是对数的,主要是因为它是一种平衡的树,所以也叫平衡查找树。要理解红黑树,最好先看看我的上一篇博客《算法4》符号表以及二叉查找树,了解二叉查找树以…

【算法4总结】第四章:图

目录备份 第四章:图 概述 图可以根据是否有向和带权分成以下四种: 无向图 (无向不带权)有向图 (有向不带权)加权无向图(无向带权)加权有向图(有向带权) …

算法4(一、递归学习)

每次用递归都感觉有点难,这个趁着恶补基础知识的时候,专门看了一遍递归,算法4的。 1.1 递归介绍 方法可以调用自己,例如:下面给出了bin_search的二分查找的一种实现。(算法4中使用的是Java,但…

【算法4总结】第一章:基础

目录备份 第一章:基础 我认为这一章主要介绍的是如何使用工具。 一共五节,前两节主要是对 Java 语法的回顾,第三节则是三个数据结构,背包,队列和栈的API讲解。 而第四节是讲解的是如何分析算法。第五节则是针对具体…

SQL修改语句

如果我们要修改数据库中表的数据&#xff0c;这个时候我们就要使用到UPDATE语句。 UPDATE语句的基本语法是&#xff1a; UPDATE <表名> SET 字段1值1, 字段2值2, ... WHERE ...; 例如&#xff0c;我们想更新employees表id100的记录的last_name和salary这两个字段&…

【数据库】SQL语句之修改语句(INSERT,UPDATE,DELETE)

1.INSERT INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...); 例如&#xff1a; 一次插入一个 INSERT INTO students (class_id, name, gender, score) VALUES (2, 小明, M, 80);一次插入多条 INSERT INTO students (class_id, name, gender, score) VA…

SQL Server修改数据

本篇主要讲解的是SQL Server 中修改数据的几种语句&#xff1a; INSERT语句INSERT INTO SELECT语句UPDATE语句DELETE语句 一&#xff1a;INSERT语句 INSERT语句向表中添加新行&#xff0c;以下是INSERT语句的最基本形式&#xff1a; 首先&#xff1a;table_name指定要插入的…

使用SQL语句修改表数据

使用SQL语句修改表数据 文章目录 使用SQL语句修改表数据利用INSERT语句输入数据利用UPDATE语句更新表数据利用DELETE语句删除表中数据利用Truncate Table语句删除表中数据 利用INSERT语句输入数据 INSERT语句的基本语法格式如下&#xff1a; 上述格式主要参数说明如下&#xf…

初探POC编写

文章目录 前言什么是POC什么是 ExpPOC注意事项尝试编写第一个POCpikachu sql盲注poc参考 前言 想锻炼一下编程能力&#xff0c;师兄说以后很重要的&#xff0c;最好学好一点 但是我又想学习安全相关的&#xff0c;那就来练练poc吧 什么是POC PoC(全称: Proof of Concept), …