返回顶部
首页 > 资讯 > 后端开发 > Python >《DETRs with Collaborative Hybrid Assignments Training》 加入one to many matching 辅助头训练的DETR
  • 397
分享到

《DETRs with Collaborative Hybrid Assignments Training》 加入one to many matching 辅助头训练的DETR

深度学习人工智能计算机视觉 2023-10-25 12:10:28 397人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

DETRs with Collaborative Hybrid Assignments Training 背景原理实验 最近看到一篇不错的DETR论文,翻译了下,以作记录。 论文地址:h

DETRs with Collaborative Hybrid Assignments Training

在这里插入图片描述
最近看到一篇不错的DETR论文,翻译了下,以作记录。
论文地址:https://arxiv.org/pdf/2211.12860.pdf
开源地址:https://github.com/Sense-X/Co-DETR

在这里插入图片描述

背景

自DETR新范式提出以来,有很多文章都致力于解决DETR模型训练慢、精度一般的问题。DETR将对象检测视为集合预测(set prediction)问题,并引入基于transfORMer encoder-decoder架构的一对一匹配(one to one matching )方法。以这种方式,每个GT将单独分配给一个query,不再需要一对多匹配(one to many matching)的先验设计(如anchor、手工设计的GT匹配机制等)。DETR简化了检测的pipeline(指不需要nms),作为一种新范式引发了诸多DETR的变体。Deformable DETR作为DETR变体中的佼佼者,将稀疏的可变形transformer、二阶段检测、级联更新bbox等操作引入到DETR中,得到了相当不错的效果。
最近(2022年)不少论文都将目光集中在了one to one matching机制上,年初CVPR的Denosing DETR认为one to one matching机制在模型训练的初期导致了损失不稳定,GT无法很好的与query稳定的进行匹配,因此提出了加入噪声干扰的GT输入作为query,与GT进行损失计算来辅助加速DETR模型训练,该课题组在此基础上提出了DINO、Mask DINO等模型,将DETR模式推到了SOTA的水平。此后,Group DETR、H-DETR等论文通过扩展query的方式将DETR的one to one matching转换为one to many matching的模式来加速模型训练,并取得了不错的效果。
本篇论文同样将目光放在了DETR的one to one matching 问题上,作者分析了Deformable DETR,认为one to one matching探索了不太积极的query,从而导致了训练的低效。作者从encoder生成的潜在表示和decoder中的attention学习两个方面对此进行了详细分析。首先比较了Deformable DETR和one to many matching方法之间潜在特征的可分辨性得分,其中作者用ATSS的检测头替换decoder,利用每个空间坐标中特征的l2范数来表示可分辨性得分。给定encoder的输出 F ∈ R C × H × W F∈ R^{C×H×W} FRC×H×W,可以得到可分辨性得分图 S ∈ R 1 × H × W S∈ R^{1×H×W} SR1×H×W。当相应区域的分数较高时,可以更好地检测对象。如下图所示,通过对可分辨性得分应用不同的阈值来演示IoF-IoB曲线(IoF:前景相交,IoB:背景相交)。
在这里插入图片描述

ATSS中较高的IoF-IoB曲线表明其相较于Defomable DETR更容易区分前景和背景。进一步可视化可分辨性得分图 S ∈ R 1 × H × W S∈ R^{1×H×W} SR1×H×W

在这里插入图片描述
很明显,一些显著区域中的特征在one to many matching方法中被充分激活,但在one to one matching中很少被激活。
为了探索decoder的训练问题,作者还基于Deformable DETR和Group DETR(其将更多的正样本query引入到decoder中)演示了decoder中cross attention的IoF-IoB曲线。

在这里插入图片描述
如图所示,太少正样本query也会影响atttention的学习,而在decoder中增加更多的正样本query可以稍微缓解这种情况。

原理

