论文阅读《Centralized Feature Pyramid for Object Detection》

news2024/11/18 7:46:15

论文地址:https://arxiv.org/pdf/2210.02093.pdf
源码地址:https://github.com/QY1994-0919/CFPNet


概述

   特征金字塔模块在众多计算机视觉任务中都有优异的性能表现。针对现有的方法过渡关注于层间的特征交互而忽略了层内的特征交互的问题,本文提出一种基于全局显式集中式特征调节的中心化的特征金字塔(Centralized Feature Pyramid, CFP) 用于目标检测任务。其中,发明了一个空间视觉中心策略用于捕获信息,包含一个捕获全局长程依赖的轻量化MLP与一个捕获局部角落区域信息的可学习的视觉中心机制;提出了一种用于自上而下特征金字塔的全局集中式调节方法,使用最深层内层特征获得的显示视觉中心信息来调节前端浅层特征。与现有的特征金字塔相比,CFP具有长程特征依赖关系捕获能力,而且能获得有效的特征表示。在MS-COCO上的实验结果验证了所提出的CFP可以在最先进的YOLOv5和YOLOX对象检测基线上实现一致性性能增益。文章的主要贡献如下:

  • 提出一种空间显示视觉中心方案,包括用于捕获长程依赖关系的轻量级MLP与用于聚合关键局部区域的可学习视觉中心机制。
  • 提出一种用于特征金字塔结构的全局集中式调节方法。
  • CFP在目标检测 Baseline 上获得一致的性能提升。

模型架构

在这里插入图片描述

Centralized Feature Pyramid (CFP)

  现有的方法主要聚焦于层间特征的交互而忽略了层内特征调节对识别任务的作用,受到密集预测任务的启发,本文提出一种用于目标检测的集中式特征金字塔(CFP),该方法基于全局显示中心化层间特征调节。与现有的特征金字塔相比,前者不仅能捕获全局特征的长程依赖关系,也能提取到差异化的特征表达。如图2所示,CFP包含以下几个部分:输入图像、基于CNN的骨干网络与提取到的特征金字塔、Explicit Visual Center(EVC)、Global Centralized Regulation(GCR)、用于目标检测的检测头(分类孙素、回归损失分割损失)。ECV与GCR都是在特征金字塔上实现的。
   给定输入图像,使用骨干网络提取输入图像的5个尺度下的特征,构建5层的特征金字塔$\mathbf{X},其中每一层的特征为 X i ( i = 0 , 1 , 2 , 3 , 4 ) \mathbf{X}_i(i=0,1,2,3,4) Xi(i=0,1,2,3,4) 分别对应 1 / 2 , 1 / 4 , 1 / 8 , 1 / 16 , 1 / 32 1/2, 1/4, 1/8, 1/16,1/32 1/2,1/4,1/8,1/16,1/32 的尺度。继而使用基于轻量级的MLP的来捕获特征 X 4 \mathbf{X}_4 X4的长程依赖关系,并使用可学习的视觉中心机制来聚合输入图像的局部角区域。 此外,使用GCR来将深层特征的视觉中心信息来调节浅层特征(即 X 3 \mathbf{X}_3 X3 X 2 \mathbf{X}_2 X2),最后将这些特征聚合到解耦头网络中进行分类和回归计算。

Explicit Visual Center (EVC)

在这里插入图片描述
  显示视觉中心包含两个部分:轻量级MLP层与可学习的视觉中心机制。其中轻量级MLP用于处理 X 4 \mathbf{X}_4 X4 来捕获特征的长程依赖关系,可学习的视觉中心机制用于捕获局部信息特征,最后将两个特征沿着特征维度进行拼接作为EVC的输出。在实现过程中,使用一个 7 × 7 7\times 7 7×7且输出通道为256的卷积伴随着BN与激活层的block来对 X 4 \mathbf{X}_4 X4 进行滤波,然后送入EVC中,如式1所示:
X = cat ⁡ ( MLP ⁡ ( X in  ) ; LVC ⁡ ( X in  ) ) (1) \mathbf{X}=\operatorname{cat}\left(\operatorname{MLP}\left(\mathbf{X}_{\text {in }}\right) ; \operatorname{LVC}\left(\mathbf{X}_{\text {in }}\right)\right)\tag{1} X=cat(MLP(Xin );LVC(Xin ))(1)
其中 X \mathbf{X} X 是EVC的输出,cat为沿着特征维度的拼接。 X i n \mathbf{X}_{in} Xin是Stem block的输出,如式2所示:
X in  = σ ( BN ⁡ ( Conv ⁡ 7 × 7 ( X 4 ) ) ) (2) \mathbf{X}_{\text {in }}=\sigma\left(\operatorname{BN}\left(\operatorname{Conv}_{7 \times 7}\left(\mathbf{X}_{4}\right)\right)\right)\tag{2} Xin =σ(BN(Conv7×7(X4)))(2)

