Feature Pyramid Grids 原理与代码解析

paper:Feature Pyramid Grids

third-party implementation:https://github.com/open-mmlab/mmdetection/blob/master/mmdet/models/necks/fpg.py

存在的问题

基于NAS得到的特征金字塔结构如NAS-FPN展现了良好的性能表现,但用NAS寻找改进结构意味着:

  • 最终的模型结构比较复杂,难以理解,限制了模型的使用。
  • NAS的搜索成本很大
  • 最终
  • 的结构可能难以很好的推广到其它检测框架中。例如NAS-FPN是在RetinaNet上搜索到的,尚不清楚它是否能在其它检测模型中表现出相似的性能。

本文的创新点

本文提出了Feature Pyramid Grids(FPG),一种深度多路径特征金字塔网络,它将特征尺度空间表示为平行路径之间通过多向横向连接融合的规则网格,如图1所示。

FPG通过多个平行金字塔路径丰富了卷积网络的backbone中构建的层次特征表示。FPG是FPN在密集横向连接结构下从1到 \(p\) 条路径的深度推广。

和FPN不同的是,所有单独的路径都是以自下而上的方式构建。为了得到一个深度特征金字塔网络,路径通过各种跨尺度和同尺度的横向连接交织在一起,使得信息可以在各层级之间交换。如图1所示,这些横向连接可以分为四类:AcrossSame \(\longrightarrow \),AcrossUp \(\nearrow \),AcrossDown \(\searrow \),AcrossSkip \(\curvearrowright\)。

方法介绍

作者通过消融试验发现,图1所示的结构可以大大简化。首先bottom-up的方式有两种:SameUp和AcrossUp,去掉AcrossUp对结果没有显著影响,SameUp足够提供从低层到高层的信息流动,因为低层的语义信息不够丰富,因此较低的表示能力就足够了。其次,作者发现直接去除高分辨率特征的“下三角”连接不会降低性能,关于原因作者的猜想是低层的特征图首先需要通过自上而下的传播丰富语义信息,然后才能从深层路径结构中受益。简化后的结构如图2所示,这是最终的结构,接下来的实验也都是基于该结构。

代码解析

这篇文章没有官方的实现,只有mmdetection中第三方的实现,且实现和图2所示的结构有一定出入。由于图2的结构非常清晰,这里就不一步步降具体的实现,主要总结一下实现和图示不一样的地方。

1、以ResNet50为例,backbone的输出是 \(\{C_{2},C_{3},C_{4},C_{5}\}\) 对应步长分别为 \(\{4,8,16,32\}\)。对于Faster R-CNN和Mask R-CNN采用 \(P_{2}\sim P_{6} \),对于RetinaNet采用 \(P_{3}\sim P_{7} \)。图2中是 \(P_{2}\sim P_{6} \) 的结构,下面贴的代码是基于RetinaNet的因此是 \(P_{3}\sim P_{7} \)。具体来说就是 \(C_{3}\sim C_{5}\) 分别经过1x1的lateral conv后得到 \(P_{3}\sim P_{5}\),然后 \(P_{5}\) 经过两次stride=2的3x3 conv得到 \(P_{6},P_{7}\)。

2、在实现中,通过两层for循环实现,外层循环遍历stack_times,即文中的路径条数 \(p=9\)。内层循环自下而上遍历每个节点的输出。

3、第一点不同的是论文中提到grids的左下三角被删去了,但图2中没画全,\(p0\) 和 \(p1\) 左上角的连接应该只有一个,但图2画了两个。下面是 \(p1\) 路径自下而上的操作,可以看出下面4个节点没有连接,最上的节点的输入包括三个:same_up、across_lateral、across_skip。

4、第二点不同是图2中所有Identity连接对应的AcrossDown应该删去。只有Lateral连接时才有AcrossDown。

5、当路径 \(p\ge 5\) 时,右侧的路径就没有被删去的下三角连接了。下面是 \(p=9\) 时最下节点、中间节点、最上节点的操作。

可以看出最下节点没有same_up,有across_lateral、across_down、across_skip三个操作。

中间节点的输入是完整的4个:same_up、across_lateral、across_down、across_skip

最上节点没有across_down,有same_up、across_lateral、across_skip三个操作。

6、 因为所有路径都是自下而上的,所以所有的节点输入都不包括same_down。因为same_up就够用了,所以所有的across_up都删去了。

实验结果

