FPN(Feature Pyramid Networks) 网络

2023-11-02

FPN 网络

1. 前言

通常在神经网络中,浅层特征图(feature maps)的感受野比较小,包含语义信息比较少,但是其空间位置信息准确,而深层网络,感受野大,语义信息强,但是由于 pooling 等造成了像素位置信息丢失等,所以空间位置信息比较粗糙。但是对于检测任务,往往既需要语义信息(分类),也需要位置信息(bbox),此外由于深层特征图往往被压缩到比较小的size,也会影响小目标的检测,因此低层和高层特征的融合是有必要的,而 FPN 就是一种特征融合的方式。

FPN(Feature Pyramid Networks) 是 Tsung-Yi Lin 等人于 2016 年在 Feature Pyramid Networks for Object Detection 提出的。FPN 的概念并不是凭空产生的,其实和图像金字塔的思想类似,只不过是特征层面的,所以叫 Feature Pyramid。

2. FPN

下面这幅图是作者在原文中给出来的示意图。

  • a 对某一输入图片我们通过压缩或放大从而形成一系列不同维度的图片,把这些图片分别输入模型,得到一系列的特征图(feature maap)的集合,这个集合就是可反映多维度信息的特征集。这种方法原本一张图变成了多张,因此对计算机的算力及内存大小都有较高要求。

  • b 就是常见的,比如 RCNN 系列中的做法,没有多尺度的概念。优点是计算简单,对计算机算力及内存大小都无过高需求。但是这些模型对小维度的目标检测性能不是很好。

  • c 和 b 一样是一张图片输入,不同的是并不是简单的只取最后的到的 feature map,而是同时输出了多个层的 feature map,也就是说输出的是一个特征组合。通常得到这个组合的方法有 concat, element wise add/multiply, 这里一般用的是 concat。也就是说此方法不只选用了最后一层的 high level feature maps,同样也会选用稍靠下的反映图片 low level 信息的 feature maps。比如 SSD 中就有类似的操作。

  • d 就是作者提出的 FPN,也是拿单一维度的图片作为输入,然后它会选取所有层的特征来处理然后再联合起来做为最终的特征输出组合。(作者在论文中拿Resnet为实例时并没选用Conv1层,那是为了算力及内存上的考虑,毕竟Conv1层的size还是比较大的,所包含的特征跟直接的图片像素信息也过于接近)。不同的是还对这些反映不同级别图片信息的各层自上向下进行了再处理,以能更好地组合从而形成较好的特征表达(详细过程会在下面章节中进一步介绍)。而此方法正是我们本文中要讲的FPN CNN特征提取方法。

值得一提的是,FPN 所采用的方式(下图中的下方的视图)并不是只用了融合了所有特征图的输出,而是自上而下融合后的每一步输出所共同构建的 feature pyramid。

3. FPN 细节

下面这张图解释了如何进行特征图融合。横向进行 1×1 的卷积操作,也就是为了改变 feature map 的 channel,使得 channel 相同,从上向下进行上采样(双线性插值),然后进行 element-wise 加法进行融合。

FPN 提供了一种端到端的构建 feature pyramid 的方法,它是可以被用到其他网络中的,比如 ResNet。
在这里插入图片描述

4. 思考

  • Q1:不同深度的 feature map 为什么可以经过 upsample 后直接相加?
    作者解释说这个原因在于我们做了end-to-end的training,因为不同层的参数不是固定的,不同层同时给监督做end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。

  • Q2:为什么 FPN 对小目标检测效果有提升?因为深层次的 feature map 提供了更多的语义信息,而浅层次提供了高分辨率的小目标,融合后可以更好的检测小目标。

  • Q3:如果不考虑时间情况下,image pyramid是否可能会比feature pyramid的性能更高?作者觉得经过精细调整训练是可能的,但是image pyramid(金字塔)主要的问题在于时间和空间占用太大,而feature pyramid可以在几乎不增加额外计算量情况下解决多尺度检测问题。

参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPN(Feature Pyramid Networks) 网络 的相关文章

  • Linux网络管理-配置网卡

    目录 一 概念 二 配置网卡 2 1 命令行配置 2 1 1 查询网卡 2 1 2 配置网卡 2 2查询IP地址 2 3 查询DNS 三 配置两台机器通信 3 1 查看参数 3 2 进入配置环境 3 3 重启网卡 四 主机改名 五 重点 扩
  • ChatGPT写文书再次翻车,行文寡淡没有灵魂一眼假!

    留学申请文书是每个渴望出国深造的学子都会面临的一道门槛 近年来 随着人工智能ChatGPT的迅猛发展 文能写文章 武能改Bug AI代写留学文书逐渐成为一种趋势 不少人直呼申请文书有救了 然而 这种趋势是否真的有益呢 或许 我们应该对这种现
  • ‘sleep_for’ is not a member of ‘std::this_thread’ 报错是因为版本太低

    1 GCC编译器 从编译器GCC4 8 X的版本完全支持 1 目前C 11特性 之前成为C 0X特性 从GCC4 3的后续版本中逐步对C 11进行支持 2 从官方信息可以看到 目前从完全对C 11特性进行支持的是从编译器GCC4 8 X的版
  • 虚拟数字人和GPT-4的结合,能否迎来新爆发?

    最近 ChatGPT一直在互联网上狂飙 从 去年11月底推出到月活过亿 仅花了2个月的 时间 它既可以拥有美国的医学牌照 参加司法考试 又能写小说 编代码 查资料 还可 以陪你闲聊 你问它什么话题 它都能对答如流 有模有样 3月13日 Ch

