全新特征融合模块AFPN,完胜PAFPN

news2024/11/15 11:02:41

直接看图说话 

论文地址:https://arxiv.org/abs/2306.15988v1

代码地址: GitHub - gyyang23/AFPN

        多尺度特征在目标检测任务中对具有尺度方差的目标进行编码时具有重要意义。多尺度特征提取的一种常见策略是采用经典的自上而下和自下而上的特征金字塔网络。然而,这些方法遭受特征信息的丢失或退化,削弱了非相邻 Level 的融合效果。本文提出了一种渐近特征金字塔网络(AFPN)来支持非相邻层的直接交互。AFPN是通过融合两个相邻的Low-Level特征来启动的,并渐进地将High-Level特征纳入融合过程。通过这种方式,可以避免非相邻 Level 之间的较大语义差距。考虑到在每个空间位置的特征融合过程中可能出现多目标信息冲突,进一步利用自适应空间融合操作来缓解这些不一致。本文将所提出的AFPN纳入两阶段和一阶段目标检测框架,并使用MS-COCO 2017验证和测试数据集进行评估。实验评估表明,与其他最先进的特征金字塔网络相比,作者的方法获得了更具竞争力的结果。

1. INTRODUCTION

        目标检测是计算机视觉中的一个基本问题,旨在检测和定位图像或视频中的目标。随着深度学习的出现,目标检测发生了范式转变,基于深度学习的方法已成为主流方法。正在进行的研究导致了许多新方法的发展,表明了该领域进一步的潜力。

        基于深度学习的目标检测方法通常分为一阶段和两阶段。单阶段方法直接从输入图像中预测目标的类别和位置。另一方面,两种方法首先生成一组候选区域,然后对这些区域进行分类和位置回归。图像中目标大小的不确定性可能导致单尺度特征提取中详细信息的丢失。因此,目标检测模型通常引入特征金字塔结构来解决尺度变化的问题。其中,FPN是最常用的特征金字塔结构。通过使用FPN,一级和两阶段检测器都可以获得改进的结果。在FPN的基础上,PAFPN为特征金字塔网络添加了一条自下而上的路径,弥补了FPN High-Level特征中Low-Level特征细节的不足。

        对于目标检测任务,真正有用的特征必须包含关于目标的详细信息和语义信息,并且这些特征应该通过足够深入的神经网络提取。在现有的特征金字塔体系结构中,金字塔顶部的High-Level特征需要通过多个中间尺度传播,并在与底部的Low-Level特征融合之前与这些尺度的特征相互作用。在这个传播和交互过程中,来自High-Level特征的语义信息可能会丢失或退化。同时,PAFPN的自下而上的途径带来了相反的问题:来自Low-Level特征的详细信息可能在传播和交互过程中丢失或退化。在最近的研究中,GraphFPN解决了仅相邻尺度特征之间直接交互的局限性,并为此引入了图神经网络。然而,额外的图神经网络结构显著增加了检测模型的参数和计算量。

        现有的特征金字塔网络通常将由Backbone网络生成的High-Level特征上采样为Low-Level特征。然而,作者注意到,HRNet在整个特征提取过程中保持Low-Level别特征,并反复融合Low-Level别和High-Level别特征,以生成更丰富的Low-Level别特征。该方法在人体姿态估计领域显示出突出的优势。受HRNet网络架构的启发,作者提出了一种渐进特征金字塔网络(AFPN)来解决上述限制。在Backbone中自下而上的特征提取过程中,作者在第一阶段通过组合两个具有不同分辨率的Low-Level特征来启动融合过程。随着作者进入后期阶段,作者逐渐将High-Level特征纳入融合过程,最终融合Backbone的顶级特征。这种融合方式可以避免非相邻层次之间存在较大的语义差距。在此过程中,Low-Level特征与来自High-Level特征的语义信息融合,High-Level特征与来自Low-Level特征的详细信息融合。由于它们的直接相互作用,避免了多级传输中的信息丢失或退化。在整个特征融合过程中,元素求和并不是一种有效的方法,因为层次之间的某个位置可能存在不同目标的矛盾。为了解决这个问题,作者利用自适应空间融合操作来过滤多级融合过程中的特征。这使作者能够为融合保留有用的信息。

        为了评估作者的方法的性能,作者在MS COCO 2017数据集上使用了Faster R-CNN框架。具体而言,作者使用ResNet-50和ResNet-101作为Backbone,与基于FPN的Faster R-CNN相比,这两个Backbone分别提高了1.6%和2.6%。作者将其与其他特征金字塔网络进行比较。

        实验结果表明,所提出的AFPN不仅比其他最先进的特征金字塔网络取得了更具竞争力的结果,而且具有最低的每秒浮点运算(FLOP)。此外,作者将AFPN扩展到单阶段检测器。作者在YOLOv5框架上实现了作者提出的方法,并用更少的参数获得了优于Baseline的性能。

