DETR 系列 Mask Frozen-DETR: High Quality Instance Segmentation with One GPU 论文阅读笔记


写在前面

  这篇文章的亮点很明显,一个 GPU 就能跑起来!这种题目的构思方式值得学习。

一、Abstract

  本文旨在研究建立一个仅需最小训练时间和 GPU 的实例分割器,Mask Frozen-
DETR,能够将任何基于 DETR 的目标检测模型转化为一个实例分割模型。提出的方法仅需训练附加的轻量化 mask 网络,通过一个冻结的基于 DETR 的目标检测器在 Bounding box 内预测实例 mask。在 COCO 数据集上效果很好,仅需单张 V100 16G 卡即可进行训练。

在这里插入图片描述

二、引言

  首先指出实例分割的难点,最近的一些方法:Cascade Mask R-CNN、Mask DINO。这些方法通常以 ResNet-50、Swin-L 为 Backbone,需要大量的 GPU 时间来训练。
  本文表明现有的基于 DETR 的目标检测模型能够转化为实例分割模型。以 H \mathcal{H} H-DETR 和 DINO-DETR 为例,提出两个创新:设计一种轻量化的实例分割网络来有效利用冻结的 DETR 目标检测器的输出;论证本文提出的方法在不同尺度模型下的有效性。

三、相关工作

目标检测

  目标检测是个基础研究领域,涉及大量的工作:Faster R-CNN、Cascade R-CNN、YOLO、DETR、Deformable DETR、DINO-DETR、 H \mathcal{H} H-DETR。本文的方法建立在这些基于 DETR 的方法之上,实现 SOTA 性能的同时有着 10 倍的训练速度。

实例分割

  初始的实例分割方法基于 R-CNN 系列,先检测后分割的思想。例如 Mask R-CNN、 Casacde Mask R-CNN、HTC。有一些方法的设计比较简单:SOLO、QueryInst。有一些是基于 DETR 的方法:MaskFormer、Mask2Former、Mask-DINO。还有一些方法建立在 3D 实例分割的基础上,例如 SPFormer。

讨论

  大多数实例分割模型并未利用离线的目标检测模型的权重,因而需要大量的训练时间。本文的方法采用冻结的基于 DETR 的模型,并引入轻量化的实例分割头。下图是一些方法的比较:

在这里插入图片描述

四、本文的 方法

4.1 Baseline 设置

  采用 H \mathcal{H} H-DETR+ResNet50 作为 Baseline,并报道 H \mathcal{H} H-DETR+Swin-L 和 DINO-DETR+FocalNet-L 的对比性能。 H \mathcal{H} H-DETR+ResNet50 模型预训练在 Object365 数据集上,然后在 COCO 数据集上微调。
  首先基于目标检测模型的最后一层 Transformer 解码器层输出的 queries 得分进行排序,选择出 top~100 个目标 queries 用于 mask 预测。然后将这些 queries { q i ∣ q i ∈ R d } i = 1 N \{{\mathbf{q}_i|\mathbf{q}_i\in\mathbb{R}^\mathsf{d}\}}_{i=1}^N {qiqiRd}i=1N 1 / 4 1/4 1/4 原始分辨率的图像特征 F ⁡ ∈ R H W 16 × d {\operatorname*{F}}\in\mathbb{R}^{\frac{\mathsf{H}\mathsf{W}}{16}\times\mathsf{d}} FR16HW×d 相乘,得到实例分割 masks:
F = C 1 + interpolate ( E ) M i = interpolate ( reshape ( Sigmoid ( q i F ⊤ ) ) ) \begin{aligned} \text{F}& =\mathrm{C}_1+\text{interpolate}(\mathbf{E}) \\ \mathrm{M}_{i}& =\text{interpolate}(\text{reshape}(\text{Sigmoid}(\mathbf{q}_i\mathbf{F}^\top))) \end{aligned} FMi=C1+interpolate(E)=interpolate(reshape(Sigmoid(qiF)))
其中 C 1 ∈ R H W 16 × d \mathrm{C}_1\in\mathbb{R}^{\frac{\mathsf{H}\mathsf{W}}{16}\times\mathsf{d}} C1R16HW×d 表示 Backbone 第一阶段输出的特征图, E ∈ R H W 64 × d \mathbf{E}\in\mathbb{R}^{\frac{\mathsf{H}\mathsf{W}}{64}\times\mathsf{d}} ER64HW×d 表示 Transformer 编码器输出的 1 / 8 1/8 1/8 原始分辨率的特征图。 H \mathsf{H} H W \mathsf{W} W d \mathsf{d} d 分别表示输入图像的高、宽、特征隐藏维度。 M i ∈ R H W \mathrm{M}_{i}\in\mathbb{R}^{\mathsf{H}\mathsf{W}} MiRHW 表示最后预测的 mask 概率图。下图为整体路线图:

