スパースR-CNN:学習可能な提案によるエンドツーエンドのオブジェクト検出

この記事は、「新人クリエーションセレモニー」イベントに参加し、一緒にゴールドクリエーションの道を歩み始めました。

参考

mp.weixin.qq.com/s/NooqX7aTa…

紙のダウンロード:openaccess.thecvf.com/content/CVP…

コードのダウンロード:PeizeSun / SparseR-CNN:学習可能な提案によるエンドツーエンドのオブジェクト検出、CVPR2021(github.com)

RetinaNetおよびFasterR-CNNとのイノベーションの比較

image.png(a)ピクセルあたりK個のアンカーボックスがRetinaNetで直接繰り返されます。

(b)より高速なR-CNNは、W * H*KアンカーボックスからN個のアンカーボックスを選択します。

(c)この記事で提案する方法:N個のアンカーボックスを直接提供します。

概要

この論文は、オブジェクト検出のためのスパースアルゴリズム-スパースR-CNNを提案します。

現在のすべてのオブジェクト検出作業は、高密度のオブジェクト候補に依存しています。

ただし、このペーパーでは、手動で設計されたオブジェクトの提案のセット、合計Nを提案します。スパースR-CNNは、候補ターゲットの設計と多対1のラベル割り当てに関連するすべての作業を完全に回避します。さらに重要なことに、最終予測は、非最大抑制のための後処理なしで直接出力されます。SparseR-CNNは、困難なCOCOデータセットで確立された検出器ベースラインに匹敵する精度、実行時間、およびトレーニング収束パフォーマンスを示します。たとえば、22fpsで実行されるResNet-50FPNモデルを使用して標準の3倍のトレーニングスケジュールで45.0APを達成します。

紹介と関連作業

推論時間推論時間ヒューリスティック割り当てルール

スパースR-CNN

image.png An overview of Sparse R-CNN pipeline. The input includes an image, a set of proposal boxes and proposal features, where the latter two are learnable parameters. The backbone extracts feature map, each proposal box and proposal feature are fed into its exclusive dynamic head to generate object feature, and finally outputs classification and location Sparse R-CNN设计图概述。输入包括一个图像、一组提议框和提议特征,其中后两个是可学习的参数。主干提取特征图,将每个提议框和提议特征输入其专用动态头部,生成目标特征,最后输出分类和定位。

Saprse R-CNN由backbone network、a dynamic instance interactive head and two task-specific prediction layers共三部分组成。

  • 数据输入包括an image, a set of proposal boxes and proposal features
  • 使用FPN作为Backbone,处理图像
  • 下图中的Proposal Boxes: N*4是一组参数,跟backbone没啥关系
  • 下图中的proposals features和backbone也没啥关系

Backbone(Feature Pyramid Network (FPN))

backbone:基于Resnet的FPN提供多尺度特征图。

Learnable porposal box

  • These proposal boxes are represented by 4-d parameters ranging from 0 to 1.由一个4D数组 表示, 并且归一化到[0,1]的范围。
  • 基本不受初始化的影响
  • 可以看成是物体潜在位置的统计概率
  • 训练的时候可以更新参数

Learnable proposal feature

  • 之前的proposal box是一个比较简洁的方法来描述物体,但缺少了很多信息,比如物体的形状与姿态
  • proposal feature就是用来表示更多的物体信息。

Dynamic instance interactive head

给定N个提议框,Sparse R-CNN首先利用RoIAlign操作为每个框提取特征。然后,使用我们的预测头,使用每个框特征生成最终预测。受动态算法的启发,我们提出了动态实例交互头。每一个RoI特征都被输入到自己的专属头部,用于对象定位和分类,每个头部都以特定提议特征为条件。

  • 通过proposal boxes以及ROI方法获取每个物体的特征,然后与proposal feature结合得到最终预测结果
  • Head的数量与learnable box的数量相同,即head/learnable proposal box/learnable proposal feature一一对应
def dynamic_instance_interaction(pro_feats, roi_feats):
    # pro feats: (N, C)
    # roi feats: (N, S∗S, C)
    # parameters of two 1x1 convs: (N, 2 ∗ C ∗ C/4)
    
    dynamic_params = linear1(pro_features)
    
    # parameters of first conv: (N, C, C/4)
    param1 = dynamic_params[:, :C*C/4].view(N, C, C/4)
    
    # parameters of second conv: (N, C/4, C)
    param2 = dynamic_params[:, C*C/4:].view(N, C/4, C)
    
    # instance interaction for roi features: (N, S∗S, C)
    roi_feats = relu(norm(bmm(roi_feats, param1)))
    roi_feats = relu(norm(bmm(roi_feats, param2)))
    
    # roi feats are flattened: (N, S∗S∗C)
    roi_feats = roi_feats.flatten(1)
    
    # obj feats: (N, C)
    obj_feats = linear2(roi_feats)
    
    return obj_feats
复制代码

image.png

该图来自:mp.weixin.qq.com/s/NooqX7aTa…

Sparse R-CNN的两个显著特点就是sparse object candidates和sparse feature interaction,既没有dense的成千上万的candidates,也没有dense的global feature interaction。Sparse R-CNN可以看作是目标检测框架从dense到dense-to-sparse到sparse的一个方向拓展。

--------待补充

おすすめ

転載: juejin.im/post/7086657708459294757