FPN网络详解(知识点记录)

2023-10-26

FPN网络详解

特征图金字塔网络FPNFeature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。

通常,利用网络对物体进行检测时,浅层网络分辨率高,学到的是图片的细节特征,深层网络,分辨率低,学到的更多的是语义特征

1、通常的CNN使用如下图中显示的网络,使用最后一层特征图进行预测

例如VGG16,feat_stride=16,表示若原图大小是1000*600,经过网络后最深一层的特征图大小是60*40,可理解为特征图上一像素点映射原图中一个16*16的区域;那这个是不是就表示,如果原图中有一个小于16*16大小的小物体,是不是就会被忽略掉,检测不到呢!

所以,使用上图中的网络的缺点就是,会造成检测小物体的性能急剧下降

  1. 如果上面的单层检测会丢失细节特征;就会想到,利用图像的各个尺度进行训练和测试,比如下图所展示(图片金字塔生成特征金字塔)

将图片缩放成多个比例,每个比例单独提取特征图进行预测,这样,可以得到比较理想的结果,但是比较耗时,不太适合运用到实际当中。

  1. 为了节约时间,直接使用卷积网络中产生的各层特征图分别进行预测

SSD网络也采用了类似的思想,这种方法的问题在于,让不同深度的特征图去学习同样的语义信息,同样会忽略掉底层网络中的细节特征

  1. FPN网络,网络结构原理如下图所示

先来说下FPN能解决什么问题

FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能

左边的称为“自底向上”,右边的称为“自上而下”

①   自底向上:

自底向上的过程就是神经网络普通的正向传播过程,特征图经过卷积核计算,通常会越变越小

②   自上而下:

自上而下的过程是把更抽象、语义更强的高层特征图进行上采样,然后把该特征横向连接至前一层特征,因此,高层特征得到了增强,每一层预测所用的feature map都融合了不同分辨率、不同语义强度的特征,可以完成对应分辨率大小的物体进行检测,保证每一层都有合适的分辨率以及强语义特征。

值得注意的是:横向连接的两层特征在空间尺寸上要相同,这样做可以利用底层定位细节信息

上面通过文字描述完成了FPN网络的演化历程及其基本原理,下面通过一张图,对FPN的工作原理进行补充描述(基于ResNet50网络)

从上图中可以很清晰的看到FPN工作的原理

解决的问题

