FPN以及其他结构FPN——Bi-FPN重点(仅供自己学习使用)

article/2025/9/22 8:44:21

FPN
FPN特征金字塔结构。
由于目标检测中对小物体检测很困难,因为卷积过程中,大物体的像素点多,小物体的像素点少,随着卷积的深入,大物体的特征容易被保留,小物体的特征越往后越容易被忽略。所以产生了FPN结构。如下图就是FPN结构图。
在这里插入图片描述
其对特征点进行不断的下采样后,拥有了一堆具有高语义内容的特征层,然后重新进行上采样,使得特征层的长宽重新变大,用大size的feature map去检测小目标。
当然不可以简单只上采样,因为这样上采样的结果对小目标的特征与信息也不明确了,因此我们可以将下采样中,与上采样中长宽相同的特征层进行堆叠,这样可以保证小目标的特征与信息。和U-net结构很相似。但多了堆叠的过程。

Bi-FPN
在EfficientDet中提出了一种加权的双向特征金字塔网络,它允许简单和快速的多尺度特征融合。作者的目的是为了追求更高效的多尺度融合方式。

以往的特征融合是平等地对待不同尺度特征,作者引入了权重(类似于attentio
n),更好地平衡不同尺度的特征信息。
在论文中作者也有与其他FPN的对比。
在这里插入图片描述
FPN 引入了一条自顶向下的通道来融合特征;
PANet 在 FPN 基础上增加了一条自底向上的通道;
NAS-FPN 使用了搜索出来的不规则的拓扑结构。https://arxiv.org/abs/1904.07392

在搜索过程中,研究者的目标是发现具有相同输入和输出特征级别并且可以被重复应用的微粒架构。模块化搜索空间使得搜索金字塔架构变得易于管理。
但是它需要167M参数和3045BFLOPS(比RetinaNet[17]多30倍),模型尺寸巨大,计算成本昂贵。

下图是PANet,
在这里插入图片描述
为此,我们建立了一条从低层到高层的干净的横向连接路径。因此,在这些级别上有一个由少于10个层组成的快捷方式(图1中绿色虚线)。相比之下,FPN中的CNN主干提供了一条很长的路径(图1中虚线),从底层到顶层甚至经过100多个层。

