论文阅读-GiraffeDet: A Heavy-Neck Paradigm for Object Detection

本文提出了GiraffeDet,一种新型的目标检测网络,采用轻量级空间到深度链(S2D-chain)作为骨干和通用特征金字塔网络(GFPN)作为颈部。研究发现,颈部在目标检测任务中的作用大于传统的骨干网络,尤其是在处理尺度变化大的目标时。GiraffeDet通过密集的信息交换和多层次特征融合,实现了高精度和高效率。实验结果显示,即使在较低的计算成本下,GiraffeDet也能超越基于ResNet的模型,证明了其设计的有效性。

GiraffeDet: A Heavy-Neck Paradigm for Object Detection
一般我们遇见的检测器都是更偏重于骨干网络的设计,采用重骨干轻neck的设计理念,本文是采用了轻backbone,重neck的方式。该结构可进行不同空间尺度以及不同级别潜在语义的密集信息交换,。这种设计范式帮助检测器在网络的早期阶段以相同的优先级处理高级语义信息和低级空间信息,使其在检测任务中更有效,同时,该论文提出以S2D Chain为组合模块,构建light backbone,再以Queen Fuse和Skip Connect构建GFPN作为颈部模块,与以往检测器的backbone>neck(FLOPS)的构建方式不同,GiraffeDet的neck在参数量和计算量上远超backbone。
论文地址
参考

摘要

在传统的目标检测框架中,模型从骨干提取深层潜在特征,然后由颈部模块融合这些潜在特征,捕获不同尺度的信息。由于目标检测的对分辨率的要求比图像识别的要大得多,因此骨干网的计算成本往往占据了大部分推理成本。这种重骨干的设计范式在传统图像识别往目标检测发展时遗留了下来,但这种范式并不是针对目标检测的端到端优化设计。在这项工作中,我们证明了这种范式确实只能产生次优的目标检测模型。为此,我们提出了一种新的重颈设计范式,GiraffeDet,一种类似长颈鹿的有效物体检测网络。GiraffeDet 使用了一个非常轻的主干和一个非常深和大的颈部模块,这种结构可进行不同空间尺度以及不同级别潜在语义的密集信息交换。这种设计范式帮助检测器在网络的早期阶段以相同的优先级处理高级语义信息和低级空间信息,使其在检测任务中更有效。多个流行的检测基准测试评估表明,它始终优于以前的 SOTA 模型

1.introduction

在过去的几年中,基于深度学习的目标检测方法取得了显著的进展。尽管目标检测网络在架构设计、训练策略等方面变得越加强大,但检测对于large-scale变化的目标并没有改变例如,COCO数据集中最小的10%和最大的10%对象实例的缩放分别是0.024和0.472 (Singh & Davis, 2018),缩放几乎是20倍。这给使用最近的方法来处理如此大规模的变化带来了极大的挑战。为此,我们通过设计一个有效稳健的方法来解决这个问题。为了缓解由large-scale变化引起的问题,一种直观的方法是使用多尺度金字塔策略来进行训练和测试工作在图像金字塔的相同尺度上训练和测试探测器,并选择性地反向传播不同大小的物体实例的梯度,作为图像尺度的函数。虽然这种方法提高了大多数现有cnn检测器的检测性能,但它并不实用,因为图像金字塔方法需要处理每个不同比例的图像,计算比较昂贵此外,在使用预先训练的分类骨干时,分类和检测数据集之间的对象规模仍然是领域转移的另一个挑战
后来,提出了特征金字塔网络,近似图像金字塔的方式但成本更低。近期的研究仍然依赖于优越的主干设计,但这会使得高级特征与低级特征之间的信息交换不足。
提出特征金字塔网络以较低的计算代价来近似图像金字塔。目前的方法仍然依赖于较好的骨干设计,但缺乏高层次特征与低层特征之间的信息交流。例如,一些工作通过自底向上的路径扩展来增强整个特征层次,在底层精确定位信号,但这种自底向上的路径设计可能缺乏高层语义信息和低层空间信息的交换
根据以上挑战,本次任务提出以下两个问题:

1•在一个检测模型中,图像分类任务的主干是必不可少的吗?
2•哪些类型的多尺度表达对检测任务有效?

小结一下:
目前目标检测在large-scale变化的目标表现不佳,为此常规方法是采用金字塔结构,如图像金字塔或者特征金字塔的方式。图像金字塔在处理不同比例的图像时计算比较高昂,为此并不实用;特征金字塔虽然成本比图像金字塔低,但是存在高级特征与低级特征信息交换不足的问题。
抛出问题:1.backbone是否必不可少?哪些类型的多尺度表达对检测任务有效?

继续往下看:(重点在这:)

这两个问题促使我们设计一个包含两个子任务的新框架,即高效的特征降采样和充分的多尺度融合。首先,用于提取特征的传统骨干计算成本昂贵且存在领域偏移(domain-shift)问题一个可替代的轻量级骨干可以解决这些问题。其次,检测器学习足够的高层次语义特征和低层空间特征融合信息是至关重要的。基于以上动机,我们设计了一个类似长颈鹿的网络,命名为GiraffeDet,其见解如下:(1)一种可替代的轻量级骨干可以在不增加任何计算成本的情况下提取多尺度特征变换。(2)足够的跨尺度连接,即Queen- fusion,就像国际象棋中的Queen Piece路径,能够处理不同层次的特征融合。(3)根据设计的轻量级骨干网和灵活的FPN,我们为每个FLOPs级别提出了一个GiraffeDet家族。值得注意的是,实验结果表明我们的GiraffeDet家族在每个FLOPs级别上都达到了更高的准确率和更高的效率。