在这里插入图片描述
  接下来计算置信度得分,从而反应 mask 的质量:
s i = c i × s u m ( M i [ M i > 0.5 ] ) s u m ( [ M i > 0.5 ] ) \mathrm{s}_{i}=c_{i}\times\frac{\mathrm{sum}(\mathbf{M}_{i}[\mathbf{M}_{i}>0.5])}{\mathrm{sum}([\mathbf{M}_{i}>0.5])} si=ci×sum([Mi>0.5])sum(Mi[Mi>0.5])其中 c i c_i ci 表示第 i i i 个目标 query 的分类得分。
  接下来在预测的 Bounding boxes 内采用 RoIAlign 来聚合用于定位的区域特征图:
R i = r e s h a p e ( R o I A l i g n ( r e s h a p e ( F ) , b i ) ) \mathbf{R}_i=\mathrm{reshape}(\mathrm{RoIAlign}(\mathrm{reshape}(\mathbf{F}),\mathbf{b}_i)) Ri=reshape(RoIAlign(reshape(F),bi))其中 R i ∈ R H W × d \mathbf{R}_i\in\mathbb{R}^{\mathsf{H}\mathsf{W}\times\mathsf{d}} RiRHW×d b i \mathbf{b}_i bi 表示根据 q i \mathbf{q}_i qi 预测的 bouding box。默认设置 h = 32 \mathsf{h}=32 h=32 w = 32 \mathsf{w}=32 w=32。之后计算实例分割 mask:
M i r = paste ( interpolate ( reshape ( Sigmoid ( q i R i ⊤ ) ) ) ) \mathbf{M}_i^r=\text{paste}(\text{interpolate}(\text{reshape}(\text{Sigmoid}(\mathbf{q}_i\mathbf{R}_i^\top)))) Mir=paste(interpolate(reshape(Sigmoid(qiRi))))首先将预测的区域 masks 变形和缩放为原始图像尺寸,并将其粘贴到一个空的 mask 上。同样以类似的方式基于 M i r \mathbf{M}_i^r Mir 来计算置信度得分。

结果

在这里插入图片描述
  根据上表 Baseline 的实验,表明可以从三个方面来提升模型的性能:图像特征编码器的设计、box 区域特征编码器的设计、query 特征编码器的设计。
  接下来在消融实验中通过冻结整体的目标检测器网络,仅仅微调附加引入的参数,约 6 个 epoch 的训练。

实验设置

   AdamW 优化器,初始学习率 1.5 × 1 0 − 4 1.5\times10^{-4} 1.5×104 β 1 = 0.9 \beta_1 =0.9 β1=0.9 β 2 = 0.999 \beta_2 =0.999 β2=0.999,权重衰减 5 × 1 0 − 5 5\times10^{-5} 5×105,训练模型 88500 次,即 6 个 epoch,在 0.9 和 0.95 个迭代次数时,学习率衰减 10%。数据预处理的步骤与 Deformable DETR 相同,Batch_size 8,所有的实验均在单 V100 16G 卡上进行,评估指标 COCO:AP,AP50,AP75,APS,APM,APL

4.2 图像特征编码器

  首先整合一个可训练的图像特征编码器,将图像特征图转化为一个更合适的特征空间用于实例分割 masks,下图表明了整体的路线图:

在这里插入图片描述
  如上图所示,在 Transformer 编码器中应用图像特征编码器到特征图 E \mathbf{E} E 中:
F = C 1 + interpolate ( F e ( E ) ) \mathrm{F}=\mathrm{C}_1+\text{interpolate}(\mathcal{F}_e(\mathrm{E})) F=C1+interpolate(Fe(E))其中 F e \mathcal{F}_e Fe 表示图像特征编码器,旨在同时提炼所有目标 queries 的图像特征图。其结构由三种类型的卷积或 Transformer block 块组成。

