特征金字塔

特征金字塔特征金字塔 FeaturePyram 是用于检测不同尺度的对象的识别系统中的基本组件 多尺度上识别目标是计算机视觉的一个挑战 通过提取多尺度的特征信息进行融合 进而提高模型精度 目前多尺度物体检测主要面临的挑战 1 如何学习具有强语义信息的多尺度特征表示 2 如何设计通用的特征表示来解决物体检测中的多个子问题 如目标类别 定位 分割等 3 如何高效计算多尺度的特征表示

参考文献:FPN特征金字塔网络解读 – 简书 (jianshu.com)

Feature Pyramid Networks for Object Detection (简称FPN)

首先看几种卷积分类方式:

1.Featurized image pyramid图像金字塔

特征金字塔

因为需要缩放原图然后进行卷积,这种卷积方式肯定是耗内存的,最不科学的。

2.Single feature map

特征金字塔

 就是简单的分类网络,如AlexNet等。使用Single feature map的包括R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、YOLOv1以及R-FCN系列。他框不出来小物体。

3.Pyramidal feature hierarchy 

特征金字塔

使用Pyramidal feature hierarchy的包括SSD。SSD没有上采样过程,因为是在原有特征图上预测的,所以也不会增加额外的计算开销,但作者认为SSD没有用到足够底层的特征,而越底层的特征对检测小物体越有利。SSD用的最底层的特征是conv4_3

总结:上面abc这三种卷积方式都不是特征理想,那么怎么才能兼顾准确率(检测小物体)和速度(开销)呢?

FPN的框架

 4.Feature Pyramid Network特征金字塔

特征金字塔

参照d图及下图。特征金字塔网络相当于先进行传统的bottom-up自上而下的特征卷积(d图左侧),然后FPN试图融合左侧特征图的相邻的特征图。左侧模型叫bottom-up,右侧模型叫top-down,横向的箭头叫横向连接lateral connections这么做的目的是因为高层的特征语义多,低层的特征语义少但位置信息多。

 

具体做法是两个特征层的较高层特征2倍上采样(上采样方法很多,上采样几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素,总之是把feature大小扩大了一倍)。较低层特征通过1×1卷积改变一下低层特征的通道数,然后简单地把将P的上采样和1×1卷积后的结果对应元素相加。为什么横向连接要使用1×1卷积呢,为什么不能原地不动地拿过来呢?原来在于作者想用1×1改变通道数,以达到各个level处理结果的channel都为256-d,便于后面对加起来的特征进行分类。这段文字表述的即是下图。

特征金字塔

 FPN只是提取特征的一种方法而已,这篇论文作者的应用于实验主要是在Faster R-CNN上进行的。

特征金字塔

应用 

1.FPN for RPN

RPN即一个用于目标检测的一系列滑动窗口。具体地,RPN是先进行3×3,然后跟着两条并行的1×1卷积,分布产生前背景分类和框位置回归,我们把这个组合叫做网络头部network head

但是前背景分类与框位置回归是在anchor的基础上进行的,简言之即我们先人为定义一些框,然后RPN基于这些框进行调整即可。在SSD中anchor叫prior,更形象一些。为了回归更容易,anchor在Faster R-CNN中预测了3种大小scale,宽高3种比率ratio{1:1,1:2,2:1},共9种anchor框。

在FPN中我们同样用了一个3×3和两个并行的1×1,但是是在每个级上都进行了RPN这种操作。既然FPN已经有不同大小的特征scale了,那么我们就没必要像Faster R-CNN一样采用3种scale大小的anchor了,我们只要采用3种比率的框就行了。所以每个级level的anchor都是相同的scale。所以我们在​上分别定义anchor的scale为​,在每级level的​上有{1:1,1:2,2:1}三种宽高比率ratio的框。所以我们在特征金字塔上总共有15个anchor。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205828.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:05
下一篇 2026年3月19日 下午5:05


相关推荐

  • Enterprise Library 使用

    Enterprise Library 使用转自:http://blog.csdn.net/tuo19840423/article/details/5687757 安装EnterpriseLibrary,添加DAAB应用程序块1. 在配置工具中修改属性2. 直接在项目的Web.config文件中修改属性二.          具体项目中设置1. 在项目参照设定中 引入所需Ent

    2022年10月20日
    5
  • 语音合成综述

    语音合成综述title:语音合成综述tags:新建,模板,小书匠grammar_cjkRuby:true语音相关基础知识点:时域信号:一维原始信号傅里叶变换:得到频域特征短时傅里叶变换:傅里叶变换得到了频域信号,但是丢失了时域信号,所欲通过STFT得到时频信号梅尔频谱倒谱系数:单单频率信号表达不足,为了更加和人的耳朵听觉相符,我们使用了mel窗滤波,得到人耳的频率段幅度系数梅尔声谱…

    2022年6月26日
    32
  • Ubuntu18.04安装PCL(详细教程)

    Ubuntu18.04安装PCL(详细教程)

    2020年11月8日
    650
  • python实现——处理Excel表格(超详细)

    python实现——处理Excel表格(超详细)目录 xls 和 xlsx 基本操作 1 用 openpyxl 模块打开 Excel 文档 查看所有 sheet 表 2 1 通过 sheet 名称获取表格 2 2 获取活动表 3 1 获取表格的尺寸 4 1 获取单元格中的数据 4 2 获取单元格的行 列 坐标 5 获取区间内的数据获取指定区间的数据获取指定行列的数据按行 列获取值获取活动表的行列数操作创建新的 excel 修改单元格 excel 另存为添加数据插入有效数据插入空行空列删除行 列移动指定区间的单元格 move range 字母列号与数字列号之间的转换字体样式查看字体样式修改字体样式设

    2026年3月26日
    1
  • aligned_aligned_alloc

    aligned_aligned_alloc如果STL容器中的元素是Eigen库数据结构,例如这里定义一个vector容器,元素是Matrix4d,如下所示:vector<Eigen::Matrix4d>;这个错误也是和上述一样的提示,编译不会出错,只有在运行的时候出错。解决的方法很简单,定义改成下面的方式:vector<Eigen::Matrix4d,Eigen::aligned_allocator<…

    2025年6月6日
    6
  • c#数组与集合_将数组a和数组b合并为数组c

    c#数组与集合_将数组a和数组b合并为数组cc#数组与集合

    2022年4月21日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号