FoLR:Focus on Local Regions for Query-based Object Detection论文学习笔记

论文地址:https://arxiv.org/abs/2310.06470

自从DETR问询式检测器首次亮相以来,基于查询的方法在目标检测中引起了广泛关注。然而,这些方法面临着收敛速度慢和性能亚优等挑战。值得注意的是,在目标检测中,自注意力机制经常因其全局聚焦而妨碍了收敛。为了解决这些问题,作者提出了FoLR,一种仅包含解码器的类似Transformer的架构。作者通过隔离不相关目标之间的连接来增强自注意力机制,使其聚焦于局部区域而不是全局区域。作者还设计了自适应采样方法,从特征图中基于查询的局部区域提取有效特征。此外,作者采用了一种解码器的回溯策略,以保留先前的信息,然后使用特征混合器模块来融合特征和查询。实验结果表明,FoLR在基于查询的检测器中表现出卓越的性能,具有卓越的收敛速度和计算效率。

1. INTRODUCTION

        通用目标检测旨在定位和分类图像中的现有目标,并使用矩形边界框对它们进行标记以显示存在的置信度。这些方法的框架主要可以分为两种类型:一阶段方法,如SSD和YOLO,以及多阶段检测器,如Faster R-CNN。最近,基于Transformer的目标检测器引起了关注,DETR引入了Transformer的编码器-解码器模块到目标检测中。与传统检测器不同,DETR消除了对Anchor Box设计的需求,依赖于一组可学习的向量,称为目标查询,用于检测。然而,DETR在收敛速度慢和性能问题方面面临挑战。具体来说,在COCO 2017数据集上取得与以前检测器相媲美的结果需要DETR训练超过500个Epoch,而Faster R-CNN通常只需要12个Epoch。

        为了应对这一挑战,一些研究已经提出了解决这些问题的方法。然而,这些方法往往引入了大量的额外参数,增加了网络的大小,显著提高了训练成本。因此,在收敛速度和计算复杂性之间取得适当平衡仍然是一个挑战。此外,包含全局信息的注意力机制可以快速建立不相关目标之间的关联,对算法的收敛产生负面影响。这促使作者对全局信息的注意力机制进行了研究和增强。

        在本文中,作者提出了FoLR,这是一种旨在解决上述挑战的新型基于查询的检测器。总之,作者的工作做出了以下贡献:

  • 引入FoLR,这是一种新型的基于查询的目标检测方法,具有简化的解码器架构,可以增强自注意力与局部区域的交互。

  • 设计和实现了Feature Mixer模块和基于DCN的自适应采样方法,以增强特征和查询之间的交互。此外,作者采用“回顾”策略来保留在先前阶段生成的数据。

  • 通过在COCO数据集上的实验结果展示了FoLR的卓越性能,它有效地克服了传统方法在收敛速度缓慢和计算成本高的限制。

2. RELATED WORK

这部分跳过......

3. METHOD

3.1. Overview

在本节中,作者详细介绍了作者的基于查询的检测器FoLR。FoLR是一个完全的解码器架构,包括以下几个关键组件:

  • 带有局部区域的自注意力:该模块增强了查询的描述能力,代表目标的位置和语义信息。同时,它旨在减轻不相关查询之间的负面关系。

  • 自适应采样方法(ASM):它有助于根据查询的位置从多尺度特征图中自适应地采样特征。

  • 特征混合器:该组件促进了在ASM中采样的特征与查询之间的互动,实现了有效的信息融合。

  • 预测Head:这些Head负责完成分类和回归任务。

这些组件的相互作用塑造了FoLR的整体架构,赋予其有效提取特征和检测目标的能力。架构的视觉表示如图3所示。此外,FoLR采用了受Cascade R-CNN启发的多阶段细化策略。查询向量可以在每个后续阶段迭代地进行细化,以增强目标检测的准确性,如图2所示。

解耦分类和定位 在本文提出的方法中,作者利用了查询的概念,它合并了每个目标的语义和位置信息,就像Sparse RCNN等基于Transformer的算法中所看到的那样。先前的研究表明,将查询分解为这两个向量显著提高了模型的识别效率。作者通过将查询分解为两个不同的向量来扩展这种方法:内容向量(content vector)和边界框向量(bounding box vector)

损失 模型的损失,采用DETR方法计算,包括用于预测分类的Focal Loss(L_{cls}),用于预测框坐标的L1损失(L_{L1})和GIoU(L_{giou})。总损失如下:

3.2. Self-Attention with Local Regions

        自注意力是Transformer样式方法中常用的机制,用于增强查询的描述能力。它有助于在序列内建立关系。在目标检测任务中,自注意力增强了每个查询与其他查询之间的连接,增强了内容向量的描述能力。然而,作者的研究发现,这种具有全局焦点的注意力机制甚至建立了不相关查询之间的连接,如图1所示。这阻碍了检测任务,对模型产生了负面影响。

        为了使模型能够识别和屏蔽负面连接,作者鼓励自注意力集中在局部区域。首先,作者使用方程2计算每个查询与其他查询之间的IoF(帧交集 (Intersection of Frame))矩阵。如果矩阵元素的值低于指定的阈值ε,作者将其替换为一个较大的负数。这表示该信息对于自注意力是有害的,应在后续操作中排除。

其中,\beta \in R(N_{q},N_{q})ij索引,N_{q}是查询的数量,σ是一个设置为10^{-7}的小常数,ε是从间隔[0,1]中取的一个常数。

3.3. Extract Multi-Scale Features

为了增强每个查询的有效性,从每个输入图像的Backbone生成的有意义和丰富的特征是至关重要的。在本节中,作者介绍了一种受可变卷积网络启发的自适应采样方法来提取特征。

Adaptive Sampling Method (ASM) 给定第i个边界框,作者使用以下方程来生成第j个对应的采样点:

其中,Q代表内容向量。\Delta x_{ij}\Delta y_{ij}表示第j个采样点相对于第i个边界框的中心点(xc_{i},yc_{i})的偏移,w_{i}h_{i}分别表示第i个边界框的宽度和高度。 

Focus on Local Regions. 

现在作者已经在特征图上获得了采样点,Sparse RCNN和AdaMixer的下一步涉及与查询交互地融合这些采样点。然而,作者认为以这种方式收集的特征是从特征图派生的,而不是从查询派生的。

与DETR的解码器在目标查询上应用位置编码类似,作者的方法旨在改进收集的采样点,以更好地与查询集成。在这里,作者使用线性层生成的一组参数来增强采样点:

在作者的方法中,作者采用双线性插值方法来处理采样点的小数坐标。此外,作者采用了类似于自注意力中使用的多头机制的策略,以增强采样点的多样性。 

具体来说,作者将特征图的维度,表示为d,分成N_{h}个Head,其中每个头分配d/N_{h}个维度。这种划分确保每个头捕捉到特征的不同方面。对于本研究,作者保持d = 256和N_{h}= 4。

实际上,作者在每个特征图级别的每个查询中生成N_{s}个采样点,总共产生了LN个采样点。然而,不同查询生成的采样点或不同特征图中相同查询生成的采样点不应具有相同的重要性。作者为第i个查询分配自适应和可学习的权重,权重方法如下:

在这里,S表示每个查询对应的边界框面积,计算为其宽度和高度的乘积。形状为R(L,N_{h} \times N_{s})W_{i}表示每个查询在特征图的L个级别上的权重。

3.4. Feature Mixer

采样的多尺度特征与内容向量之间的相互作用在目标检测中至关重要。受MLPmixer和AdaMixer的启发,作者引入了Feature Mixer,一个MLP模块,用于增强这种交互作用。按照MLPmixer的方法,作者使用内容查询来训练两个MLP网络,用于混合采样特征的最后两个维度。然后将结果转换成内容查询的形状,并将其添加到内容查询中,如图3所示。

在作者的设计中,作者在每个查询和采样特征之间建立了直接连接,确保每个采样特征与其相应的查询进行交互。这个过程消除了无效的bins,生成了最终的目标特征。为了保持轻量级设计,作者使用两个连续的1×1卷积和GELU激活函数进行交互。这些卷积的参数是从相应的内容向量生成的。

4. EXPERIMENTS

4.3. Main Result

最终的结果如表1所示。值得注意的是,FoLR在平均精度(AP)方面优于密集检测器,使用ResNet-50和ResNet-101Backbone分别获得42.6 AP(与40.3 AP相比)和43.5 AP(与42.0 AP相比)。

此外,FoLR在基于查询的检测器中获得了相对较高的分数,分别使用ResNet-50和ResNet-101Backbone达到46.7 AP和47.7 AP。此外,FoLR在其他指标(包括小目标准确性和计算成本)方面也表现出色。这些结果提供了有力的证据,表明FoLR在复杂性和性能之间有效地取得了平衡。