Deformable encoder block

  采用多尺度 deformable encoder 的设计堆叠多尺度 deformable encoder blocks,从而增强多尺度特征图:
E = [ E 1 , E 2 , E 3 , E 4 ] F e ( E ) = MultiScaleDeformable E n c ( ∣ E 1 , E 2 , E 3 , E 4 ∣ ) \begin{aligned} \text{E}& =[\mathbf{E}_1,\mathbf{E}_2,\mathbf{E}_3,\mathbf{E}_4] \\ \mathcal{F}_e(\mathbf{E})& =\text{MultiScaleDeformable}\mathrm{Enc}(|\mathbf{E}_1,\mathbf{E}_2,\mathbf{E}_3,\mathbf{E}_4|) \end{aligned} EFe(E)=[E1,E2,E3,E4]=MultiScaleDeformableEnc(E1,E2,E3,E4)其中 E 1 \mathbf{E}_1 E1 E 2 \mathbf{E}_2 E2 E 3 \mathbf{E}_3 E3 E 4 \mathbf{E}_4 E4 分别表示目标检测器中 Transformer 编码器的不同尺度的特征图。每个多尺度 deformable encoder 遵循着 MSDeformAttn → LayerNorm → FFN → LayerNorm 的设计,而 FFN 采用 Linear → GELU → Linear 的设计。

Swin Transformer encoder block

  沿用 Swin Transformer 的设计,应用堆叠的多个 Swin Transformer blocks 在最高分辨率的特征图 E 1 \mathbf{E}_1 E1 上:
F e ( E 1 ) = SwinTransformer E n c ( E 1 ) \mathcal{F}_e(\mathbf{E}_1)=\text{SwinTransformer}\mathrm{Enc}(\mathbf{E}_1) Fe(E1)=SwinTransformerEnc(E1)其中每个 Swin Transformer block 都是沿着 LayerNorm → W-MSA → LayerNorm → FFN 的路线。W-MSA 表示滑动窗口的多头自注意力操作。

ConvNext encoder block

  应用 ConvNext encoder block 在 Transformer encoder 的特征图上:
F e ( E 1 ) = ConvNextBlock ( E 1 ) \mathcal{F}_e(\mathbf{E}_1)=\text{ConvNextBlock}(\mathbf{E}_1) Fe(E1)=ConvNextBlock(E1)其中每个 ConvNext block 沿着 DWC → LayerNorm → FFN 的路线,DWC 表示大尺度卷积核 7 × 7 7\times7 7×7 的逐深度卷积。

结果

在这里插入图片描述

4.3 Box 特征编码器

  Box 特征编码器路线图如下图所示:

在这里插入图片描述
如上图所示,在 R i \mathbf{R}_i Ri 中简单的添加一个额外的 transformer 层:
R i = F b ( R i ) \mathbf{R}_i=\mathcal{F}_b(\mathbf{R}_i) Ri=Fb(Ri)与图像特征编码器类似,研究不同的 box 特征编码器的结构对于模型性能的影响。

通道映射器

  使用通道映射器作为一个简单的线性层来减少 F ∈ R H W 16 × d \mathbf{F}\in{\mathbb{R}}^{\frac{\mathsf{HW}}{16}\times\mathsf{d}} FR16HW×d 的特征通道维度,并将 box 区域特征编码器应用在更新后的特征图上。

结果

在这里插入图片描述
在这里插入图片描述

4.4 Query 特征编码器

Object-to-Object attention

  目标之间的彼此接近可能会导致多个实例在同一个 Bounding box 内,于是添加 Object-to-Object 注意力来辅助 Object Query 彼此间能够区分开来。具体来说,使用多头注意力机制来处理 Queries:
[ q 1 , q 2 , ⋯   , q N ] = SelfAttention ( [ q 1 , q 2 , ⋯   , q N ] ) [\mathbf{q}_1,\mathbf{q}_2,\cdots,\mathbf{q}_N]=\text{SelfAttention}([\mathbf{q}_1,\mathbf{q}_2,\cdots,\mathbf{q}_N]) [q1,q2,,qN]=SelfAttention([q1,q2,,qN])