是否存在一种可能搭建精度、效率都高的目标检测模型,在很宽的资源限制范围内都可以满足?(就是模型能不能扩展,在大机器上用大模型,小机器上用小模型

两大挑战

论文进行了系统性的实验,对于骨干网络、特征融合以及class/box预测网络进行测试,得到两个挑战

1、高效的多尺度特征融合(特征尺度变换)

大多数的方法是将输入的特征直接加在一起,但是因为这些特征所处的分辨率不同,对于输出特征的贡献是不等的。

2、模型尺度变换

其他的方法主要依赖更大的骨干网络或者更大的输入图片获得更高的精度。对于特征网络和class/box预测网络的尺度扩展也很重要。

主要贡献

1、提出了BiFPN结构:一个加权双向特征网络和一个快速多尺度特征融合

2、提出模型的复合尺度变换方法,同时对骨干网络、特征网络、box/class预测网络和分辨率进行扩展

3、基于以上,开发了EfficientDet,可以适配宽范围的计算资源

BiFPN模块

要说清BiFPN首先要说FPN,论文提供了一张图

BiFPN是对PANet的改动,提出了三个优化

1、删掉那些只有一个输入边的节点,因为只有一个输入边的节点就没有特征融合,对特征网络的贡献少

添加了从原始输入到输出节点的边(同一级别的输入输出)

  1. 把双向路径看作是一个特征网络层,就可以多次重复特征层得到更多的特征融合。(就是图中f子图,可以把f图当作一个层,可以多次重复,前一层的5个输出当作后一层的5个输入)

权特征融合

EfficientDet

应用EfficientNets做骨干网络,取骨干网络的3~7级特征,重复应用BiFPN融合

https://www.cnblogs.com/wangyong/p/8535044.html

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

FPN网络详解(知识点记录) 的相关文章

  • 计算公式python

    输入整数n 1 lt n lt 10000 计算公式1 1 1 2 1 1 2 n 的值 输入形式 从控制台输入整数n 1 lt n lt 10000 输出形式 控制台输出公式结果 小数点后保留4位 鲜例输入 4 样例输出 1 6000 样
  • python 使用pymysql连接Mysql方法

    调用如下方法传入sql 即可得到返回数据 链接 import pymysql from pymysql cursors import DictCursor def getData sql 1 连接数据库 conn pymysql conne
  • C++类模板 template

    类模板与函数模板的定义和使用类似 有时 有两个或多个类 其功能是相同的 仅仅是数据类型不同 如下面语句声明了一个类 class Compare int public Compare int a int b x a y b int max r
  • 7.24 两道二进制题目练习的总结

    1 兴趣是最好的老师 首先我们把根据PE文件的格式知道这个文件本身有错误 所以不能在IDA中打开 我们先把它在010Editor exe中修改一下 我们把PE头改为50 45 00 00 然后就把它拉入IDA中 然后打开 找到有程序的开始进
  • powershell共享服务器写文件,Powershell共享文件夹

    使用Powershell自动设置文件共享 需要用到WMI对象 WIN32 Share类 确保共享的文件夹是否存在 如果不存在就创建 创建一个WIN32 Share对象 查看WIN32 Share对象支持的方法 查看WIN32 Share的c
  • DVWA-XSS (Stored) Low/Medium/High低中高级别

    作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 XSS Stroed 一 Low级别 二 Medium级别 三 Hign级别 这关是
  • 七、VPN技术之隧道技术原理与VPN技术原理(PPTP协议、L2TP协议、MPLS VPN、Web VPN)

    更多网络基础内容可见 网络基础学习目录及各章节指引 7 2 GRE 虽然计算机网络技术已经逐步发展完善和成熟 并且具有通用的OSI模型体系和TCP IP模型体系 但是各类厂商公司在研发自己的网络设备时 依旧会有自己私有协议的存在 当我们在发
  • Python3.7 Scrapy 执行爬虫任务提示:Unknown command: crawl

    Windows cmd 窗口执行爬虫任务指令 提示如下错误信息 错误的原因 误删了Scrapy 项目下的scrapy cfg的文件 导致上面错误情况的发生
  • Python 邻接矩阵实现无向图、有向图的三种方法,并绘图显示

    网上查了很多资料 发现主要是使用邻接表来实现图 并进行遍历的 而采用邻接矩阵的就非常少 不得已 就只有闭门造车 埋头苦修 小有成果 供后来学习者研究 通过二维数组建立无向图 通过二维数组建立有向图 通过边建立有向图 为方便查看 通过Netw
  • 【模块介绍】WS2812(硬件部分)

    目录 引脚定义 电气属性 电路连接 PCB 软件部分 引脚定义 这是数据手册中引脚定义图和连接方式 可以看出 这个灯是自带芯片控制R G B三色的亮度 可以通过上级的DOUT gt 下级的DIN来使其进行级联 电容官方建议是使用100nF
  • 【元壤教育AI提示工程系列】『KeepChatGPT教程』轻松解决ChatGPT网络报错,畅享无忧沟通!

    元壤教育 中国AIGC提示工程培训的佼佼者 关注 元壤教育 公众号 系统学习AIGC系列课程 提升您10倍生产力 装插件前是这样的 我们使用ChatGPT时 总是因为网络魔法不力的原因导致页面总是报错 如下图所示 装完插件后是这样的 外链图
  • Java整合Redis实现腾讯云短信服务(轻松入门,超详细)

    目录 Java使用腾讯云短信服务 一 短信服务简介 二 准备工作 二 Java操作 三 项目链接 Java使用腾讯云短信服务 一 短信服务简介 首先我们要大致知道短信服务是干什么的 云服务提供商通过短信服务向手机号发送短信 我们可以在云服务
  • PowerShell切换路径

    打开PowerShell 输入以下代码 加将要转换的路径 回车 Set location Path
  • iOS学习笔记一

    文章目录 一 深浅拷贝 二 消息转发机制 三 运行时添加一个类 一 深浅拷贝 浅拷贝只是将指针赋值 而深拷贝进行了内容传递 在Objective C中 NSObject的拷贝方式有两种 copy和mutablecopy 对于NSString
  • 我的2013

    今天是2013年的最后一天 天气格外的晴朗 站在公司的写字楼上 能够看到远处的山水 一直都习惯在一年的最后总结一下 总结自己哪些地方在成长 哪些地方有收获 哪些地方需要改进 但是最近一两年来 却很难回忆一些什么 因为每天都过的差不多 今天下
  • 96道前端面试题+前端常用算法

    这篇文章主要分享一些收集整理的面试题 希望能对大家有所帮助 字节 一面 1 说一下浏览器缓存 2 cookie 与 session 的区别 3 浏览器如何做到 session 的功能的 4 解释一下 csrf 和 xss 5 怎么防止 cs
  • TypeError: load() missing 1 required positional argument: ‘Loader‘

    最近使用yaml load 时报错 TypeError load missing 1 required positional argument Loader 记录原因 YAML 5 1版本后弃用了yaml load file 这个用法 因为
  • 面向对象编程思想

    面向对象编程思想 Object Oriented Programming 面向过程编程思想面向过程核心思想 自顶向下 逐步求精 面向对象编程思想面向对象核心思想 以对象为单位 将解决客观世界问题的方式方法引入到编程领域中 面向对象编程是面向

随机推荐

  • SpringBoot 2.x应用监控配置

    Springboot 2 x应用监控 作用 用于管理 监控应用 暴露自身信息 减少应用系统在采集应用指标的开发量 1 添加依赖
  • 区块链基本概念(一)

    区块链的基本概念 其概念为 区块链是一个去中心化的分布式数据库 改数据库有一串使用密码学方法产生的数据区块有序连接而成 区块中包含有一定时间内产生的无法被篡改的数据记录信息 区块中包含数据记录 当前区块根哈希 Hash 前一区块根哈希 时间
  • Java注解与反射详解

    Java注解与反射详解 注解 Annotations 是Java语言中的一项功能强大的特性 它们提供了一种在源代码中添加元数据的方式 注解可以用于标记 配置和处理程序中的元素 如类 方法 字段等 而反射 Reflection 是Java的一
  • 鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统

    Java版工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离 功能清单如下 首页 工作台 待办工作 消息通知 预警信息 点击可进入相应的列表 项目进度图表 选择 总体或
  • [羊城杯 2023] web

    文章目录 D0n t pl4y g4m3 D0n t pl4y g4m3 打开题目 可以判断这里为php Development Server 启动的服务 查询得知 存在 PHP lt 7 4 21 Development Server源码
  • 第5讲 Java注释详解

    您的 关注 和 点赞 是认可 是支持 是动力 如意见相佐 可留言 本人必将竭尽全力试图做到准确和全面 终其一生进行修改补充更新 本文首发在IT羊资源网 IT羊资源网 网址 https www ityangzy com IT羊资源网是IT世界
  • 从零开始编写JNI

    最近项目中用到了JNI 本以为很简单的 没想到花了我一天的时间才搞定 主要是在过程中遇到了一个大坑 下面就详细说说 出现的问题是这样的 代码一运行到System loadLibrary xxx 时 就提示java lang Unsatisf
  • 修改omv的国内镜像服务器,Openmediavault教程 篇二:软件源的更改以及社区插件启用...

    Openmediavault教程 篇二 软件源的更改以及社区插件启用 2021 01 11 17 54 49 6点赞 28收藏 16评论 更改软件源之前需要先将社区插件启用 这样就可以一起将源改变成国内镜像 这样免得后面安装插件的时候又要重
  • ubuntu 20.04 安装 微信,QQ等客户端,一键安装,亲测成功,最新更新,优麒麟

    之前一直使用网页版微信 但是聊天记录完全无法存留 一旦断网就会退出登录 然后每次登录都要确认 很麻烦 要是有ubuntu下的微信客户端就好了 但是并不是所有的客户端都一样好用 博主安装并实测了几个ubuntu下的微信客户端 发现基于wine
  • 第一个爬虫程序,基于requests和BeautifulSoup

    断断续续学了1年多python 最近总算感觉自己入门了 记录下这几天用requests和BeautifulSoup写的爬虫 python的环境是anaconda pycharm 直接上代码 requires authorization 作者
  • Shopify如何使用Google的站长工具

    Shopify在做SEO的时候 Google为我们提供了一个简单的工具 让我们了解它如何看待您的网站 哪些问题可能会影响您的流量 以及您如何改进网站以获得更好的排名和结果 这个工具就是 Google Search Console 这个工具已
  • 深度优先算法dfs

    转载https blog csdn net u014394715 article details 51192293 深度优先算法 定义 深度优先搜索算法 英语 Depth First Search 简称DFS 是一种用于遍历或搜索树或图的算
  • 小程序字符串提取图片地址src导致苹果手机体验版白屏

    小程序开发中想把一段html字符串里图片的src取出来 这段html字符串如下图 var srcReg lt src ig 正则 var imgarr content match srcReg content就是图中的字符串 得到的imga
  • 微信小程序使用setData修改数组中的指定下标的属性值

    注释的比较详细 就不过做多解释了 index js 获取应用实例 const app getApp Page 这里data就是你当前界面所有的值 包括你后期动态添加的值都在这里 data list 定义数组 number 1 number
  • shell 脚本里的命令嵌套

    shell 脚本里的命令执行 1 在bash中 与 反引号 都是用来作命令替换的 命令替换与变量替换差不多 都是用来重组命令行的 先完成引号里的命令行 然后将其结果替换出来 再重组成新的命令行 与 在操作上 这两者都是达到相应的效果 但是建
  • thinkphp验证规则

    thinkphp6可以通过验证器验证数据表的字段 规则 验证条件加表名 如uniqu admin user 示例如下 protected rule username 用户名 gt require chsDash unique admin u
  • Java基础-匿名内部类

    匿名内部类可以作为方法的实际参数进行传输
  • JavaScript 数组中常用的方法

    添加 push 数组末尾添加 unshift 数组首位添加 splice 1 0 新增内容 再指定位置插入 第二参数为0 表示新增 大于0 表示修改 删除 pop 删除末尾 shift 删除首位 slice 0 1 删除指定数据 不会改变原
  • 《计算机网络 第七版》读后感

    上大学时 计算机网络是必修的一门课程 讲课的老师是学校里很资深的一个教授 非常有耐心 尽管如此 如今的我还是把那些知识都丢的所剩无几了 其实在工作中 就算是普通的程序员 用到计算机网络的相关知识也不算少 比如 Socket 再比如 RTSP
  • FPN网络详解(知识点记录)

    FPN网络详解 特征图金字塔网络FPN Feature Pyramid Networks 是2017年提出的一种网络 FPN主要解决的是物体检测中的多尺度问题 通过简单的网络连接改变 在基本不增加原有模型计算量的情况下 大幅度提升了小物体检