小目标调研

由8月14日组会讨论时觉得,tph-yolov5的小目标检测头较为重要,是从低层特征图进行检测的结果。但将C3模块更换为C2f模块,是否对低层特征图有较好改善仍有疑问,因此一个优质低层特征图应该有助于进行目标检测。基于这一想法,我们想到了华为的VanillaNet,是一个结构简单轻巧的模型,设想为若其模型性能够好,将其作为Backbone,其低层级特征图应有更好表现。目前VannillaNet模型与YOLO检测算法的结合未见有直接更换Backbone的,后续仍可调研。
YOLO系列模型改进指南这一博客可以看到,目前网络上对于YOLO系列的改进各种教程已经层出不穷,让人看起来眼花缭乱,其内有众多改进方法,及B站教程。但觉得除去此类方法,还可以直接对目前小目标相关文章直接进行调研。
觉得基于注意力机制与超分算法的小目标检测其实是一种更好的小目标检测算法。

疑问

ROI是如何获得的?
把DETR的Object Query定义为可学习的Anchor如何理解?

VanillaNet

论文名称:VanillaNet: the Power of Minimalism in Deep Learning
论文地址:https://arxiv.org/abs/2305.12972
代码地址:https://github.com/huawei-noah/VanillaNet 或
  https://gitee.com/mindspore/models/tree/master/research/cv/vanillanet

VanillaNet在yolov8中的应用

首发Yolov8涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet—VanillaBlock助力检测,实现暴力涨点博客中,他将yolov8 Neck部分P3 P4 P5位置的C2f更换成了VanillaNetBlock。给出了代码,但是并没有给出实验结果。

小目标检测网络结构优化方法

1.用Bi-FPN替换PAN-Net
Bi-FPN是在EfficientDet中提出了一种加权的双向特征金字塔网络,它允许简单和快速的多尺度特征融合。目的是为了追求更高效的多尺度融合方式。
2.关于增加小目标检测头的思考,小目标检测头可以直接提升对于小目标检测的性能,但其原因真的是低层特征图具备较好的小目标检测性或是因为FPN结构融合后有较好的检测性能,觉得仍然有待讨论。
觉得基于注意力机制与超分算法的小目标检测其实是一种更好的小目标检测算法。

DETR系列算法调研

DETR

DETR算法组成部分:
1.CNN Backbone: 原始DETR用的是ResNet
2.Transformer Encoder
3.Transformer Decoder
4.FFN 用于输出一个集合预测
5.二分图匹配和损失函数

DN-DETR

DETR收敛慢的原因主要是DETR 二分图匹配的不稳定导致的。解决这一问题,除了使用匈牙利损失,将带噪声的GT boxes作为DETR decoder的输入,输出重建后的bbox,这样有效减少了二分图失配的问题同时加速了DETR的收敛。

DAB-DETR

把DETR的Object Query定义为可学习的Anchor
在这里插入图片描述
1)左边是Encoder,右边是Decoder,可以看到K是feature embedding + positional embedding ,Q是feature embedding + Queries,

(2)其中,Q的“feature embedding”实际上是上一层Decoder的输出,也就是Value(Encoder的Feature embedding)根据注意力取出来的一部分,是不是很像ROI pooling?只是这里取的不是一部分区域,而是这个区域经过全局注意力之后的结果,相当于是多了Context

从(1)的角度看,Query可以类比为Positional Embedding,从(2)的角度看,Query是否就是Proposal?或者说,Proposal的位置信息,也就是Anchor

综上所述,Query实际上就是Positional Embedding形式的Anchor,与Decoder Embedding相加后,相当于是给ROI pooling后的Feature上PE(positional
embedding),用于继续跟总Feature求注意力矩阵,拿ROI。

经过多层堆叠之后,拿到了最精确的ROI,就可以过FFN输出分类和回归结果(DETR的做法)

有什么问题?
(1)凭什么多层堆叠就能拿到更精确的ROI?->这是由最后一层的监督决定的,不过可能也是导致其收敛慢的原因。
要想其收敛更快,显然的方法就是给它更多的监督==>每一个layer都给它一个gt的监督
这里又引出几个问题:
1、layer输出的并不是bbox,如何用gt的bbox去监督?
2、每个layer如何做正样本分配?
对于第一个问题,有几种方式可以解决:
1’ 在每个layer加个FFN检测头,输出分类和回归的结果
2还没想到
DAB-DETR就是采用的1’的做法

现在来解决第二个问题,每个layer输出的N个proposal用哪个gt来监督?
很自然的想法就是遵循常规OD,用IoU最大的来监督
最后是直接用DETR最后的匈牙利算法来分配样本

Conditional-DETR

本文主要解决Detr收敛速度慢的原因,故作者首先分析导致其收敛慢的可能原因是啥:encoder只涉及图像特征向量提取;decoder中的self-attn只涉及query之间的交互去重;而最有可能发生在cross attn。原始Detr论文中query=content query + object query,而原始论文发现在第二层layer去掉object query基本不掉点,故收敛慢是content query引起的。分析原始Detr的交叉注意力计算方式,注意使用的是加法,即cq同时和ck和pk交互容易使得网络产生困惑,故考虑将c和p解耦即可。

