深度学习-图像识别FPN(Feature Pyramid Networks)

2023-10-28

一、FPN

卷积网络的一个重要特征:深层网络容易响应语义特征,浅层网络容易响应图像特征。但是到了物体检测领域,这个特征便成了一个重要的问题,高层网络虽然能响应语义特征,但是由于Feature Map的尺寸较小,含有的几何信息并不多,不利于物体检测;浅层网络虽然包含比较多的几何信息,但是图像的语义特征并不多,不利于图像的分类,这个问题在小尺寸物体检测上更为显著,这也就是为什么物体检测算法普遍对小物体检测效果不好的最重要原因之一。很自然地可以想到,使用合并了的深层和浅层特征来同时满足分类和检测的需求。
提出了特征金字塔的网络结构,能在增加极小的计算量的情况下,处理好物体检测中的多尺度变化问题。

在这里插入图片描述

  • 从上图a是一个特征图像金字塔结构,把图片缩放到不同的尺度,每个尺度的图片经过算法进行预测,生成多少个不同的尺度,就要进行多少次预测,效率就会很低。
  • 图b是faster RCNN采用的方式,将图片通过backbone得到最后的特征图,再进行预测。针对小目标的检测并不是很好。
  • 图c跟SSD算法用的类似,一张图片输入给backbone,得到的不同的特征图上分别进行预测。
  • 图d就是FPN结构,在不同特征图上进行融合,再进行预测。

二、FPN的整体架构

在这里插入图片描述
层1、2、3对应的支路就是bottom-up网络,就是所谓的预训练网络,文中使用了ResNet网络,每一级往上缩小2倍;由于整个流向是自底向上的,所以我们叫它bottom-up;层4、5、6对应的支路就是所谓的top-down网络,是FPN的核心部分,名字的来由也很简单。

例如,下图是fasterRCNN的网络结构,左列ResNet用每级最后一个Residual Block的输出,记为{C1,C2,C3,C4,C5}。

  • FPN用2~5级参与预测(因为第一级的语义还是太低了),{C2,C3,C4,C5}表示conv2,conv3,conv4和conv5的输出层(最后一个残差block层)作为FPN的特征,分别对应于输入图片的下采样倍数为{4,8,16,32}。
    在这里插入图片描述

  • Top-down pathway and lateral connections
    自顶向下的过程通过上采样(up-sampling)的方式将顶层的小特征图。放大到上一个stage的特征图一样的大小。

    上采样的方法是最近邻插值法:
    在这里插入图片描述
    对于使用最近邻插值法的个人思考:使用最近邻值插值法,可以在上采样的过程中最大程度地保留特征图的语义信息(有利于分类),从而与bottom-up 过程中相应的具有丰富的空间信息(高分辨率,有利于定位)的特征图进行融合,从而得到既有良好的空间信息又有较强烈的语义信息的特征图。

在这里插入图片描述
具体过程为:C5层先经过1 x 1卷积,改变特征图的通道数(文章中设置d=256,与Faster R-CNN中RPN层的维数相同便于分类与回归)。M5通过上采样,再加上(特征图中每一个相同位置元素直接相加)C4经过1 x 1卷积后的特征图,得到M4。这个过程再做两次,分别得到M3,M2。M层特征图再经过3 x 3卷积(减轻最近邻近插值带来的混叠影响,周围的数都相同),得到最终的P2,P3,P4,P5层特征。

另外,和传统的图像金字塔方式一样,所有M层的通道数都设计成一样的,本文都用d=256。

在这里插入图片描述
上图也是在描述FPN网络结构,在p5的基础上进行下采样得到p6,p6只用于RPN部分

在这里插入图片描述

FPN应用于RPN层

Faster RCNN中的RPN是通过最后一层的特征来做的。最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。这里将特征层之后的RPN子网络称之为网络头部(network head)。对于特征层上的每一个点,作者用anchor的方式预设了9个框。这些框本身包含不同的尺度和不同的长款比例。

FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{322、642、1282、2562、512^2}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。

四、FPN总结

  • FPN构架了一个可以进行端到端训练的特征金字塔
  • 通过CNN网络的层次结构高效的进行强特征计算
  • 通过结合bootom-up和top-down方式获取较强的语义特征,提高目标检测和实例分割在多个数据集上面的性能表现
  • FPN这种架构可以灵活地应用在不同地任务上,包括目标检测、实例分割等;
  • Faster R-CNN+FPN细节图
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习-图像识别FPN(Feature Pyramid Networks) 的相关文章

  • system.exit(0) 和 system.exit(1)区别

    system exit 0 和 system exit 1 java lang System源码 方法说明如下 Terminates the currently running Java Virtual Machine The argume
  • 面试题整理|45个CSS面试题

    面试题整理 45个CSS面试题 一 初级CSS面试题 二 中级CSS面试题 三 进阶CSS面试题 四 HTML5 CSS3还原美团外卖 移动端布局实战 CSS已成为Web设计不可或缺的一部分 它让web页面变得更加美观 更具设计感 在前端面
  • Linux 文件描述符

    Linux 文件描述符 Linux 中一切皆文件 比如 C 源文件 视频文件 Shell脚本 可执行文件等 就连键盘 显示器 鼠标等硬件设备也都是文件 一个 Linux 进程可以打开成百上千个文件 为了表示和区分已经打开的文件 Linux