在不同模型上与FPN和NAS-FPN的对比如表1所示,为了公平也对FPN和NAS-FPN进行了扩展,可以看到在相似的FLOPs和参数量下,在所有模型上FPG的效果都是最好的。

从表中还可以看出,相比与RetinaNet,在其它多阶段检测模型中,FPG相比NAS-FPN的提升更多,这也表明了基于RetinaNet搜索到的NAS-FPN结构不能很好的推广到多阶段检测模型中。

从图3可以看出,当路径数量增加超过3时FPN的表现出现了下降,这验证了将FPN简单扩展到多个自顶向下路径无法得到FPG实现的类似的性能。

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

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

相关文章

如何给openai的assistant添加Functions

我的chatgpt网站: https://chat.xutongbao.top/ {"name": "get_current_datetime","description": "获取北京时间,当前时间,当前日期","parameters": {"type": "object&q…

《GreenPlum系列》GreenPlum初级教程-GreenPlum详细入门教程

文章目录 GreenPlum详细入门教程第一章 GreenPlum介绍1.MPP架构介绍2.GreenPlum介绍3.GreenPlum数据库架构4.GreenPlum数据库优缺点 第二章 GreenPlum单节点安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.…

1.8 万 Star!这款 Nginx 可视化配置工具太强了

NginxConfig简介 Nginx Config 是一个强大的 Nginx 配置文件生成器,号称配置 Nginx 服务器所需的唯一工具。 正因为 Nginx 功能强大,所以针对其各个功能的配置项会显得特别多,对于我们来说要记住那么多配置是一件十分头疼的事,甚…

仰暮计划|“去咱们那的小坝上吹吹风,看看黄河的水势有没有上涨…”

从来不觉得时间过得有多快,只是日月不断的更替。到了今天,我才不得不承认时间已经过去了很久很久,我的爷爷也已不再年轻。我是爷爷奶奶带大的,自从我记事起,他们就一直陪伴着我了。那时候爸爸妈妈外出打工,…

spring-framework6.x版本源码构建

6.x.修改gradle仓库构建 IDEA版本及gradle构建设置 在gradle指定仓库地址/wrapper/dists/找到与gradle wrapper相对应的gradle版本,在gradle的init.d/目录下新建init.gradle文件,内容如下: allprojects{repositories {mavenLocal()maven { …

41.while语句

目录 一.什么是while语句 二.语法 三.执行流程图 四.举例 五.视频教程 一.什么是while语句 只要条件为真,while循环中的语句会一直重复执行。 二.语法 while(表达式){//代码块 } 三.执行流程图 从流程图可以看出,while循环…

【技术】SpringBoot 接口怎么加密解密

1. 介绍 在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用 如果我们想保证数据传输的安全,对接口出参加密,入参解密。 但是不想写重复代码,我们可以提供一个通用starter,提…

MySQL基础(一)

学习数据库的目的: 实现数据持久化到本地。使用完整的管理系统统一管理,可以实现结构化查询,方便管理。 一、数据库概述 数据库(DataBase) 为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘…

Redis面试

1.说说什么事redis Redis是一种基于键值对的NoSql数据库。 Redis中的value支持string(字符串)、hahs(哈希)、list、set、zset(有序集合)、bitmaps(位图),HyperLoglog等数…

基于机会网络编码(COPE)的卫星网络路由算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1机会网络编码(COPE)概述 4.2COPE算法原理 4.2.1 编码机会预测 4.2.2 编码决策 4.2.3 数据包编码 4.2.4 数据包传输 4.2.5 数据包解码 5.完整程序 1.程序功能…

【前端web入门第一天】02 HTML图片标签 超链接标签

文章目录: 1.HTML图片标签 1.1 图像标签-基本使用1.2 图像标签-属性1.3 路径 1.3.1 相对路径 1.3.2 绝对路径 2.超链接标签 3.音频标签 4.视频标签 1.HTML图片标签 1.1 图像标签-基本使用 作用:在网页中插入图片。 <img src"图片的URL">src用于指定图像…

山体滑坡监测预警系统-gnss位移监测站

GNSS山体滑坡位移监测站是一种利用全球导航卫星系统&#xff08;GNSS&#xff09;进行山体滑坡位移监测的设备。它通过接收和处理GNSS卫星信号&#xff0c;能够实时监测山体的位移变化&#xff0c;并将数据传输到后端系统进行分析和处理。 GNSS山体滑坡位移监测站具有高精度、…