主要贡献如下:

1、作者引入了一种渐进特征金字塔网络(AFPN),它有助于跨非相邻 Level 的直接特征融合,从而防止特征信息在传输和交互过程中的丢失或退化。

2、为了抑制不同层次特征之间的信息矛盾,作者在多层次特征融合过程中引入了自适应空间融合操作。

3、在MS COCO 2017验证和测试数据集上的大量实验表明,与其他特征金字塔网络相比,作者的方法表现出优越的计算效率,同时获得了更具竞争力的结果。

2. RELATED WORK

传统的计算机视觉方法通常只从图像中提取一个尺度特征进行分析和处理。这将导致对不同大小的目标或不同尺度的场景的检测性能较差。研究人员已经构建了包含各种尺度特征的特征金字塔,克服了使用单尺度特征的局限性。此外,许多研究提出了特征融合模块,旨在增强或细化特征金字塔网络,进一步提高检测器的性能。

A. Feature Pyramids

        FPN使用自上而下的方式将High-Level特征转移到Low-Level特征,以实现不同 Level 特征的融合。但是,在这个过程中,High-Level特性不会与Low-Level特性融合。为此,PAFPN在FPN的基础上增加了自下而上的路径,使High-Level特征在Low-Level特征中获得细节。与固定网络架构方法不同,NASFPN使用神经架构搜索算法自动搜索最优连接结构。最近,其他领域的想法也被引入到特征金字塔架构中。例如,FPT在NLP领域引入了自注意力机制来提取不同层次的特征,并使用多尺度注意力网络来聚合这些特征。GraphFPN使用图神经网络在特征金字塔上交互和传播信息。虽然GraphFPN也促进了非相邻 Level 之间的直接交互,但它对图神经网络的依赖大大增加了参数量和计算复杂性,而FPT也面临着类似的问题。相反,AFPN只引入了正常的卷积分量。因此,作者的AFPN在实际应用中更加可行和实用。

B. Feature Fusion Modules

        特征融合模块通常被合并到预先存在的、固定拓扑的特征金字塔中,以增强其特征。还进行了几项研究来增强特征金字塔的上采样模块。在本文中,不改变特征金字塔拓扑的模块被称为特征融合模块。CARAFE是一种通用、轻量级和高效的上采样算子,可以聚合大的感受野信息。ASFF为不同 Level 的特征添加权重,以便有效地融合它们,考虑到不同 Level 特征之间可能存在的矛盾信息。DRFPN通过合并空间细化块(SRB)和通道细化块(CRB)来扩展PAFPN体系结构。SRB模块利用跨相邻 Level 的上下文信息来学习上采样点的位置和内容,而CRB模块利用注意力机制来学习自适应通道合并策略。与这些特征金字塔架构相比,特征金字塔模块可以无缝集成到广泛的现有特征金字塔架构中,为解决特征金字塔的各种局限性提供了实用的解决方案。特征金字塔的一个限制是在特征融合过程中来自同一位置的不同目标的信息共存。这种限制在AFPN中尤其明显,因为它需要更多轮的特征融合。此外,作者进行了自适应空间融合,以有效地融合不同层次的特征。