轻量化的MLP主要由两个残差块组成:深度可分离卷积模块,沿着通道的MLP模块。两个块都伴随着通道随访和DropPath操作来提高特征的泛化与鲁棒性。深度可分离卷积模块的输入是经过组归一化的特征图 X i n \mathbf{X}_{in} Xin,深度可分离卷积可以在较低的计算成本下提高特征的表达能力:
X ~ in  = DConv ⁡ ( G N ( X in  ) ) + X in  (3) \tilde{\mathbf{X}}_{\text {in }}=\operatorname{DConv}\left(\mathrm{GN}\left(\mathbf{X}_{\text {in }}\right)\right)+\mathbf{X}_{\text {in }}\tag{3} X~in =DConv(GN(Xin ))+Xin (3)
MLP模块的输入为深度可分离卷积模块的输出,且经过组归一化后再沿着通道进行MLP操作:
MLP ⁡ ( X in  ) = CMLP ⁡ ( GN ⁡ ( X ~ in  ) ) + X ~ in  (4) \operatorname{MLP}\left(\mathbf{X}_{\text {in }}\right)=\operatorname{CMLP}\left(\operatorname{GN}\left(\tilde{\mathbf{X}}_{\text {in }}\right)\right)+\tilde{\mathbf{X}}_{\text {in }} \tag{4} MLP(Xin )=CMLP(GN(X~in ))+X~in (4)

LVC为一个具有内在字典的编码器,主要由两个部分组成:(1)固定码本: B = { b 1 , b 2 , . . . , b K , } \mathbf{B}=\{\mathbf{b}_1, \mathbf{b}_2,..., \mathbf{b}_K, \} B={b1,b2,...,bK,},其中 N = H × W N=H\times W N=H×W 为输入特征图的尺寸。(2)可学习的视觉中心缩放因子 S = { s 1 , s 2 , . . . , s K } \mathbf{S}=\{s_1, s_2,...,s_K\} S={s1,s2,...,sK}。来自Stem的特征 X i n X_{in} Xin 经过一组卷积层(包括1×1卷积、3×3卷积和1×1卷积)的 block 进行编码。将编码后的特征被处理为 CBR 块,该块由带有BN层和ReLU激活函数的3×3卷积组成。将编码后的特征 X ˇ i n \check{\mathbf{X}}_{in} Xˇin进入码本。最后使用一组缩放因子 s s s 来依次使 x ˇ i \check{x}_i xˇi b k b_k bk 映射相应的位置信息。整图的第 k k k 个码字信息计算如式5所示:
e k = ∑ i = 1 N e − s k ∥ x ˇ i − b k ∥ 2 ∑ j = 1 K e − s k ∥ x ˇ i − b k ∥ 2 ( x ˇ i − b k ) (5) \mathbf{e}_{k}=\sum_{i=1}^{N} \frac{e^{-\mathbf{s}_{k}\left\|\check{\mathbf{x}}_{i}-\mathbf{b}_{k}\right\|^{2}}}{\sum_{j=1}^{K} e^{-\mathbf{s}_{k}\left\|\check{\mathbf{x}}_{i}-\mathbf{b}_{k}\right\|^{2}}}\left(\check{\mathbf{x}}_{i}-\mathbf{b}_{k}\right)\tag{5} ek=i=1Nj=1Keskxˇibk2eskxˇibk2(xˇibk)(5)
其中 x ˇ i \check{\mathbf{x}}_{i} xˇi 为第 i i i 个像素点, b k b_k bk 为第 k k k 个可学习视觉码字, s k s_k sk 为对应的缩放因子。 x ˇ i − b k \check{\mathbf{x}}_{i}-\mathbf{b}_{k} xˇibk 为每个位置的像素位置相对于码字的信息, K K K 是视觉中心的数量。最后使用 ϕ \phi ϕ 来融合所有的 e k e_k ek,其中 ϕ \phi ϕ 包含一个BN、ReLU激活与取均值层。
e = ∑ k = 1 K ϕ ( e k ) . (6) \mathbf{e}=\sum_{k=1}^{K} \phi\left(\mathbf{e}_{k}\right) .\tag{6} e=k=1Kϕ(ek).(6)
获得了输出的码字后,使用 1 × 1 1\times 1 1×1 的卷积层来预测突出关键类别的特征,最后将输入特征 X i n \mathbf{X}_{in} Xin 与经过 1 × 1 1\times 1 1×1 卷积与激活后的缩放系数 δ \delta δ沿着通道维度相乘,如式7所示:
Z = X in  ⊗ ( δ ( Conv ⁡ 1 × 1 ( e ) ) ) (7) \mathbf{Z}=\mathbf{X}_{\text {in }} \otimes\left(\delta\left(\operatorname{Conv}_{1 \times 1}(\mathbf{e})\right)\right)\tag{7} Z=Xin (δ(Conv1×1(e)))(7)
最后基于残差学习的思想,得到LVC学习后的特征:
LVC ⁡ ( X i n ) = X i n ⊕ Z (8) \operatorname{LVC}(\mathbf{X}_{in}) = \mathbf{X}_{in} \oplus \mathbf{Z}\tag{8} LVC(Xin)=XinZ(8)
其中 ⊕ \oplus 为沿着通道维度的相加。