随机推荐

  • python模块openpyxl常用指令

    1 加载xlsx文件 from openpyxl import load workbook wb load workbook xlsx file 2 获取加载xlsx文件有哪些sheets 1 遍历方法 for sheet in wb pr
  • 【软件教程】如何让vscode连接ssh时免密登录

    准备软件 客户机安装vscode vscode官网https code visualstudio com 客户机和服务器配置ssh 确保能够连接 VSCode ssh免密登录教程 一 在Client客户机生成ssh密钥对 打开客户机的cmd
  • bat获取所有的参数

    bat默认只能获取到1 9个参数 分别用 1 2 9引用 如果传给bat的参数大于9个 就必须用shift 工作需要 要写个bat脚本 获取所有的参数 再将所有的参数传给Java 代码如下 allparam就是获取到的所有参数字符串 ech
  • Window 窗口属性及嵌入窗口到D3D渲染窗口顶层

    Window窗口有很多属性 可以通过设定window的style和ex style中知道 这些属性有时候在实现某些效果的时候 是非常非常重要 以前都没有怎么详细了解 只是在用到对应的API时看一下 根本没有详细深入 这里想记录一下最近工作上
  • Python 创建Windows窗口(GUI)

    创建Windows窗口 GUI py 基本的四要素 import tkinter 导入tkinter模块 root tkinter Tk 创建Window窗口对象 root title 我的第一个GUI程序 窗口标题 root mainlo
  • 屏幕截图的实现和源代码

    最近打算写一些入门相关的小应用程序开发实例 个人感觉学习程序开发 其关键的一步就是阅读源代码 RTFSC 呵呵 然后尝试自己动手编写 这里所谓的自己动手编写并不是让你照着源代码一句话一句的敲 也不是复制粘贴 而是阅读了源代码以后 学习其中的
  • 使用vscode 连接服务器 进行深度学习代码调试

    博主本来在Win上已经配好环境了 但是在跑代码的过程中 因为tensor拼接得太大了 导致笔记本内存不足 因此需要到服务器上跑 为什么选择vscode 如果直接用xshell连接服务器 在命令行运行py文件 不是很直观 也不能debug 还
  • Linux HugePage

    1 闲聊 有一段时间 数据库上出现过CPU消耗非常高的问题 最后分析到了Linux HugePage 发现自己对这一块都没什么了解 于是做了 些了解 Linux 下的大页分为两种类型 标准大页 Huge Pages 和透明大页 Transp
  • ZK实现SASL认证+Kafka连接ZK

    ZK实现SASL认证 Kafka连接ZK 关键词 zk sasl kfaka 未授权认证 参考文档 搭建Kafka集群时 对ZooKeeper认证与权限控制 http ohmycat me 2019 05 08 kafka with zoo
  • VUE element-ui之table表格中嵌套输入框,且输入框失焦自动勾选当前行

    步骤 表格中直接插槽法
  • linux tasklet 的分析与使用

    linux tasklet 的分析与使用 目录 linux tasklet 的分析与使用 tasklet 源码分析 tasklet shedule 调度的分析 tasklet 执行 tasklet 使用简单示例 结论 tasklet 是利用
  • HTTP协议深度剖析及其在各个阶段的作用

    作者 禅与计算机程序设计艺术 1 简介 HTTP HyperText Transfer Protocol 即超文本传输协议 是互联网中使用的基于TCP IP通信协议 HTTP是一个属于应用层的协议 由于其简洁 灵活 易用 快速的方式 越来越
  • three.js简介 —— 3D框架

    随着HTML5的普及 网页的表现能力越来越强大 浏览器提供了WebGL接口 可以通过调用对应API进行3D图形的绘制 Three js在这些基础接口之上又做了一层封装 原文链接 特点 Three js特点 掩盖了3D渲染细节 面向对象 功能
  • 大数据之数据仓库与信息采集平台实战

    一 Kylin前置概念 1 Kylin术语 1 Data Warehouse 数据仓库 数据仓库是一个各种数据 包括历史数据和当前数据 的中心存储系统 是BI business intelligence 商业智能 的核心部件 这里所谈的数据
  • Fegin的GET请求传对象

    学习笔记 Fegin的GET请求如何传递对象 近期做项目发现使用Fegin的GET请求时 如果使用了对象进行传输 会被当做POST请求处理 解决方法如下 1 接口使用 ModelAttribute注解 GetMapping getTest
  • Rose 画序列图

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 1 序列图的定义 在 UML 的表示中 序列图将交互关系表示为一个二维图 其中 纵向是时间轴 时间沿竖线向下延伸 横向代表了在协作中各
  • 在这里,读懂中国人工智能发展史

    2022年末 由OpenAI开发的大数据模型ChatGPT横空出世 激发了社会各界对于人工智能的极大兴趣 支持者有之 反对者亦不乏 我国的百度 华为 阿里巴巴等科技企业都已向人工智能领域投入了大量资源 并已取得初步成果 由于人工智能的新发展
  • 设置路由器显示检查代理服务器连接失败,路由器设置成功了可检测认证连接失败是为什?...

    希望我的回答对你有用 拨号的时候有没有出现错误代码 提示错误的代码是什么 ADSL拨号错误代码详解 错误 602 The port is already open 问题 拨号网络网络由于设备安装错误或正在使用 不能进行连接 原因 RasPP
  • openCV上图片显示中文c++

    准备材料 1 中文汉字库 2 中文显示扩展类 cvxFont h ifndef OPENCVUNICODE CVXFONT H define OPENCVUNICODE CVXFONT H include
  • FPN(Feature Pyramid Networks) 网络

    FPN 网络 1 前言 通常在神经网络中 浅层特征图 feature maps 的感受野比较小 包含语义信息比较少 但是其空间位置信息准确 而深层网络 感受野大 语义信息强 但是由于 pooling 等造成了像素位置信息丢失等 所以空间位置