综上所述,我们的工作主要贡献如下:
•据我们所知,我们提出了第一个轻量级替代骨干网和灵活的FPN结合作为检测器。GiraffeDet系列由S2D-chain和Generalized-FPN组成,展示了最先进的性能。

•我们设计了轻量级的空间到深度链(S2D-chain),而不是传统的基于cnn的骨干,控制实验表明,在目标检测模式中,FPN比传统骨干更关键。

•在我们提出的Generalized-FPN(GFPN)中,提出了一种新的皇后融合作为我们的跨尺度连接方式,融合了以前和当前层的级别特征,log2n跳过层链路提供了更有效的信息传输,可以扩展到更深的网络。基于轻骨干和重Neck的模式,GiraffeDet家族在各种各样的FLOPs性能权衡中表现良好。特别是,使用多尺度测试技术,GiraffeDet-D29在COCO数据集上实现了54.1%的mAP,优于其他SOTA方法。

2.related work

通过学习尺度特征来识别目标是定位目标的关键。large-scale问题的传统解决方案主要还是基于改进的CNN网络。基于CNN的目标探测器主要分为两级探测器和一级探测器。近年来,主要的研究路线是利用金字塔策略,包括图像金字塔和特征金字塔。图像金字塔策略通过缩放图像来检测实例。例如,Singhetal在2018年提出了一种快速的多尺度训练方法,该方法对真实物体周围的前景区域和背景区域进行采样,进行不同尺度的训练。与图像金字塔方法不同,特征金字塔方法融合了不同尺度和不同语义信息层的金字塔表达。例如,PANet通过额外的自下而上的路径来增强特征金字塔网络顶部的特征层次结构。此外,NAS-FPN利用神经结构自动搜索来探索特征金字塔网络拓扑。我们的工作重点是特征金字塔策略,并提出了一种高级语义和低层次空间信息融合方法。一些研

### Features-Fused-Pyramid-Neck 的设计与性能优化分析 Features-Fused-Pyramid-Neck 是一种用于目标检测的特征融合架构,其核心目标是通过改进特征金字塔的设计,解决多尺度目标检测中的特征错位问题。该架构通过重新思考特征融合的方式,提升了检测的精度和效率[^1]。 #### 特征金字塔的设计目标 在目标检测任务中,多尺度目标的检测一直是技术难点之一。传统特征金字塔(如FPN)通过自上而下和横向连接的方式,将高层语义信息和低层空间信息进行融合,以增强多尺度目标的特征表示。然而,这种方法存在特征错位的问题,即不同层级的特征在空间上难以完全对齐,导致融合效果受限。Features-Fused-Pyramid-Neck 通过改进特征融合的设计,优化了这一问题[^1]。 #### 特征融合架构的改进 Features-Fused-Pyramid-Neck 的改进主要体现在以下几个方面: 1. **特征对齐机制**:引入了更精细的特征对齐技术,确保不同层级的特征在空间维度上能够精确对齐。这种对齐机制有效减少了特征错位带来的信息损失,从而提升了多尺度目标的检测精度[^1]。 2. **动态特征融合**:通过动态调整特征融合的权重,根据输入图像的内容自适应地选择最优的特征组合。这种方法不仅提高了模型的灵活性,还增强了其对不同场景的适应能力。 3. **轻量化设计**:为了提升实时性,Features-Fused-Pyramid-Neck 在保证性能的前提下,对网络结构进行了轻量化设计。例如,通过使用深度可分离卷积(Depthwise Separable Convolution)等技术,减少了计算量,从而提高了推理速度。 #### 性能优化 在性能优化方面,Features-Fused-Pyramid-Neck 通过以下方式提升了目标检测的效率和精度: 1. **多尺度特征提取**:通过多层级特征金字塔的设计,能够有效捕捉不同尺度的目标特征,从而提升小目标和大目标的检测性能。 2. **实时性优化**:通过轻量化设计和动态特征融合策略,减少了模型的计算复杂度,使得该架构能够在实时目标检测任务中表现出色。 3. **实验验证**:在多个目标检测数据集上进行了广泛的实验验证,结果表明 Features-Fused-Pyramid-Neck 在检测精度和推理速度方面均优于传统的特征金字塔架构。 #### 代码示例 以下是一个简化的 Features-Fused-Pyramid-Neck 的实现示例,展示了其核心特征融合模块的设计: ```python import torch import torch.nn as nn class FeatureFusedPyramidNeck(nn.Module): def __init__(self, in_channels_list, out_channels): super(FeatureFusedPyramidNeck, self).__init__() self.lateral_convs = nn.ModuleList() self.top_down_convs = nn.ModuleList() self.out_convs = nn.ModuleList() # 构建横向连接和自上而下连接 for in_channels in in_channels_list: lateral_conv = nn.Conv2d(in_channels, out_channels, 1) top_down_conv = nn.Conv2d(out_channels, out_channels, 3, padding=1) self.lateral_convs.append(lateral_conv) self.top_down_convs.append(top_down_conv) # 输出层卷积 for _ in range(len(in_channels_list)): out_conv = nn.Conv2d(out_channels, out_channels, 3, padding=1) self.out_convs.append(out_conv) def forward(self, inputs): # 横向连接 laterals = [lateral_conv(x) for x, lateral_conv in zip(inputs, self.lateral_convs)] # 自上而下传播 feature_maps = [] feature_map = laterals[-1] feature_maps.append(feature_map) for i in range(len(laterals) - 2, -1, -1): feature_map = torch.nn.functional.interpolate(feature_map, scale_factor=2, mode='nearest') feature_map = feature_map + laterals[i] feature_maps.append(feature_map) # 输出层处理 outputs = [out_conv(fm) for fm, out_conv in zip(feature_maps, self.out_convs)] return outputs ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值