Global Centralized Regulation (GCR)

  EVC是一种层内特征调节方法,该方法不仅能提取全局长程依赖关系,且能尽可能地保留输入图像的局部角落区域信息,这对密集预测任务非常重要。然而,在特征金字塔的每个层次上使用EVC都会导致巨大的计算开销。为了提高内层特征调节的计算效率,文中使用一种自顶向下的特征金字塔GCR,用于在整个特征金字塔上实现跨层特征规范化。为了提高计算效率,首先在最深层 X 4 X_4 X4 上实现空间显示视觉中心(ECV),继而使用包含空间视觉中心的特征 X X X 上采样到不同尺度用于调整所有层的特征。在实现过程中,将深层特征上采样到与低层特征相同的空间尺度,然后沿着特征维度进行拼接后通过 1 × 1 1\times 1 1×1 的卷积block降采样到256维度。以此来自顶向下路径中显式增加每一层特征金字塔中全局表示的空间权重,从而使CFP能够有效地实现全面而有区别的特征表示。


实验结果

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

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

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

相关文章

药物分子虚拟筛选规则

药物分子虚拟筛选规则 Lipinski Rule RO5是辉瑞公司资深药物化学家Christopher A. Lipinski在1997年提出,虽然随时代发展虽然其适用范围逐渐变窄,但仍然非常有参考意义。其主要内容如下: 分子量(Mw)小于500;氢键供体(HBD)数目小…

matlab 对线路板进行裁剪

缺陷图像目前还没有搞定————(无奈) test1 %Sobel方法 I imread(ChuanJian0.jpg); G rgb2gray(I); E1 edge(G, sobel); figure, subplot(2,2,1); imshow(I); title(Original Color Image); subplot(2,2,2); imshow(E1); title(Sobel Edge);E2 ed…

使用PyTorch构建神经网络,并计算参数Params

文章目录 使用PyTorch构建神经网络,并计算参数Params举例计算具有全连接层的神经网络的参数数量计算卷积神经网络的参数数量Params计算过程 总结 使用PyTorch构建神经网络,并计算参数Params 在深度学习中,模型的参数数量是一个非常重要的指标…

零基础学Java好找工作吗?好程序员告诉你入行Java有多惨?

为什么小源建议普通背景、零基础的大专生、本科生去学java编程呢? 因为真的香啊!小白容易上岸,而且工作3年的话,基本年薪就能到50w(只要你工作后也一直不断努力学习)。java岗位属于技术岗,没有任…

Android进阶:Activity的生命周期和启动模式

Activity的生命周期和启动模式 作为Android四大组件之中存在感最强的组件,Activity应该是我们在学习Android中第一个碰到的新概念。在日常开发过程中我们肯定会用到Activity,但是关于Activity的一些细节问题运行机制我们可能还有一些不清楚的问题。今天…

调用百度文心AI作画API实现中文-图像跨模态生成

作者介绍 乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组。 研究方向:机器视觉与人工智能。 电子邮件:1078914066qq.com 一.文心AI作画API介绍 1. 文心AI作画 文…

全开源ChatGPT聊天机器人商业版源码/支持魔改/完全开放源代码

🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 ☑️ 品牌:ChatGPT ☑️ 语言:PHP ☑️ 类型:ChatGPT ☑️ 支持:PCWAP 🎉 有需要的朋友记得关赞评,需要的底部获…

C++哈希

