论文精读:Feature Pyramid Networks for Object Detection

2023-09-21 12:20:55

1. 摘要

1.1 背景

  1. 特征金字塔是识别系统中用于检测不同尺度的物体的基本组件
  2. 由于其计算和存储的密集性,在深度学习中很少用到他

1.2 提出新方法

提出一个自上而下的架构与横向连接的金字塔结构,以建立高层次的语义特征图在所有尺度,叫做Feature Pyramid Network (FPN)

1.3 贡献

将FPN用在Faster-RCNN上实现了先进的单模型结果

2. 引言

2.1 提出问题

  1. 识别不同尺度的物体是计算机视觉的一个基本挑战

2.2 叙述Feature pyramid

  1. 建立在图像金字塔上的特征金字塔形成了识别不同尺度标准解决方案的基础
  2. 特征化图像金字塔在手工设计特征的时代被大量使用,例如DPM
    在这里插入图片描述

2.3 叙述深度卷积网络

  1. 对于识别任务,工程化的特征在很大程度上被深度卷积网络(ConvNets)计算的特征所取代
  2. 除了能够表示更高级别的语义之外,ConvNets对尺度的变化也更鲁棒
  3. 但即使具有这种鲁棒性,仍然需要金字塔来获得最准确的结果
    在这里插入图片描述

2.4 Feature pyramid的局限

  1. 推断时间增加
  2. 占用内存多

2.5 使用deep ConvNet计算多尺度特征的方式

  1. 深度ConvNet逐层计算特征层次结构,特征层次结构具有固有的多尺度金字塔形状。
  2. 该网络内特征层次结构产生不同空间分辨率的特征图,例如SSD,但是SSD是从高级特征开始构造金字塔的,因此他对检测小目标也造成了一定的损失。
    在这里插入图片描述

2.6 提出我们的方法

  1. 目标是利用ConvNet的特征层次结构的金字塔形状,同时创建一个在所有尺度上都具有强大语义的特征金字塔。
  2. 提出一种新的架构,该架构通过自上而下的路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合。

在这里插入图片描述

2.7 贡献

  1. 该结构结合Faster RCNN在COCO数据集上取得了领先的结果
  2. 在COCO上将Average Recall提高了8个点,在目标检测上提高了2.3mAP
  3. 在PSCAL上提高了3.8mAP
  4. 可以用所有尺度进行端到端的训练,并且在训练/测试时一致地使用

3. 相关工作

3.1 手工工程特征和早期神经网络

  1. SIFT特征最初是在尺度空间极值处提取的,并用于特征点匹配
  2. HOG和后来的SIFT特征都是在整个图像金字塔进行密集计算的

3.2 深度卷积目标检测

  1. OverFeat采用了类似于早期神经网络人脸检测器的策略,将ConvNet作为图像金字塔上的滑动窗口检测器。
  2. R-CNN采用了一种基于区域提议的策略,其中每个提议在使用ConvNet分类之前都进行了尺度归一化。
  3. PPnet证明,这种基于区域的检测器可以更有效地应用于在单个图像尺度上提取的特征图
  4. Fast R-CNN [11]和Faster R-CNN主张使用从单个尺度计算的特征,因为它在准确性和速度之间提供了良好的权衡。然而,多尺度检测仍然表现得更好,特别是对于小对象。

3.3 使用多层次的方法

  1. Hypercolumn、CN在多个尺度上对每个类别的部分分数求和以计算语义分割
  2. HyperNet,ParseNet和ION,在计算预测之前连接多个层的特征,这相当于对转换后的特征进行求和。
  3. SSD 和MS-CNN在特征层次结构的多个层预测对象,而不组合特征或分数
  4. U-Net and Sharp-Mask利用横向/跳过连接,将跨分辨率和语义层级的低级特征映射关联起来...

4. Feature Pyramid Networks

4.1 目的

  1. 利用卷积神经网络(ConvNet)的金字塔特征层次结构(从低到高的语义层次),构建一个从头到尾都具有高级语义的特征金字塔。
  2. 以任意大小的单尺度图像作为输入,并以全卷积的方式在多个层级上输出按比例大小的特征图

4.2 Feature Pyramid Networks结构

4.2.1 Bottom-up pathway

  1. Bottom-up的过程就是将图片输入到backbone ConvNet中提取特征的过程
  2. Backbone输出的feature map的尺寸有的是不变的,有的是成2倍的减小的。对于那些输出的尺寸相同的层,把他们归为一个stage,那么每个stage的最后一层输出的特征就被抽取出来。

4.2.2 Top-down pathway

  1. Top-down的过程就是将高层得到的feature map进行上采样然后往下传递,这样做是因为,高层的特征包含丰富的语义信息,经过top-down的传播就能使得这些语义信息传播到低层特征上,使得低层特征也包含丰富的语义信息。
  2. 采样方法是最近邻上采样,使得特征图扩大2倍

4.2.3 Lateral connection

使用的原因:使用lateral connection加强相同Stage的特征,因为自下而上的特征图有较低级别的语义,但其激活更准确地定位,因为它被子采样更少的次数。

  1. 对于每个stage输出的feature map,都先进行一个1*1的卷积降低维度。
  2. 然后再将得到的特征和上一层采样得到特征图进行融合,就是直接相加
  3. 加完之后需要进行一个33的卷积才能得到本层的特征输出,使用这个33卷积的目的是为了消除上采样产生的混叠效应(aliasing effect),混叠效应该就是指上边提到的‘插值生成的图像灰度不连续,在灰度变化的地方可能出现明显的锯齿状’。
    在这里插入图片描述

5.应用