创新:
不同于其他的FPN结构(不同 resolution 的特征融合时直接相加),但实际上它们对最后 output 的贡献是不同的,所以作者希望网络来学习不同输入特征的权重,即 weighted feature fusion。
• PANet 的一种简化版,去除掉只有一条输入 边 和输出边 的 结点
• BiFPN ,在 PANet 简化版的基础上,若输入和输出结点是同一 level 的,则添加一条额外的边,在不增加 cost 的同时融合更多的特征。(注意, PANet 只有一条 top-down path 和一条 bottom-up path ,而本文作者是将 BiFPN 当作一个 feature network layer 来用的,重复多次。

在这里插入图片描述

由于不同的输入特征具有不同的分辨率,它们对输出特征的贡献通常是不相等的。为了解决这个问题,为每个输入添加额外的权重,并让网络了解每个输入特征的重要性。作者考虑了三种方法

在这里插入图片描述
在这里插入图片描述

###### 简单的注意力机制,用于确定更关注p5_up还是p4_in
p4_w1 = self.p4_w1_relu(self.p4_w1)
weight = p4_w1 / (torch.sum(p4_w1, dim=0) + self.epsilon)
p4_up = self.conv4_up(self.swish(weight[0] * p4_in_1 + weight[1] * self.p4_upsample(p5_up)))### # 简单的注意力机制,用于确定更关注p4_up还是p3_in
p3_w1 = self.p3_w1_relu(self.p3_w1)
weight = p3_w1 / (torch.sum(p3_w1, dim=0) + self.epsilon)
p3_out = self.conv3_up(self.swish(weight[0] * p3_in + weight[1] * self.p3_upsample(p4_up)))

代码部分主要是想看权重如何实现的。
总的来说 Bi-FPN相当于给各个层赋予了不同权重去进行融合,让网络更加关注重要的层次,而且还减少了一些不必要的层的结点连接。


http://chatgpt.dhexx.cn/article/uXgKapwK.shtml

相关文章

FPN(Feature Pyramid Networks)详解

图像金字塔结构 图a 图a是在传统的图像处理当中是比较常见的一个方法。针对我们要检测不同尺度的目标时,会将图片缩放成不同的尺度,然后将每个尺度的图片依次通过我们的算法进行预测。 优点是它创建的多尺度特征的所有层次都包含很强的语义特征&#xf…

FPN解读

前两篇博客中都说到了FPN这个神器,今天就花了点时间看了下这篇论文,喜欢这个很赞很干净的结构。 Motivation 凡是都要从motivation说起,哈哈哈。rcnn系列在单个scale的feature map做检测(b),尽管conv已经对scale有些鲁棒了&#…

目标检测之FPN网络详解

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达特征图金字塔网络FPN(Feature Pyramid Networks)是2017年提出的一种网络,FPN主要解决的是物体检测中的多尺度问题,通过简单…

FPN网络

论文是CVPR2017年的文章,采用特征金字塔做目标检测,有许多亮点,特来分享。 论文链接:https://arxiv.org/abs/1612.03144 译文:https://blog.csdn.net/quincuntial/article/details/80152314 FPN解决了什么问题&…

各种FPN:PANet、ASFF、NAS-FPN、BiFPN、Recursive-FPN...

早期的物体检测算法,无论是一步式的,还是两步式的,通常都是在Backbone的最后一个stage(特征图分辨率相同的所有卷积层归类为一个stage)最后一层的特征图,直接外接检测头做物体检测。此种物体检测算法&#…

FPN网络详解

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

FPN详解

论文题目:Feature Pyramid Networks for Object Detection 论文链接:论文链接 论文代码:Caffe版本代码链接 一、FPN初探 1. 图像金字塔 图1 图像金字塔 图2 高斯金字塔效果 如上图所示,这是一个图像金字塔,做CV的你…

卷积神经网络——FPN(Feature Pyramid Networks)介绍

FPN(Feature Pyramid Networks):特征金字塔网络,是用来提取不同尺度特征图的,提供给后面的网络执行预测任务。 为什么需要FPN呢?简要介绍一下,在目标检测的网络中,要识别不同大小的物体是该网络实现检测的基…

详解FPN网络

目录 导读 摘要 简介 相关工作 FPN算法 FPN应用于RPN FPN应用于Fast RCNN 对比实验 FPN对RPN网络的影响 FPN对Fast RCNN网络的影响 总结 参考文献 导读 《Feature Pyramid Networks for Object Detection》这篇文章主要是用来解决Faster RCNN物体检测算法在处理多尺…

深度学习中的FPN详解

深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、FPN提出原因 二、FPN的参考思想 三、特征金字塔 四、FPN具体思路 一、FPN提出原因 卷积网络中,深层网…

CICD概念 k8s DevOps

概念 先看下docker官网给的相关文档 Continuous Integration (CI) and Continuous Delivery (CD) methodologies are key traits of a modern software development practice. Docker Enterprise Edition (Docker EE) can be a catalyst for this DevOps mindset, integrating …

Gitlab CICD配置runner

首先要安装gitlab-runner,安装过程略 1.进入Gitlab项目界面,点击侧边栏Settings->CD/CD→Runners Collapse→Specific runners,获得URL与token 2.登录装有gitlab-runner的电脑,命令行输入gitlab-runner register注册runner&am…

CICD与DevOps

CICD与DevOps 文章声明,本文选自网上关于CICD与DevOps的讲解综合,如有侵权,联系删除 什么是CI/CD 什么是持续集成(CI-Continuous integration) 持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一…

【云原生-DevOps】企业级DevOps平台搭建及技术选型-CICD篇

又是开篇 上一篇文章我们大概分享了DevOps项目管理中怎么企业级搭建本篇文章主要介绍两个子系统【CICD、效能看板】 CICD系统 CI(Continuous Integration):指持续集成,它属于开发人员的自动化流程。持续集成是一种软件开发实践&…

CICD和K8S实战

部署流程 拉取镜像,用docker 部署harbor镜像仓库 harbor是一个docker私有镜像仓库。 1、创建项目 2、创建成员 3、为项目添加成员。 后续是jenkins往harbor上传镜像,所以还需要一台jenkins服务器。 向harbor上传镜像 业务服务器 用来最终测试cd的结果。…

CICD构建实验

CICD CICD是一个可以集部署、拉取、上传等于一体的架构环境,它支持一线进行部署,免去了人工一条条的进行部署环境的工作流程,大大降低了人力手工运维成本和出错率。 CICD的搭建需要至少三台服务器,他们分别监管着Harbor&#xff…

请问什么是 CICD

CI,Continuous Integration,持续集成。CD,Continuous Deployment,持续部署。CICD 一般合称,无需特意区分二者区别。从开发、测试到上线的过程中,借助于 CICD 进行一些自动化处理,保障项目质量。 CICD 与 git 集成在一起,可理解为服务器端的 git hooks: 当代码 push 到…

企业级生产环境CICD入门

代码上线方案 部署代码,就是把程序包,传到linux服务器上,然后运行。 以前都是手动上传。 合理化上线方案 上线之前需要备份。 大型企业上线制度和流程 代码上线解决方案注意事项 持续集成,持续交付,持续部署&#…

前端搭建CICD流程

用Docker-compose 安装gitlab、gitlab-runner 源码地址 如果您觉得有用请STAR 安装docker 如果有已安装旧版docker需要先卸载 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docke…