随机推荐

  • 扑克牌游戏——C语言

    一 设计目的 扑克牌是我们从小玩到大的纸牌类小游戏 我们有各种玩法跟不同的规则 我之所以选择的这个扑克牌 是因为我觉得可以提高我的编程逻辑能力跟运用循环的能力 还能让我自由运用所学知识完成我的项目设计的需求 对我综合能力的能力很有挑战 二
  • Cookie的格式及组成

    Cookie由变量名和值组成 类似Javascript变量 其属性里既有标准的Cookie变量 也有用户自己创建的变量 属性中变量是用 变量 值 形式来保存 根据Netscape公司的规定 Cookie格式如下 Set Cookie NAM
  • refind linux内核参数,使用rEFInd实现OpenWRT / LEDE支持UEFI GPT启动

    实际上我使用的Hyper v第一代虚拟机运行LEDE17真的非常的稳定 网速各方面都非常满意了 最近可能没事找事的把Windows Server2012 R2 Hyper v第一代虚拟机里面也是运行的非常稳定的CentOS7 重新安装到Hy
  • Cisco的路由器、交换机设置 Console 密码和 Enable 密码

    进入特权模式 Switch gt en 进入全局模式 Switch conf t 修改设备名称 Switch config hostname SwPassWord 进入Console接口 line console 0 设置密码1 SwPas
  • 各种排序应用场合

    时间复杂度 O n n 插入排序 选择排序和冒泡排序 O nlogn 快速排序 堆排序和归并排序 影响排序效果的因素 待排序的数据规模 关键字的结构及其初始状态 稳定性的要求 语言工具的条件 存储结构 时间和辅助空间复杂度 应用场景 若n较
  • 【LeetCode刷题】228 汇总区间 java

    题目 给定一个 无重复元素 的 有序 整数数组 nums 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 也就是说 nums 的每个元素都恰好被某个区间范围所覆盖 并且不存在属于某个范围但不属于 nums 的数字 x 列表中的每个
  • tnscmd.pl

    usr bin perl tnscmd a lame tool to prod the oracle tnslsnr process 1521 tcp tested under Linux x86 OpenBSD Sparc perl5 I
  • jmockit使用

    官网 http jmockit github io tutorial Introduction html runningTests org jmockit jmockit jmockit version test maven surefir
  • 华为OD机试 - 数组组成的最小数字

    题目描述 给定一个整型数组 请从该数组中选择3个元素组成最小数字并输出 如果数组长度小于3 则选择数组中所有元素来组成最小数字 输入描述 一行用半角逗号分割的字符串记录的整型数组 0 lt 数组长度 lt 100 0 lt 整数的取值范围
  • c语言——指针的运用与表示

    指针 1 定义 基类型 指针变量名 2 赋值 int a int pa a int a pa a int p2 p2 a 两个运算符 取地址 后面操作数必须是变量 指针运算符 后面的操作数必须是指针 int a 3 int pa a a 正
  • python--文件的循环导入及模块查找顺序

    目录 文件循环导入问题 模块的查找顺序 验证模块查找顺序的方法 绝对导入与相对导入 文件循环导入问题 上一篇我们介绍了模块 文件的导入 现在重点讲一下文件的导入 两个文件彼此导入彼此 循环导入的时候极有可能出现某个名字还没有被创建就是用的情
  • Docker(linux container) 所依赖的底层技术

    Docker linux container 所依赖的底层技术 1 Namespace 用来做PID的隔离 有了namespace 在docker container里头看来 就是一个完整的linux的世界 在host看来 containe
  • Jmeter---BeanShell解析JSON格式的响应数据

    首先 分析一下接口的响应数据 了解接口返回数据的结构类型 如下数据所示 我们想要获取的是normalList里面的status值 但是响应结果是列表 可能是会存在多个记录 所以在实现过程中我们通过遍历normalList中的所有数据 或者是
  • JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!

    原文链接 https mp weixin qq com s MZOcDjKm4oy9mGEG3R QYA 作者 fredal https fredal xin java error check CPU 磁盘 内存 GC问题 网络 线上故障主
  • 获取网卡名称存入数组 对网卡执行相关操作

    背景 由于服务器网卡获取ip异常 需要对做bond网卡进行相关网络操作 bond网卡操作 正常执行nmlic命令 环境问题对要执行的网卡本身只有四行命令 为了防止出现多业务网卡和vlan主网卡的情况 这里选择自动获取bond网卡执行相关操作
  • 修改@vue/cli搭建的项目中默认icon图标

    今天使用 vue cli搭建了一个项目 然后想修改一下网页的icon图标 但是在public文件夹下直接替换图标 不会改变网页的icon图标 文件夹目录如下 用项目logo的icon文件替换原始的icon 重启项目还是vue默认的icon
  • 「面试题」20+Vue面试题整理

    微信搜索 前端食堂 你的前端食堂 记得按时吃饭 本文已收录在前端食堂 Github https github com Geekhyt front end canteen 感谢Star 从镜片的厚度和黄黑相见的格子衬衫我察觉到 面前坐着的这位
  • JS des加密解密

    引用库 des解密 function decryptByDES ciphertext var keyHex CryptoJS enc Utf8 parse 秘钥 var decrypted CryptoJS DES decrypt ciph
  • 《计算机网络基础与应用》笔记

    文章目录 前言 1 1认识网络 1 2 认识网络标准及通信协议 1 3认识数据通信技术 1 4选择网络的拓扑结构 2 1考察网络传输介质 2 2考察网络设备 2 3实现网络结构化布线系统 2 4配置网络设置 2 5实现局域网的硬件连接 3
  • 深度学习-图像识别FPN(Feature Pyramid Networks)

    文章目录 一 FPN 二 FPN的整体架构 FPN应用于RPN层 四 FPN总结 一 FPN 卷积网络的一个重要特征 深层网络容易响应语义特征 浅层网络容易响应图像特征 但是到了物体检测领域 这个特征便成了一个重要的问题 高层网络虽然能响应