目录 一、认识哈希表 1.unordered_set和unordered_map 2.哈希表的概念 二、闭散列哈希表的实现 1.底层本质 (1)哈希表的存储结构 (2)元素的插入与查找 (3)哈希冲突 (4)负载…

深入浅出C++ ——线程库

文章目录 线程库thread类的简单介绍线程函数参数原子性操作库 mutex的种类std::mutexstd::recursive_mutexstd::timed_mutexstd::recursive_timed_mutex lock_guard与unique_locklock_guardunique_lock condition_variable 线程库 thread类的简单介绍 在C11之前,涉…

“广东省五一劳动奖章”获得者卫晓欣:“她”力量让新兴技术更获认可

近日,2023年广东省庆祝“五一”国际劳动节暨五一劳动奖表彰大会顺利召开,大会表彰了2023年全国和省五一劳动奖、工人先锋号代表。 其中,来自FISCO BCOS开源社区产业应用合作伙伴广电运通的创新中心总监卫晓欣,凭借在区块链领域的…

分布式锁Redisson对于(不可重入、不可重试、超时释放、主从一致性)四个问题的应对

文章目录 1 Redisson介绍2 Redisson快速入门3 Redisson可重入锁原理4 Redisson锁重试和WatchDog机制5 Redisson锁的MutiLock原理 基于setnx实现的分布式锁存在下面的问题: 重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff…

Ai作图可控性演进——从SD到MJ

背景 Ai作图从Diffusion模型开始,作图进入稳步发展快车道。然后用过diffusion系列作图的同学对产图稳定性,以及可控性都会颇有微词。diffusion系列作图方法在宏观层面上确实能够比较好的做出看上去还不错的图。然后当你细抠细节时候,发现这东…

远程服务器搭建jupyter lab并在本地访问

1、安装jupyter pip install jupyter 可以直接在base环境下安装 2、配置jupyter 2.1 密钥生成 进入python交互模式,输入以下代码: from jupyter_server.auth import passwd passwd()然后输入密码,得到一串密钥,保存一下 2.2…

Java多线程入门到精通学习大全?了解几种线程池的基本原理、代码示例!(第五篇:线程池的学习)

本文介绍了Java中三种常用的线程池:FixedThreadPool、CachedThreadPool和ScheduledThreadPool,分别介绍了它们的原理、代码示例以及使用注意事项。FixedThreadPool适用于并发量固定的场景,CachedThreadPool适用于执行时间短的任务&#xff0c…

Linux C/C++后台开发面试重点知识

Linux C/C后台开发面试重点知识 文章转载自个人博客: Linux C/C后台开发面试重点知识 查看目录 一、C 面试重点 本篇主要是关于 C 语言本身,如果是整个后台技术栈的学习路线,可以看这篇文章: Linux C 后台开发学习路线 对于 C 后台开发面试来说&…

27岁转行学云计算值得吗?能就业不?

27岁转行学云计算值得吗?能就业不? 首先,云计算当然值得转行了,如此肯定的观点,应该没有人会反对吧,尤其是对IT行业的现状以及就业市场有所了解的人。如果你对这一点有所怀疑也很正常,只要通过各…

Spring Boot集成ShardingSphere分片利器 AutoTable (一)—— 简单体验 | Spring Cloud 45

一、背景 Sharding是 Apache ShardingSphere 的核心特性,也是 ShardingSphere 最被人们熟知的一项能力。在过去,用户若需要进行分库分表,一种典型的实施流程(不含数据迁移)如下: 用户需要准确的理解每一张…

详解快速排序的类型和优化

详解快速排序的优化 前言快排的多种写法霍尔法实现快排代码部分 挖坑法思路讲解代码部分 双指针法思路讲解代码部分 针对排序数类型的优化针对接近或已经有序数列和逆序数列三数取中代码实现 随机数 针对数字中重复度较高的数三路划分思路讲解代码部分 根据递归的特点进行优化插…

JSP招投标管理系统myeclipse开发mysql数据库WEB结构java编程

一、源码特点 JSP 招投标管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 JSP招投标管理系统myeclipse开发mysql数据库W 二、功能介绍 主要功能: …

BPMN2.0 任务-接收任务手动任务

接收任务 接收任务是一个简单的任务,它等待特定消息的到来。 当流程执行到接收任务时,流程状态将提交给持久性存储。流程将保持这种等待状态,直到流程引擎接收到特定的消息,这将触发接收任务之外流程的继续进行。 接收任务用左上角有一个消息图标的标准BPMN 2.0任务(圆角…