3. ASYMPTOTIC FEATURE PYRAMID NETWORK

A. Extracting Multi-level Features

        与许多基于特征金字塔网络的目标检测方法一样,在特征融合之前,从Backbone中提取不同 Level 的特征。作者遵循Faster R-CNN框架的设计,该框架从Backbone的每个特征层提取最后一层特征,从而产生一组不同尺度的特征,表示为{C2, C3, C4, C5}.。为了执行特征融合,首先将Low-Level特征C2和C3输入到特征金字塔网络中,然后添加C4,最后添加C5。在特征融合步骤之后,产生一组多尺度特征{P2, P3, P4, P5}。对于在Faster R-CNN框架上进行的实验,作者将Stride为2的卷积应用于P5,然后再应用Stride为1的卷积来生成P6,这确保了统一的输出。最后一组多尺度特征是{P2, P3, P4, P5, P6},对应的特征Stride为{4, 8, 16, 32, 64}个像素。应该注意的是,YOLO仅将除C2意外的{C3, C4, C5}输入到特征金字塔网络中,该特征金字塔网络生成{P3, P4, P5}的输出。

B. Asymptotic Architecture

        所提出的AFPN的架构如图所示2(上图)。在Backbone网络自下而上的特征提取过程中,AFPN渐进地集成了Low-Level、High-Level和顶级特征。具体来说,AFPN最初融合了Low-Level特征,然后融合了深层特征,最后融合了最High-Level的特征,即最抽象的特征。非相邻层次特征之间的语义差距大于相邻层次特征间的语义差距,尤其是底部和顶部特征。这直接导致了非相邻层次特征的融合效果较差。因此,直接使用C2、C3、C4和C5进行特征融合是不合理的。由于AFPN的架构是渐进的,这将使不同 Level 特征的语义信息在渐进融合过程中更加接近,从而缓解上述问题。例如,C2和C3之间的特征融合减少了它们的语义差距。由于C3和C4是相邻的层次特征,因此减少了C2和C4之间的语义差距。

        为了对齐维度并为特征融合做准备,作者使用1×1卷积和双线性插值方法对特征进行上采样。另一方面,作者根据所需的下采样率使用不同的卷积核和Stride来执行下采样。例如,作者应用Stride为2的2×2卷积来实现2次下采样,应用Stride为4的4×4卷积来实现4次下采样以及应用Stride为8的8×8卷积来实现8倍下采样。在特征融合之后,作者使用4个残差单元继续学习特征,这些残差单元类似于ResNet。每个残差单元包括2个3×3卷积。由于YOLO中只使用了3个 Level 的特征,因此没有8次上采样和8次下采样。

C. Adaptive spatial fusion

        在多级特征融合过程中,作者利用ASFF为不同 Level 的特征分配不同的空间权重,增强了关键 Level 的重要性,并减轻了来自不同目标的矛盾信息的影响。

        如图3(上图)所示,作者融合了3个层次的特征。让{x_{ij}}^{n->l}表示从 Level n到 Level l的位置(i,j)处的特征向量。结果特征向量,表示为{y_{ij}}^{l},通过多级特征的自适应空间融合获得,并由特征向量的线性组合{x_{ij}}^{1->l}{x_{ij}}^{2->l}{x_{ij}}^{3->l}如下:

        其中,{\alpha_{ij}}^{l}{\beta _{ij}}^{l}{\gamma _{ij}}^{l}表示3个 Level 的特征在 Level l的空间权重,受{\alpha_{ij}}^{l} + {\beta_{ij}}^{l} +{\gamma _{ij}}^{l} = 1的约束。考虑到AFPN每个阶段融合特征数量的差异,作者实现了特定阶段数量的自适应空间融合模块。