5.1 Feature Pyramid Networks for RPN

  1. 通过用FPN替换单尺度特征图来适应RPN
  2. 将相同的设计(3×3 conv和两个1×1 convs)附加到特征金字塔的每个层级上
  3. 由于头部在所有金字塔等级的所有位置上密集滑动,因此不必在特定等级上使用多尺度的anchor。相反,为每个层级设置单一锚框
  4. anchor 定义在{P2,P3,P4,P5,P6}上具有{322, 644,1282,2562,5122},并且分别在每个层级使用{1:2, 1:1, 2:1}的anchor。因此金字塔上共有15个anchor
  5. 如果anchor与ground-truth box的IoU大于0.7则为正样本,小于0.3则为负样本
  6. 头部的参数在所有金字塔的金字塔层级上都是共享的。表明可以将通用的头部分类器应用于以任何图像比例计算的特征
  7. 共享参数的良好性能表明金字塔各层次共享相似的语义层次

5.2 Feature Pyramid Networks for Fast R-CNN

  1. Fast R-CNN是一种基于区域的目标检测器,使用感兴趣区域池(Region-of-Interest, RoI)提取特征
  2. 将特征金字塔视为是由图像金字塔产生的。因此,通过以下方式将宽度 w w w和高度 h h h的RoI分配给特征金字塔的水平Pk

    在这里插入图片描述

    1. 224是ImageNet的预训练尺寸
    2. k0是w × h = 2242的RoI应映射到的目标层级
更多推荐

【云原生 | 56】Docker三剑客之Docker Swarm高效使用

🍁博主简介:🏅云计算领域优质创作者🏅2022年CSDN新星计划python赛道第一名🏅2022年CSDN原力计划优质作者🏅阿里云ACE认证高级工程师🏅阿里云开发者社区专家博主💊交流社区:CSDN云计算交流社区欢迎您的加入!目录1.创建集群id2.配置集群节点3.配置管理节点4.查看集群节点列表5.使用集群

软考 - 计算机组成与体系笔记

数据的表示进制转化二进制转十进制(十进制以D表示)从右往左,用二进制位上的数字乘以2的n次幂的和(n从0开始+1累加)十进制转二进制(二进制以B表示)十进制数不断除以2直至到0,得到的余数按从下而上的顺序排列得到的数值二进制与八进制(八进制以O或Q表示)二进制从右往左,每三位对应的都是八进制的一位数二进制与十六进制(十

LeetCode 753. 破解保险箱【欧拉回路,DFS】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及

优化系统报错提示信息,提高人机交互(三)

对于业务比较复杂的接口,可能存在方法嵌套,每个方法都可能会报错,出现异常,那么需要把异常信息返回给接口调用者,如何实现呢?(1)捕获异常进行处理,不返回controller代码@AllArgsConstructor@RestController@Slf4jpublicclassDemoController{privat

Llama.cpp工具main使用手册

Llama.cpp提供的main工具允许你以简单有效的方式使用各种LLaMA语言模型。它专门设计用于与llama.cpp项目配合使用。推荐:用NSDT编辑器快速搭建可编程3D场景Llama.cpp的工具main提供简单的C/C++实现,具有可选的4位量化支持,可实现更快、更低的内存推理,并针对桌面CPU进行了优化。该程

【C++】构造函数初始化列表 ④ ( 构造函数 和 析构函数 调用顺序分析 )

文章目录一、构造函数和析构函数调用顺序说明1、构造函数调用顺序2、析构函数调用顺序3、拷贝构造函数也可以定义初始化列表二、构造函数和析构函数调用顺序代码分析1、构造函数调用顺序2、代码示例-构造/析构函数调用顺序分析构造函数初始化列表总结:初始化列表可以为类的成员变量提供初始值;初始化列表可以调用类的成员变量类型的构造

SpringBoot之静态资源规则与定制化

文章目录前言一、静态资源访问二、静态资源访问前缀三、webjar资源处理的默认规则四、welcome与favicon功能1.欢迎页支持欢迎页处理规则2.自定义Favicon五、补充总结前言本文主要介绍关于SpringBoot中Web开发的简单功能。一、静态资源访问只要静态资源放在类路径下:called/static(o

linux ssh 禁止指定用户通过ssh登录

Linux禁止用户或IP通过SSH登录限制用户SSH登录1.只允许指定用户进行登录(白名单):在/etc/ssh/sshd_config配置文件中设置AllowUsers选项,(配置完成需要重启SSHD服务)格式如下:AllowUsersaliyuntest@192.168.1.1#允许aliyun和从192.168.

洞察2023:中国心室辅助装置行业竞争格局及市场份额

本文核心数据:代表性企业排名;代表性企业优势分析等1、中国心室辅助装置行业竞争梯队人工心脏(ArtificialHeart,AH)是机械辅助类器械的代表,用于替代或辅助心脏泵血功能。按照功能可分为心室辅助装置(VentricularAssistDevice,VAD)、全人工心脏(TotalArtificialHeart

Linux系统之安装uptime-kuma服务器监控面板

Linux系统之安装uptime-kuma服务器监控面板一、uptime-kuma介绍1.1uptime-kuma简介1.2uptime-kuma特点二、本次实践环境介绍2.1环境规划2.2本次实践介绍2.3环境要求三、检查本地环境3.1检查本地操作系统版本3.2检查系统内核版本3.3检查系统是否安装Node.js四、

【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)

IP协议第二讲1.IP和Mac帧2.碰撞检测2.1介绍2.2如何减少碰撞发生2.3MTU2.4一些补充3.ARP协议3.1协议介绍3.2报文格式分析1.IP和Mac帧IP(InternetProtocol)和MAC(MediaAccessControl)帧是计算机网络中两个不同层次的概念,它们在网络通信中扮演不同的角色

热文推荐