作者提出一种简单有效的辅助训练模型Co-DETR,使用通用的one to many matching来提高encoder和decoder的训练效率。具体而言,就是将一些原有的one to many matching辅助检测头(如ATSS、Faster RCNN的检测头)加在encoder的输出后进行损失训练,并将结果输出到decoder中辅助decoder进行训练。这些辅助检测头可以通过one to many matching进行监督。不同的标签分配丰富了对encoder的监督,这迫使encoder具有足够的辨别力,以支持这些辅助检测头的损失收敛。one to many matching可以引入大量正样本作为query输入decoder中,以提高decoder的训练效率。并且Co-DETR只在训练阶段加入辅助检测头,因此仅在训练阶段中引入额外的计算开销,不会影响到模型推理的效率。Co-DETR的网络结构如下图所示:
在这里插入图片描述
具体而言,给定encoder的输出特征 F F F,首先通过多尺度适配器将其转换为特征金字塔 { F1 , . . . , FJ } \{F_1,...,F_J\} {F1,...,FJ},其中 J J J表示具有 2 2 + J 2^{2+J} 22+J下采样步长的特征图。特征金字塔由单尺度encoder中的单个特征图构建,使用双线性插值和3×3卷积进行上下采样。对于多尺度encoder,只对多尺度encoder特征F中最粗糙的特征进行下采样以构建特征金字塔。定义了 K K K个具有相应标签分配方式 Ak A_k Ak的辅助头,对于第 i i i个辅助头, { F1 , . . . , FJ } \{F_1,...,F_J\} {F1,...,FJ}被发送给它以获得预测P ^ i \hat P_i P^i。在第 i i i个头, Ai A_i Ai用于计算P ^ i \hat P_i P^i中正样本和负样本的监督目标。将 G G G表示为GT集,辅助头 Ai A_i Ai的计算可表示为:
P i { p o s } , B i { p o s } , P i { n e g } = A i ( P ^ i ,G) \mathbf P^{\{pos\}}_i, \mathbf B^{\{pos\}}_i, \mathbf P^{\{neg\}}_i = A_i(\hat\mathbf P_i, \mathbf G) Pi{pos},Bi{pos},Pi{neg}=Ai(P^i,G)
式中, Bi { p o s } \mathbf B^{\{pos\}}_i Bi{pos}是空间正样本所在的位置的集合。 Pi { p o s } \mathbf P^{\{pos\}}_i Pi{pos} Pi { n e g } \mathbf P^{\{neg\}}_i Pi{neg}是相应位置的监督目标,包括类别和回归偏移。损失函数可以定义为:
L i e n c = L i ( P ^ i { p o s } , P i { p o s } )+ L i ( P ^ i { n e g } , P i { n e g } ) L^{enc}_i = L_i(\hat P^{\{pos\}}_i, P^{\{pos\}}_i) + L_i(\hat P^{\{neg\}}_i, P^{\{neg\}}_i) Lienc=Li(P^i{pos},Pi{pos})+Li(P^i{neg},Pi{neg})
对于 K K K个辅助检测头,其损失函数可定义为:
L e n c = ∑ i = 1 K L i e n c L^{enc}=\sum_{i=1}^KL^{enc}_i Lenc=i=1KLienc
在one to one matching中,每个GT框将仅分配给一个特定query作为监督目标。太少的正样本query导致decoder中的cross attentation学习效率低下。为了缓解这一问题,根据每个辅助头中的标签分配 Ai A_i Ai生成了足够的正样本query。具体来说,给定第 i i i个辅助头中的正坐标集 Bi { p o s } ∈ R M i × 4 \mathbf B^{\{pos\}}_i\in R^{M_i×4} Bi{pos}RMi×4 ,其中 Mi M_i Mi是正样本的数量,额外的正样本query Qi ∈ R M i × C Q_i \in R^{M_i×C} QiRMi×C可通过以下方式生成:
Q i =Linear(PE( B i { p o s } ))+Linear(E( F ∗ , p o s )) Q_i = Linear(PE(\mathbf B^{\{pos\}}_i)) + Linear(E({F_∗}, {pos})) Qi=Linear(PE(Bi{pos}))+Linear(E(F,pos))
因此,有 K + 1 K+1 K+1组query有助于单个one to one matching分支, K K K个分支在训练期间具有one to many matching。辅助one to many matching的分支与原始主分支中的 L L L个decoder层共享相同的参数。辅助分支中的所有query都被视为正样本query,因此匹配过程被丢弃。具体而言,第 i i i个辅助分支中的第 l l l个decoder层的损失可以定义为:
L i , l d e c = L ~ ( P ~ i , l , P i { p o s } ). L^{dec}_{i,l} = \tilde L(\tilde \mathbf P_{i,l}, \mathbf P^{\{pos\}}_i). Li,ldec=L~(P~i,l,Pi{pos}).
Co-DETR的全体损失函数可被定义为:
L g l o b a l = ∑ j = 1 L ( L ~ l d e c + λ 1 ∑ i = 1 K L i , l d e c + λ 2 L e n c ) L^{global} = \sum^L_{j=1}(\tilde L^{dec}_l + \lambda_1 \sum^K_{i=1} L^{dec}_{i,l} + \lambda_2 L^{enc}) Lglobal=j=1L(L~ldec+λ1i=1KLi,ldec+λ2Lenc)
式中,L ~ l d e c \tilde L^{dec}_l L~ldec为原始主分支中 L L L个decoder层的损失。

实验

作者并保持训练设置与baseline一致,将Co-DETR引入到Deformable DETR++(two stage 和+iterative bounding box refinement)中。采用ATSS和Faster RCNN作为K=2的辅助头,采用ATSS作为K=1的辅助头。将query的数量设置为300,并默认将 λ1 \lambda_1 λ1设为1.0, λ2 \lambda_2 λ2设为2.0。
在这里插入图片描述
可以看到CO-DETR取得了相当不错的效果。
在这里插入图片描述
当采用MixMIM作为主干网络并采用Objects365进行预训练时,CO-DETR将COCO mAP提升到了64.4,几乎达到了SOTA水平。以更少的额外数据大小实现了卓越的性能。

如果与DINO中的Denosing机制联合使用,是否会带来更好的提升,希望可以看到后续跟进的report或者论文。

来源地址:https://blog.csdn.net/blanokvaffy/article/details/128032953

--结束END--

本文标题: 《DETRs with Collaborative Hybrid Assignments Training》 加入one to many matching 辅助头训练的DETR

本文链接: https://lsjlt.com/news/442407.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作