Deformable-DETR

Deformable DETR,它的注意模块只关注一个目标周围的一小部分关键采样点。Deformable DETR可以获得比DETR(特别是在小物体上)更好的性能,在训练时间少10×的时期。 可变形注意模块无论特征图的空间大小如何,都只关注参考点周围的一小组关键采样点(reference point)。通过为每个queries只分配少量固定数量的keys,可以缓解收敛性和特征空间分辨率的问题。

H-Deformable-DETR:DETRs with Hybrid Matching

为了客服一对一匹配的缺点,并释放探索积极查询的优势,本文提出一种简单的混合匹配策略,以生成信息量更大的查询用于在每次前向传播过程中于GT匹配。混合匹配核心思想是使用一对多匹配提高训练策略,使用一对一匹配避免NMS后处理。

这里使用两个解码器分支同意一对一匹配和一对多匹配。在训练阶段,维护一个解码器分支处理查询组用于一对一匹配和另一个解码器分支吃力额外的查询用于一对多匹配。评估阶段中,只是用第一个解码器分支,以及一对一匹配方法监督的第一组查询。本文方法避免了NMS后处理另外推断阶段不会引入额外的计算成本。

DINO-Deformable-DETR

在DN-DETR、DAB-DETR、Deformable DETR上进行改进,在COCO test-dev验证集上达到63.3.)

对于去噪训练,将有噪声的真值框分为有效和无效两部分,分别预测真值和no-class。赋予模型去除冗余框、拒绝较远query的能力。
混合query选择策略,更好地初始化query。从encoder里面选择初始化框作为位置query(相当于two-stage proposal生成阶段),保留内容query为可学习向量,鼓励第一层解码器关注空间先验。
向前看两次,当前层的框优化信息反向传播两层梯度。
在Object365数据集上预训练SwinL,COCO目标检测精度达到63,SOTA。

Co-DETR

作者从encoder生成的潜在表示和decoder中的attention学习两个方面对此进行了详细分析

ATSS

作者提出了一种自适应的选取正样本的方法,具体方法如下:

1.对于每个输出的检测层,选计算每个anchor的中心点和目标的中心点的L2距离,选取K(mmdetection的topK是9)个anchor中心点离目标中心点最近的anchor为候选正样本(candidate positive samples)

2.计算每个候选正样本和groundtruth之间的IOU,计算这组IOU的均值和方差
根据方差和均值,设置选取正样本的阈值:t=m+g ;m为均值,g为方差

3.根据每一层的t从其候选正样本中选出真正需要加入训练的正样本
然后进行训练

首先比较了Deformable DETR和one to many matching方法之间潜在特征的可分辨性得分,其中作者用ATSS的检测头替换decoder,利用每个空间坐标中特征的l2范数来表示可分辨性得分。给定encoder的输出F ∈ R C × H × W F∈ R^{C×H×W}F∈R
C×H×W
,可以得到可分辨性得分图S ∈ R 1 × H × W S∈ R^{1×H×W}S∈R
1×H×W
。当相应区域的分数较高时,可以更好地检测对象。
在这里插入图片描述

ATSS中较高的IoF-IoB曲线表明其相较于Defomable DETR更容易区分前景和背景。进一步可视化可分辨性得分图S ∈ R 1 × H × W S∈ R^{1×H×W}S∈R
1×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可以稍微缓解这种情况。
当采用MixMIM作为主干网络并采用Objects365进行预训练时,CO-DETR将COCO mAP提升到了64.4,几乎达到了SOTA水平。以更少的额外数据大小实现了卓越的性能。

MixMIM

基于Swin Transformer构建了MixMIM编码器使MixMIM编码器更简单但更强大。

PP-YOLO-E

PP-YOLOE基于PP-YOLOv2改进实现,其中PP-YOLOv2的整体架构包含了具有可变形卷积的ResNet50-vd的主干
使用带有SPP层和DropBlock的PAN做neck
轻量级的IoU感知头
在PPYOLOv2中,ReLU激活功能用于主干,而mish激活功能用于颈部。PP-YOLOv2只为每个GT对象分配一个锚定框。除了分类损失、回归损失和目标损失外,PP-YOLOv2还使用IoU损失和IoU感知损失来提高性能。

TOOD

最近的FCOS和ATSS都使用中心度分支来增强从对象中心附近的锚点预测的分类分数,并为相应锚点的定位损失分配更大的权重。此外,FoveaBox将对象的预定义中心区域内的锚视为正样本。这样的启发式设计已经取得了很好的效果,但这些方法可能会受到两个限制:

(1)分类和定位独立。目前的单级检测器通过两个独立的分支(即头部)并行独立地进行目标分类和定位。这种由两个分支组成的设计可能会导致两个任务之间缺乏交互,从而导致在执行它们时预测不一致。如图1的“result”栏所示,TSS检测器(左上角)识别“餐桌”的对象(用红色块显示的锚点表示),但更准确地定位“披萨”的另一个对象(红色边界框)。
在这里插入图片描述
(2)与任务无关的样本分配。大多数无锚点检测器使用基于几何的分配方案来选择对象中心附近的锚点进行分类和定位,而基于锚点的检测器通常通过计算锚框和ground truth之间的IoUs来分配锚盒。然而,用于分类和定位的最佳锚点通常是不一致的,并且可能根据对象的形状和特征而变化很大。广泛使用的样本分配方案是与任务无关的,因此可能很难对这两个任务做出准确而一致的预测,如图1中ATSS的 ‘Score’ 和 ‘IOU’ 分布所示。‘Result’列还说明最佳定位锚(绿色块)的空间位置可能不在对象的中心,并且它与最佳分类锚(红色块)不能很好地对齐。因此,在非最大值抑制(NMS)过程中,精确的bounding box可能会被精度较低的bounding box所抑制。
为了解决这些局限性,论文提出了一种任务对齐的一阶段目标检测(Task-aligned One-stage Object Detection, TOOD),旨在通过设计一种新的头部结构和面向对齐的学习方法来更精确地对齐这两个任务:

针对传统的一步法目标检测中分类和定位分别采用两个分支并行实现的特点,设计了一种任务对齐头(T-Head),以增强两个任务之间的交互性。这使得这两项任务能够更协作地工作,进而更准确地调整它们的预测。T-Head在概念上很简单:它计算任务交互特征,并通过一种新颖的任务对齐预测器(TAP)进行预测。然后,它根据任务对齐学习提供的学习信号对两个预测的空间分布进行对齐,如下所述。

为了进一步克服未对齐问题,论文提出了一种任务对齐学习(TAL)来明确两个任务的最优锚点之间的距离。它是通过设计一个样本分配方案和一个与任务相关的损失来执行的。样本分配通过计算每个锚点的任务对齐度来收集训练样本(正样本或负样本),而任务对齐损失逐渐统一最佳锚点,以便在训练期间预测分类和定位。因此,在推断时,可以保留分类得分最高并且共同具有最精确定位的边界框。

提出的T-Head和学习策略可以协同工作,在分类和定位两个方面做出高质量的预测。论文的主要贡献可以概括为:

(1)设计了一种新的T-Head,在保持分类和定位特征的同时,增强了分类和定位之间的交互,并进一步将两个任务在预测上对齐;

(2)论文提出了TAL,在识别出的任务对齐锚点上显式地对齐两个任务,并为所提出的预测器提供学习信号;

(3)论文在MSCOCO上进行了广泛的实验,TOOD达到了51.1AP,超过了现有的单级检测器,如ATSS。定性结果进一步验证了任务对齐方法的有效性。
在这里插入图片描述
与最近的单级探测器类似,TOOD具有一个“主干-FPN-头”的整体流水线。此外,考虑到效率和简单性,TOOD在每个位置使用一个锚点(与ATSS相同),其中“锚”是指anchor-free检测器的锚点,或者是anchor-based检测器的锚盒。
首先,T-Head对FPN特征进行预测。其次,使用预测来计算每个锚点处的任务对齐度量,基于该度量,TAL为T-Head产生学习信号。最后,T-Head对分类和定位的分布进行了相应的调整。具体地说,对齐程度最高的锚点通过“Prob”(概率图)获得更高的分类分数,并通过学习的“偏移量”获得更准确的边界框预测。

如图2所示,T-Head和TAL可以协作改进两项任务的一致性。具体地说,T-Head首先对FPN特征进行分类和定位预测。然后,TAL基于一种新的任务对齐度量来计算任务对齐信号,该度量度量测量两个预测之间的对齐程度。最后,T-Head在反向传播过程中使用TAL计算的学习信号自动调整其分类概率和定位预测。

RTMDet

从 YOLOX 到 RTMDet step-by-step 对比

首先,为了解决 CosineLr 学习率衰减过快以及 SGD 收敛不稳定的问题,我们将优化器以及学习率分别更换为了 AdamW 和 FlatCosineLR,得到了 0.4% 的提升。

然后我们使用新的基础单元构建而成的 backbone 和 neck 替换了原有的模型结构,这一改进又提升了 1.2% 的 AP,并且推理速度只减慢了 0.02ms。在使用共享权重的检测头后,参数量过大的问题得到了解决,而模型精度和推理速度都没有下降。在此基础之上,我们又增加了动态软标签分配策略以及改进后的数据增强,分别带来了 1.1% 和 1.3% 的精度提升。

最后,锦上添花的一点,我们又将 backbone 在 imagenet 上进行了预训练,也使精度得到了略微的提升。不过预训练模型仅在 tiny 和 s 模型上有精度提升的效果,在更大的模型结构上则体现不出优势。

综合以上这些修改,RTMDet 相比于 YOLOX 在相似的模型大小以及推理速度上提升了 4.3% AP!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值