表2对比了FoLR和COCO 2017测试开发数据集上其他方法的结果。在使用ResNet-50和ResNet-101作为Backbone时,FoLR分别获得了47.2和48.1的AP分数。这些显著的结果进一步证明了FoLR的卓越性能也可以扩展和适应其他数据集。

此外,如图4所示,作者通过与其他基于查询的检测器进行比较,全面分析了FoLR的收敛速度。结果清楚地表明,FoLR在训练的各个阶段都在收敛速度方面优于基于查询的检测器。具体而言,FoLR在使用更短的36个时期的training schedule时,实现了卓越的准确性,达到了46.7 AP(相对于可变形DETR的44.5 AP)。

4.4. Ablation Studies

在这里,作者还进行了消融实验,以评估FoLR中模块的有效性。由于计算约束,作者对这些实验使用了ResNet-50Backbone和1×training schedule。

Design of Attention with Local Regions. 作者进行了额外的实验,验证了FoLR方法中注意力模块的有效性。不同的ε值表示对局部区域的关注程度不同。具体来说,当ε=0时,意味着不应用局部区域策略。同时,作者在不同阶段的解码器中分配了不同的ε值。作者观察到,在最后三个阶段,ε分别为0.01、0.1和0.2时,算法显示出0.5 AP的提高。结果如表3所示。

Design of Adaptive Sampling Method. 作者还比较了着重关注局部区域策略与不使用此策略的结果。表4中的结果表明,着重关注局部区域策略提高了0.7 AP的性能。同时,N_{s}的选择影响了FoLR的收敛速度和所需的计算资源。为了在性能和计算负荷之间取得平衡,作者在[24, 48]范围内以8为步长进行了不同N_{s}值的实验。表5中的结果表明,N_{s}=32可以在性能和计算负载之间取得良好的平衡。

Look-Back Strategy Validation. 图4中的实验结果表明,使用回溯策略相对于没有回溯策略,准确性提高了0.4 AP。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8实战-总结44

Java8实战-总结44 CompletableFuture:组合式异步编程Future 接口Future 接口的局限性使用 CompletableFuture 构建异步应用 CompletableFuture:组合式异步编程 最近这些年,两种趋势不断地推动我们反思我们设计软件的方式。第一种趋势和应用运…

js遍历数组和对象的常用方法

遍历数组的常用方法 for循环遍历&#xff1a;使用最广泛的方法&#xff0c;通过下标访问每一个数组元素。 const arr [1, 2, 3, 4, 5]; for(let i0; i<arr.length; i) {console.log(arr[i]); }forEach遍历&#xff1a;数组的forEach()方法可以遍历每个元素&#xff0c;对每…

微信小程序设计之主体文件app-wxss/less

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

注解配置SpringMVC

文章目录 目的1、创建初始化类&#xff0c;代替web.xml2、创建SpringConfig配置类&#xff0c;代替spring的配置文件3、创建WebConfig配置类&#xff0c;代替SpringMVC的配置文件4、测试功能 目的 使用配置类和注解代替web.xml和SpringMVC配置文件的功能 1、创建初始化类&…

STM32F4X之中断二

一、外部中断 外部中断&#xff1a;外部中断的中断是相对于外部中断控制器&#xff08;EXTI&#xff09;来说&#xff0c;如下图所示&#xff1a; EXTI掌管着23根中断线&#xff0c;具体分布图下&#xff1a; 16根连接GPIO口&#xff0c;如下图&#xff1a; 所有的0口连接到中…

ORACLE表空间说明及操作

ORACLE 表空间作用 数据存储&#xff1a;表空间是数据库中存储数据的逻辑结构。它提供了用于存储表、索引、视图、存储过程等数据库对象的空间。通过划分数据和索引等对象的存储&#xff0c;可以更好地管理和组织数据库的物理存储结构。性能管理和优化&#xff1a;通过将不同类…

餐饮外卖小程序商城的作用是什么

随着互联网及线上餐饮的发展趋势&#xff0c;行业洗牌正在加速&#xff0c;并且对餐饮连锁门店提出更高要求&#xff0c;餐饮数字化转型加快&#xff0c;积极发展线上经营是不少餐饮商家的首选。这其中&#xff0c;餐饮外卖商城成为很多餐饮品牌的线上经营品牌&#xff0c;也是…

内核进程初始化和创建