B. Comparison with Different Feature Pyramid Networks

这里和不同FPN结构进行了对比,直接看图

总之就是各种比较

C. Results on Different Detectors

在不同检测器上的效果

yolov5上PAFPN与AFPN比较

总之就是各种效果好

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

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

相关文章

【线程】线程概念及相关函数实现

目录 0. 线程的概念 1. 线程的基本操作 1.1 线程的创建:pthread_create函数 1.2 线程等待:pthread_join函数 1.3 线程的分离:pthread_detach函数 1.4 线程退出:pthread_exit函数 1.5 线程的取消:pthread_cancel…

了解Spring

目录 什么是Spring? DI Spring 存与取 spring 的存操作 spring的取操作 更快速的进行 Spring 存 与 读 三大注入方式 Autowired set 注入 构造方法注入 Spring 容器中有多个相同的类时 Bean 作用域 设置作用域 Spring 执行流程 Bean 生命周期 什么是Spring? Sp…

【密码学基础】半/全同态加密算法基础学习笔记

文章目录 1 半同态加密Pailliar加法同态加密Paillier加解密过程Paillier的同态性Paillier的安全性 El Gamal乘法同态加密RSA乘法同态加密 2 全同态加密BFV全同态加密BFV的编码方式BFV加解密过程BFV的安全性BFV的同态性自举Bootstrapping 3 同态加密应用场景场景1:安…

【maven】安装、使用和常用命令

