深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现
GiraffeDet: A Heavy-Neck Paradigm for Object Detection
PDF: ​​​https://arxiv.org/pdf/2202.04256.pdf​​​ PyTorch代码: ​​https://github.com/shanglianlm0525/CvPytorch​​ PyTorch代码: ​​https://github.com/shanglianlm0525/PyTorch-Networks​

1 概述

GiraffeDet 使用了一个非常轻的主干和一个非常深和大的颈部模块,这种结构可进行不同空间尺度以及不同级别潜在语义的密集信息交换。这种设计范式帮助检测器在网络的早期阶段以相同的优先级处理高级语义信息和低级空间信息,使其在检测任务中更有效。

2 GiraffeDet

GiraffeDet包含轻量space-to-depth chain、Generalized-FPN以及预测网络,延续了一阶段检测设计范式, 可以更高效、更充分的多尺度信息交换。

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_pytorch

2-1 Space-to-Depth Chain (S2D Chain)

S2D 操作如下,S2D将更多的空域信息移动到深度维度,同时可以起到无参下采样作用。

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_2d_02


Pytorch代码:

def space2depth(x, size=(2, 2)):
b, c, h, w = x.shape

rh, rw = size
oh, ow = h * rh, w * rw
oc = c // (rh * rw)

# view
x = x.view(b, oc, rh, rw, h, w)
x = x.permute(0, 1, 4, 5, 2, 3).contiguous()
# flatten
x = x.view(b, oc, oh, ow)
return

Space-to-Depth Chain(S2D Chain)作为轻量骨干网络,它包含两个 3x3 卷积与堆叠S2D-chain模块。具体来说, 3x3 卷积用于初始的下采样并引入更多非线性变换;每个S2D-chain模块包含一个S2D层与一个 1x1 卷积。1x1卷积用于通道相关池化以生成固定维度特征。

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_pytorch_03

2-2 Generalized-FPN

下图为FPN,PANet,BiFPN,GFPN的对比,可以看出FPN架构仅聚焦于特征融合,缺少了块内连接。

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_深度学习_04


跨尺度融合Queen-fusion:

  • Queen-fusion不仅包含跳层连接,同时还包含跨尺连接以克服大尺度变化。
  • 采用双线性插值与最大值池化进行特征上采样与下采样。
  • 深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_pytorch_05

2-3 GiraffeDet

下图给出了S2D chain-BiFPN-D29以及S2D-chain GFPN-D11的架构示意图

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_深度学习_06

3 Experimental

在具体实现方面,GiraffeDet采用了GFocalV2作为检测头,采用ATSS进行标签分配。为增强从头开始训练的稳定性,我们采用了多尺度训练。

深度学习论文: GiraffeDet: A Heavy-Neck Paradigm for Object Detection及其PyTorch实现_pytorch_07