task_struct 1.进程的状态 分时技术进行多进程调度 重点&#xff1a;进程的创建是如何的&#xff1f; linux在初始化的过程中那个会进行0号进程的创建&#xff0c;fork sched_init(); 做了什么 内核态 不可抢占 用户态 可以抢占 move_to_user_mode(); 把内核状态切换到…

JackSon工具类

JackSon工具类 一、简介 Jackson 是当前用的比较广泛的&#xff0c;用来序列化和反序列化 json 的 Java 的开源框架。 Jackson 的核心模块由三部分组成&#xff1a; jackson-core&#xff0c;核心包&#xff0c;提供基于"流模式"解析的相关 API&#xff0c;它包括…

VR全景应用广泛体现在哪里?有何优势?

VR全景作为一种新型营销方式&#xff0c;正在逐渐走进人们的视线&#xff0c;它区别于以往单一角度的照片和视频&#xff0c;VR全景制作显得更加直观、更加真实、更加生动。VR全景通过VR技术将所拍摄的图片变成720度可观看的场景模式&#xff0c;把产品的特色以及魅力整体呈现展…

封装axios的两种方式

作为前端工程师&#xff0c;经常需要对axios进行封装以满足复用的目的。在不同的前端项目中使用相同的axios封装有利于保持一致性&#xff0c;有利于数据之间的传递和处理。本文提供两种对axios进行封装的思路。 1. 将请求方式作为调用参数传递进来 首先导入了axios, AxiosIn…

对长度为n的顺序表L,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中的所有值为x的数据元素

对长度为n的顺序表L&#xff0c;编写一个时间复杂度为O(n)&#xff0c;空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中的所有值为x的数据元素 算法思路&#xff1a; 用count标记遇到x的次数&#xff0c;每次遇到x&#xff0c;count 遇到非x的元素&#xff0c;把它前移…

vue3后台管理系统之顶部tabbar组件搭建

1.1静态页面搭建 <template><div class"tabbar"><div class"tabbar_left"><!-- 面包屑 --><Breadcrumb /></div><div class"tabbar_right"><!-- 设置 --><Setting /></div></di…

自动驾驶的未来展望和挑战

自动驾驶技术是一项引人瞩目的创新&#xff0c;将在未来交通领域产生深远影响。然而&#xff0c;随着技术的不断演进&#xff0c;自动驾驶也面临着一系列挑战和障碍。本文将探讨自动驾驶的未来发展方向、技术面临的挑战&#xff0c;以及自动驾驶对社会和环境的潜在影响。 自动驾…

封装一个vue3 Toast组件,支持组件和api调用

先来看一段代码 components/toast/index.vue <template><div v-if"isShow" class"toast">{{msg}}</div> </template><script setup> import { ref, watch } from vue const props defineProps({show: {type: Boolean,def…

docker搭建个人镜像仓库

docker搭建个人镜像仓库 安装registry mkdir docker-registry cd docker-registry mkdir registry mkdr auth vim docker-compose.ymldocker-compose.yml的内容如下&#xff1a; version: 3 services:registry:image: registrycontainer_name: registryvolumes:- ./registry…

GPT带我学-设计模式-10观察者模式

1 请你介绍一下观察者模式 观察者模式&#xff08;Observer Pattern&#xff09;是一种设计模式&#xff0c;它定义了对象之间的一对多依赖关系&#xff0c;当一个对象&#xff08;被观察者&#xff09;的状态发生改变时&#xff0c;所有依赖于它的对象&#xff08;观察者&…

Canvas的缓冲区

Canvas的缓冲区 canvas的绘制缓冲区和显示缓冲区理解为两个容器&#xff0c;它们用于存储绘制结果。绘制缓冲区是用于存储渲染管线生成的像素数据&#xff0c;而显示缓冲区是绘制缓冲区最终的存储位置。 绘制缓冲区&#xff08;Drawing Buffer&#xff09;: 它是在 canvas 元…

JVM 类的加载子系统

文章目录 类的加载过程加载阶段链接阶段初始化 类的加载器测试代码中获取对应的加载器获取加载器加载的路径不同类对应的加载器自定义加载器自定义加载器的方式 获取类的加载器的方式双亲委派机制双亲委派机制的好处 Java 的 SPI 机制1. 接口定义2. 具体实现3. 配置 META-INF/s…

Redis中设置Hash数据类型的过期时间

1 方案 可以先对key进行赋值&#xff0c;然后对key设置一个过期时间。 &#xff08;1&#xff09;依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency>…