安装 windows 下载Maven二进制文件 前往Apache Maven官方网站 (https://maven.apache.org) ,找到最新的稳定版本,然后下载对应的二进制压缩包(如apache-maven-3.8.2-bin.zip)。解压缩文件 将下载的压缩包解压到你选择的目录&…

QCC51XX---chain修改

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 如何去修改音频chain链路,就是那种想多加几条输入源或输出,又或者把当前的输入输出换到别的地方的那种应用。例如一个自带mic的dongle,或者模拟输入的LE dongle。 如果要改某个状态下的音频链路,那就需要先找出默认…

修复常见 Android 问题的 9 款顶级 Android 手机维修软件

许多人发现Android手机或平板电脑上的Android操作系统一开始运行得很好,但随着时间的推移,可能会出现各种Android系统问题。您可能会遇到一些问题,例如系统速度变慢、启动无响应、挂起错误、界面冻结、短信停滞、应用程序崩溃等。那么&#x…

Linux学习之内存查看命令free和top

我用来演示的系统使用CentOS Linux release 7.6.1810 (Core),内核版本是3.10.0-957.el7.x86_64。 Linux在进程申请内存的时候,一般都是尽可能给进程内存,因为进程在申请内存的时候有损耗。 free free命令可以看以k为单位的内存。 free -…

使用less命令搜索文件中的关键字

目录 介绍常用搜索技巧实例 介绍 less 与 more 类似&#xff0c;less 可以随意浏览文件&#xff0c;支持翻页和搜索&#xff0c;支持向上翻页和向下翻页。 语法 less [参数] 文件 参数说明&#xff1a; -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后&#xff…

STM32 USART

USART.C 文件中只是针对串口1&#xff0c;使用其他串口需要稍作修改 IC、SPI主要用于一块开发板上两个芯片之间的通信&#xff0c;例如&#xff1a;主控和传感器之间的通信 串口适用于两块开发板之间的通信&#xff0c;或者说开发板和上位机之间的通信&#xff0c;有线通信 以…

MAC OS X 这个“安装 macOS Xxx Xxx”应用程序副本已损坏,不能用来安装 macOS,超级终端修改日期date 已解决

原因&#xff1a;旧版 macOS 证书已经过期 解决方法&#xff1a;断开互联网&#xff0c;修改系统时间 date 102013142018.20 说明&#xff1a;10是月&#xff0c;20是日&#xff0c;13是时&#xff0c;14是分&#xff0c;2018是年&#xff0c;20是秒 输入上面的代码按回车后…

【ARM】-异常与中断

文章目录 中断中断请求、中断源中断服务程序保存现场、恢复现场中断仲裁、中断优先级中断嵌套 异常广义上的异常同步异常异步异常精确异步异常&#xff08;Precise Asynchronous Exception&#xff09;非精确异步异常&#xff08;Imprecise Asynchronous Exception&#xff09;…

发展零碳数据中心,超聚变推动液冷规模商用

算力的发展犹如一体两面。 一方面&#xff0c;在数字经济、产业数字化和数字化转型中&#xff0c;算力发挥着关键的引擎作用&#xff1b;另一方面&#xff0c;持续增长的多元异构算力需求、不断提升的算力密度以及逐渐成体系的算力网络&#xff0c;也带来了不可低估的长期能耗…

Linux基础笔记

已经有很长很长一段时间没有更新帖子了&#xff0c;一眨眼2023 已经过半&#xff0c;这些日子里&#xff0c;有太多太多事情要做了&#xff0c;今年只更新了几篇&#xff0c;这几天刚好有空&#xff0c;浅浅更新一篇叭&#xff01;~~~ 首先&#xff0c;Linux是一种开源的操作系…

测试开发工程必备技能之一:Mock的使用

目录 1. 背景 2. Mock是什么 3. Mock能做什么 4. Mock实现方式 5. Mock市面上常见的解决方案 6. Python下unittest.mock使用 总结&#xff1a; 1. 背景 在实际产品开发过程中&#xff0c;某个服务或前端依赖一个服务接口&#xff0c;该接口可能依赖多个底层服务或模块&…

K8S | 容器和Pod组件

对比软件安装和运行&#xff1b; 一、场景 作为研发人员&#xff0c;通常自己电脑的系统环境都是非常复杂&#xff0c;在个人的习惯上&#xff0c;是按照下图的模块管理电脑的系统环境&#xff1b; 对于「基础设施」、「主机操作系统」、「系统软件」来说&#xff0c;通常只做…

MYSQL根据标签查询数据

场景条件&#xff1a; 1.根据用户id查询到该id绑定的标签&#xff08;可能是多个标签也可能是单个标签&#xff09; 2.根据标签的id查询到绑定标签id的信息表 SELECT labelID FROM LRrelation WHERE relationID 1 SELECT * FROM notification SELECT * FROM notification…

解决GitHub下载速度太慢问题的方法汇总(持续更新,建议收藏)

文章目录 前言一、使用 git clone --depth1 来下载二、修改host文件解决三、谷歌浏览器插件加速四、油猴插件和脚本五、gitclone.com六、Github 加速下载链接七、Github 镜像访问八、使用码云下载参考资料&#xff0c;感谢以下文章 前言 Github上下载仓库或者克隆仓库&#xf…

运输层:TCP流量控制

1.运输层&#xff1a;TCP流量控制 笔记来源&#xff1a; 湖科大教书匠&#xff1a;TCP流量控制 流量控制(flow control)就是让发送方的发送速率不要太快&#xff0c;要让接收方来得及接收。 实现方法&#xff1a;滑动窗口机制 移动发送窗口&#xff0c;因接收窗口大小为300&am…

C++思维,作业7.3

#include <iostream> #include <cstring> using namespace std; int monster_blood10000; //英雄 class Hero { protected:string name;int hp;int attck; public:Hero(){//cout << "Hero的无参构造" << endl;}Hero(string name,int hp,int …

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第七章

这一章内容有点丰富&#xff0c;多用了一些时间&#xff0c;实例就有四五个。 这章内容是真多啊&#xff01;&#xff08;学完之后又回到开头感叹&#xff09; 大脑分级处理机制&#xff1a; 将图像从基础像素到局部信息再到整体信息 即将图片由低级特征到高级特征进行逐级计…