当前位置: 首页 > article >正文

【深度学习之三】FPN与PAN网络详解

FPN与PAN:深度学习中的特征金字塔网络与路径聚合网络

在深度学习的领域里,特征金字塔网络(Feature Pyramid Networks,简称FPN)路径聚合网络(Path Aggregation Network,简称PAN) 是两个引人注目的架构。它们都被设计用来增强深度神经网络对多尺度目标的检测能力。尽管它们的目标相同,但实现方式却各有特色。下面,我们将详细探讨这两种网络的工作原理和区别。

一、FPN:自顶向下的特征金字塔(CVPR2017年文章中提出)

FPN是一种自顶向下的架构,它通过构建一个特征金字塔来强化语义信息,主要用于解决目标检测中的多尺度问题。FPN通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。
在深度神经网络中,高层特征通常包含更强的语义信息,而低层特征则包含更丰富的定位信息。FPN将高层的强语义特征通过上采样和横向连接的方式传递到低层,从而对整个金字塔进行增强。这种方式使得网络在保持语义信息的同时,也能更好地处理不同尺度的目标。然而,FPN有一个明显的缺陷,那就是它只传递了语义信息,而没有传递定位信息。这就导致了在某些情况下,网络可能无法准确地定位目标。
在这里插入图片描述

  1. a)多尺度输入----将输入图像resize成多个尺度,然后对每个尺度的图像提取出不同尺度的特征,这种方法计算量很大,因为要进行多次特征提取,即走了好几遍backbone。
  2. b)使用单特征层----将特征提取网络最后一层输出的特征图,拿去做检测、识别,这是最早期,最一般的方法,该方法的缺点在于,最后一层特征图的尺寸一般都比较小了,无法准确定位目标。
  3. c)多尺度特征----在特征提取时,保留中间层的不同尺度上的特征图,对每个尺度的特征图进行预测,这样做是不错的,但是高层特征图只具有丰富的语义信息,而低层特征图只有丰富的位置信息,没有将两者进行结合。
  4. d)FPN----对高层特征图(尺寸越小越高)进行上采样,然后跟上一层的特征图进行相加融合,这样就使融合后的特征图既包含高层的语义信息,又包含低层的结构信息。而且这样做只增加少量的计算量,是完全可以接受的。。

二、PAN:自底向上的特征聚合

针对FPN的这一缺陷,PAN应运而生。PAN在FPN的基础上,增加了一个自底向上的金字塔,以传递低层的强定位特征。这种“双塔战术”不仅保留了FPN的语义增强能力,还补充了定位信息的传递,使得网络在处理多尺度目标时更加全面和准确。在PAN中,低层的特征通过下采样和横向连接的方式传递到高层,与FPN的自顶向下传递形成互补。这样,网络就能同时利用高层的语义信息和低层的定位信息,提高了目标检测的精度。
在这里插入图片描述
在这里插入图片描述
如图在FPN的自上而下形成的特征金字塔的基础上,来以下这波操作就是PAN啦

(1)先复制特征金字塔中最底下的那层(①),变成新特征金字塔的最底层。

(2)将新特征金字塔的最底层来一个下采样操作,然后原特征金字塔的倒数第二层进行一个3 * 3卷积,步幅为2;然后与下采样后的最底层进行一个横向连接,两者相加。最后再来一个3 * 3卷积来融合他们的特征。

三、FPN与PAN的区别

  1. 信息传递方向:FPN是自顶向下的信息传递方式,主要强化语义信息;而PAN则增加了自底向上的信息传递方式,以补充定位信息的传递。
  2. 网络结构:FPN只构建了一个特征金字塔,而PAN则构建了两个金字塔,一个自顶向下,一个自底向上,形成了“双塔战术”。
  3. 应用效果:由于FPN只传递了语义信息,因此在处理某些需要精确定位的目标时可能会受限;而PAN则通过传递定位信息,提高了网络对多尺度目标的处理能力。

四、实际应用与实践经验

在实际应用中,FPN和PAN都有广泛的用途。FPN由于其简洁而高效的结构,常被用于各种目标检测任务,如RetinaNet、YOLOv3等。而PAN则在一些需要更高精度的任务中表现出色,如实例分割、关键点检测等。
对于实践者来说,选择使用FPN还是PAN,需要根据具体的任务需求和网络结构来决定。如果任务主要关注语义信息,那么FPN可能是一个更好的选择;如果任务需要更精确的定位,那么PAN可能更适合。


http://www.kler.cn/a/443811.html

相关文章:

  • Chrome 浏览器原生功能截长屏
  • 【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
  • Python读取Excel批量写入到PPT生成词卡
  • 秒优科技-供应链管理系统 login/doAction SQL注入漏洞复现
  • CE之植物大战僵尸植物无冷却
  • TDesign:NavBar 导航栏
  • 为SSH2协议服务器的用户设置密钥
  • “视觉革命:走进可视化AI识别系统的智能世界
  • 深度学习项目的 Python 实现复现指南
  • Day27 - 大模型微调,LLaMA搭建
  • 初学stm32 ——— 串口通信
  • elementui在任意页面点击消息,弹出消息对应页面处理弹窗
  • 2.metagpt中的软件公司智能体 (ProductManager 角色)
  • @Resource与@Autowire
  • VGGNet:深度学习中的卷积神经网络经典之作
  • Elasticsearch 实战应用:开启数据搜索与分析新征程
  • c++ 找第一个只出现一次的字符
  • 人力资本管理SaaS的升级之路:群硕以本地化+云创新驱动行业变革
  • Java聊天室系统的设计与实现【源码+文档】
  • java数据类型(补充-引用类型)
  • 整点(枚举)
  • React 19有哪些新特性?
  • WPF+MVVM案例实战与特效(四十四)- WPF多语言支持全解析:轻松实现国际化应用
  • List;Set;Map集合
  • C++总结联想文档
  • Leetcode3266:K 次乘运算后的最终数组 II