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

2023-08-27 19:45:18


写在前面

  这篇文章的亮点很明显,一个 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 论文中并未引用;消融实验很多没必要全部分开,可以合并几个。

更多推荐

基于Java电动车上牌管理系统计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

基于Java电脑测评系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

1、RocketMQ概述

第1章RocketMQ概述一、MQ概述1、MQ简介MQ,MessageQueue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。2、MQ用途从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点。限流削峰MQ可以

从一到无穷大 #16 ByteSeries,思考内存时序数据库的必要性

本作品采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可。本作品(李兆龙博文,由李兆龙创作),由李兆龙确认,转载请注明版权。引言在[3]中我基于Gorilla讨论了时序数据库设置cache的可行性,最后得出结论:RAM去换实时查询的高效,显著增加成本的同时增加系统复杂性。但是如果换个思路,缓存即为内

大数据开发中常用组件服务的集群管理脚本整理集合

大数据开发常用脚本整理集合大数据环境相关脚本bash运行模式说明创建shell脚本目录配置hostsSSH自动配置脚本文件同步、复制工具rsync基本用法文件同步脚步命令执行脚本节点循环简化大数据组件相关脚本Hadoop集群脚本Zookeeper集群脚本Kafaka集群脚本Flume集群脚本大数据环境相关脚本bash运

Redis分布式锁的实现方式、实现原理

目录一、分布式锁的重要性与挑战1.1分布式系统中的并发问题竞态条件数据不一致死锁二、分布式锁的基本原理与实现方式2.1分布式锁的基本概念2.2基于数据库的分布式锁原理与实现方式优缺点2.3基于缓存的分布式锁原理与实现方式优缺点三、Redis分布式锁的实现与使用3.1使用SETNX命令实现分布式锁3.2设置超时与防止死锁

前端JavaScript页面生命周期: DOMContentLoaded, load, beforeunload, unload

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.DOMContentLoaded1.1属性1.2API1.3应用场景1.4示例代码2.load2.1属性2.2API2.3应用场景3.beforeunload3.1属性3.2API3.3应用场景3.4示

Python爬虫在电商数据获取与分析中的应用

前言随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。一、准备工作在开始编写爬虫程序之前,我们需要准备

爬虫技术对携程网旅游景点和酒店信息的数据挖掘和分析应用

导语爬虫技术是一种通过网络爬取目标网站的数据并进行分析的技术,它可以用于各种领域,如电子商务、社交媒体、新闻、教育等。本文将介绍如何使用爬虫技术对携程网旅游景点和酒店信息进行数据挖掘和分析,以及如何利用Selenium库和代理IP技术实现爬虫程序。概述携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假

CSS的学习

1.认识CSSCSS叫做"层叠样式表"“层叠样式表”样式-->大小,位置,间距,颜色,字体,表框背景…统称为"样式",描述了一个网页长什么样子~层叠-->针对一个html的元素/标签,可以同时应用多组CSS样式~~多组样式会叠加在一起~~CSS描述的是页面的样式,具体来说,就是描述一个任意一个页面的元素,大小/位置/字

【解刊】IEEE旗下Trans系列,中科院1区TOP,国人占比79.388%排名第一!(附IEEE名单)

计算机领域•好刊解读IEEETransactionsonCybernetics出版社:IEEEISSN:2168-2267eISSN:2168-2275检索数据库:SCIE&EI双检数据库检索年份:2013年出刊频率:月刊,一年一卷,一卷12期,最新一期Issue10•Oct.-2023影响因子(2022):11.8影

热文推荐