Box-to-object attention

  在冻结的基于 DETR 的目标检测器中,目标 queries 用于执行目标检测并处理整个图像特征,而非单个的区域特征。于是引入 Box-to-object 注意力将 queries 转化为适应分割任务的 queries:
q i = CrossAttention ( q i , R i ) \mathbf{q}_i=\text{CrossAttention}(\mathbf{q}_i,\mathbf{R}_i) qi=CrossAttention(qi,Ri)其中目标 queries 通过指代的 box 区域特征来更新。

FFN

  FFN对调整 Object query 表示可能也有一个辅助作用。

结果

在这里插入图片描述
  结论:仅采用 Box-to-object 注意力的设计就可以了。

4.5 其他的提升

在采样像素点上的 Mask Loss

  在最终损失的计算过程中,引入采样点的 Mask 损失。具体来说,考虑 N N N 个点,过采样率 k   ( k > 1 ) k~(k>1) k (k>1),采样率 β   ( β ∈ [ 0 , 1 ] ) \beta~(\beta\in[0,1]) β (β[0,1])。从输出的 mask 中随机采样 k N kN kN 个点,并从这些采样点中随机选择 β N \beta N βN 个点。然后随机采样其他的 ( 1 − β ) N (1-\beta) N (1β)N 个点,计算这 N N N 个点的损失。

Mask 打分

  由于冻结的 DETR 输出的分类得分不能反应分割 mask 的质量,于是引入 Mask 打分来调整分类分数。具体来说, mask 打分头以 mask 和 box 区域特征作为输入,来预测输出的 masks 和 GT 的 IoU 得分:
i o u i = M L P ( F l a t t e n ( C o n v ( C a t ( M i , R i ) ) ) ) \mathrm{iou}_i=\mathrm{MLP}(\mathrm{Flatten}(\mathrm{Conv}(\mathrm{Cat}(\mathbf{M}_i,\mathbf{R}_i)))) ioui=MLP(Flatten(Conv(Cat(Mi,Ri))))其中 Cat、Conv、MLP 分别表示拼接操作、卷积层、多层感知机。通过 mask 打分头预测出的 iou 得分用于调整分类分数:
s i = c i i o u i \mathrm{s}_i=\mathrm{c}_i\mathrm{i}\mathrm{o}\mathrm{u}_i si=ciioui其中 s i s_i si 为输出 mask 的置信度得分。

用于 Backbone 特征的 Neck 结构

  Backbone 第一阶段输出的特征 C 1 ∈ R H W 16 × d \mathbf{C}_1\in\mathbb{R}^{\frac{\mathsf{HW}}{16}\times\mathsf{d}} C1R16HW×d 可能不会包含充分的语义信息。于是引入一个简单的 neck 块来编码语义信息到高分辨率的特征图 C 1 \mathbf{C}_1 C1
C 1 = G N ( P W C o n v ( C 1 ) ) \mathbf{C}_1=\mathrm{GN}(\mathrm{PWConv}(\mathbf{C}_1)) C1=GN(PWConv(C1))其中 G N \mathrm{GN} GN P W C o n v \mathrm{PWConv} PWConv 分别指组正则化和逐点卷积。

结果

在这里插入图片描述

五、与 SOTA 的比较

在这里插入图片描述

六、消融实验与分析

RoIAlign 的输出尺寸

在这里插入图片描述

训练的 Epoch

在这里插入图片描述

大尺度抖动

在这里插入图片描述

实例 mask 头的设计

在这里插入图片描述

Bach Size

在这里插入图片描述

编码器特征图的层索引

在这里插入图片描述

图像特征编码器深度和 box 特征编码器的影响

在这里插入图片描述

微调 DETR 的效果

在这里插入图片描述

定性结果

在这里插入图片描述

七、结论

  本文详细展示了如何采用最小的训练时间和成本,将离线的基于 DETR 的目标检测模型转化为实例分割模型。实验表明很有效。

写在后面

  拖了这么久终于写完这篇博文了。文章思路是借鉴 Parameter-Efficiency 的思想,引入新的结构来微调原有的模型,还是有点东西的。尤其是实验非常充足。缺点也有,Fig1 论文中并未引用;消融实验很多没必要全部分开,可以合并几个。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乄洛尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值