深度学习-路径聚合网络(PANet网络)

article/2025/9/19 17:47:58

文章目录

  • 1、概括
  • 2、介绍
  • 3、特征金字塔网络(FPN)
  • 4、PANet
  • 5、改进点

1、概括

信息在神经网络中的传播方式非常重要。为了促进信息的流动,提出了一种基于提议的实例分割框架下的路径聚合网络Path Aggregation Network (PANet)。具体地说,我们通过自底向上的路径增强,利用准确的低层定位信号增强整个特征层次,从而缩短了低层与顶层特征之间的信息路径。提出了自适应特征池adaptive feature pooling,它将特征网格和所有的特征层连接起来,使每个特征层中的有用信息直接传播到下面的建议子网络。为了进一步改进掩码预测,创建了一个互补的分支,用于为每个提案捕获不同的视图。

2、介绍

实例分割Instance segmentation是最重要、最具挑战性的任务之一。它的目的是预测类标签和像素化实例掩码来定位图像中呈现的不同数量的实例。这项任务广泛地惠及自动驾驶汽车、机器人、视频监控等等。

在深度卷积神经网络的帮助下,提出了几种分割框架,其中性能增长较快的是(VOC) 。掩码R-CNN是一种简单有效的实例分割系统。基于Fast/Faster R-CNN,采用全卷积网络(full tional network, FCN)进行掩码预测,并进行box回归和分类。为了获得较高的性能,利用特征金字塔网络(feature pyramid network, FPN)提取网络内的特征层次结构,通过对具有横向连接的自顶向下路径进行扩展来传播语义上较强的特征。

3、特征金字塔网络(FPN)

如下图conv5、conv4、conv3、conv2,分别对应高层、中层、底层特征,这里将其特征融合得到M5、M4、M3、M2特征图最终得到的P2-5等特征图可以用于预测。
在这里插入图片描述
FPN就是这样,自顶向下的模式,将高层特征传下来。而底层特征却无法影响高层特征,并且FPN中的这种方法中,顶部信息流往下传,是逐层地传,计算量比较大。PANet解决了这一问题。

4、PANet

在这里插入图片描述

PANet引入了自底向上的路径,使得底层信息更容易传递到高层顶部。左边图(a),V3中讲过,特征融合,featureMap越小,感受野越大;可能要走例如100层,才能遍历玩ResNet。现在假如要将底层特征传递到特征图顶部,如图a红线,如果是采用上述FPN算法,可能要走很多层,增加了很多计算量。
而PANet采用的是:在进行自顶向下的特征融合后(实际上,PANet无论是bottom-top,还是top-bottom进行特征信息传递,都是在“从原始网络中提取低、中、高层特征图之后”进行的),然后再进行自下向上这里遍历的最终的特征图P2-5,而不是原始100多层特征图)的特征融合,如图(b)绿色线条,这样特征传递需要“穿越”的特征图数量大大减少,几层就到了。
下图,第三列中表示自顶向下(top-bottom)信息传递,第三列表示自下向上(bottom-top)信息传递。
在这里插入图片描述
YOLOV4对PAN(PANet)还有一点小改进,使用张量连接(concat)代替了原来的捷径连接(shortcut connection,残差连接里面有)。YOLOV4中再特征融合时不是加法,而是特征堆叠。
在这里插入图片描述

5、改进点

PANet是18年的一篇CVPR,作者来自港中文,北大,商汤与腾讯优图,PANET可看作Mask-RCNN+,是在Mask-RCNN基础上做的几处改进。
论文地址:https://arxiv.org/abs/1803.01534
论文出发点:当前实例分割最佳模型Mask-RCNN的信息传播还不够充分,具体地,低层特征到高层特征的传递路径过长,FPN中每个proposal只负责金字塔特定的一层,掩码预测只基于单一视角。
论文创新:

  • 自底向上的路径增强,为了缩短信息传播路径,同时利用低层特征的精准定位信息
  • 动态特征池化,每个proposal利用金字塔所有层的特征,为了避免proposal的随意分配
  • 全连接层融合,为了给掩码预测增加信息来源
    在这里插入图片描述

详细解释

  1. 自底向上路径增强
    如上图中所示,FPN是自顶向下,将高层的强语义特征传递下来,对整个金字塔进行增强,不过只增强了语义信息,对定位信息没有传递,而本文就是针对这一点,在FPN的后面添加一个自底向上的金字塔,可以说是很皮了。这样的操作是对FPN的补充,将低层的强定位特征传递上去,个人称之为”双塔战术“。
  2. 动态特征池化
    FPN中的每个proposal根据其大小分配给不同的特征层,但这样可能不够好,原因如下,一是按照大小来分配本身有缺陷,大小相近的proposal可能分配到相邻的层,二是特征的重要程度可能与层级没什么关系,这是论文中的解释,我觉得这两点无关痛痒,我认为这个特征池化层的好处关键是每个proposal聚合了多层的信息,对分类及定位更加有利。至于融合的细节,也就是C中的小圆圈,可参考下图
    在这里插入图片描述
    金字塔上四个灰色区域对应的是同一个proposal,根据特征图相应缩放,分别取到特征后进行融合,上图只是box分支的融合图,掩码分支的论文中没有画出来,但原理是一样的,拿上图来说,四个特征图分别全连接,然后融合,融合操作或者采取max,或者sum,或者相乘。
  3. 全连接层融合
    全连接层具有不同于CNN的结构,CNN产生的特征图上每个像素点来自同一个卷积核,也就是常说的参数共享,另外,卷积核的大小往往为33,55,7*7,也就是说采集的是局部的信息。

全连接层其实可由卷积实现,可看作感受野为整个特征图的卷积核,所以全连接层是感受野更大的卷积,另外,这里的卷积参数不共享,每个像素点拥有一个卷积核,所以区别在于感受野和参数是否共享,文中说全连接层是位置敏感的,这一点我还没看出来,我个人觉得在感受野上的补充应该是一个重要的功能,至于对位置更加敏感,有利于定位,我无法理解。


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

相关文章

Linux | Strace使用

文章目录 1、strace的基本介绍2、strace的使用实例2.1、直接运行结果2.2、strace追踪系统调用(strace ./test)2.3、strace跟踪信号传递2.4、系统调用统计使用-c参数,它会将进程的所有系统调用做一个统计分析展示出来-o选项重定向输出-T选项对系统调用进行计时系统调…

linux下strace的使用

strace是一款用于跟踪Linux系统调用和信号的工具,可以帮助开发者排除程序运行时的问题。 具体来说,strace可以跟踪一个程序执行时所涉及到的系统调用,包括读写文件、网络通信、进程管理、内存管理等操作,通过分析程序运行过程中发…

linux strace命令--跟踪系统调用

简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用…

Linux常用命令——strace命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) strace 跟踪系统调用和信号 补充说明 strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者…

【转】strace命令详解

Article1: strace是什么? 按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 strace底层使用内核的ptrace特性来实现其…

强大的strace命令用法详解

strace是什么? 按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 strace底层使用内核的ptrace特性来实现其功能。 在运维的日常工作…

Linux命令之strace命令

一、命令简介 strace是一个有用的诊断、指导和调试工具。系统管理员、诊断专家和故障解决人员将发现,对于解决源代码不易获得的程序的问题,这是非常宝贵的,因为它们不需要重新编译以跟踪它们。学生、黑客和过分好奇的人会发现,通过…

strace命令使用分析

strace命令介绍与用法 1.1 strace概述 在操作系统中,进程分为用户态进程和内核态进程,应用程序运行在用户态,内核态负责对资源包括网络,磁盘,内存等管理,用户态进程要访问这些资源时,需要通过…

【已解决】安装Ubuntu时怎样分区--利用EasyBCD在win7下进行ubuntu安装(双系统)时遇到报错:没有根文件系统,请回到分区菜单以修正此错误

由于我们离不开Windows操作,并且因为不熟悉而不习惯ubuntu的操作方式,固采用Win7和Ubuntu双系统方式比较合理。在Win7基础上安装Ubuntu,Ubuntu会自动建立一个启动菜单,让我们在开机时自行选择启动Win7还是Ubuntu。 1、在win7上安…

根文件系统挂载过程—基于linux3.10

本文基于linux3.10某一嵌入式系统,该文件系统的配置选项设置如下: 图1.1 根文件系统配置选项设置 两行配置如下: [*] Initial RAMfilesystem and RAM disk (initramfs/initrd) support (usr/rootfs.cpio.gz)Initramfs source file(s) 这两…

JFFS2根文件系统制作

一.根文件系统简介 根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如inittab、rcS)和服务加载到内存中去运行。 文件系统…

ARM Linux启动流程-根文件系统的加载

前言 在Kernel启动的初始阶段,首先去创建虚拟的根文件系统(rootfs),接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统,也即真实的文件系统。   接下来结核内核代码(内核版本:linux-…

怎么使用 Buildroot 构建根文件系统

1. Buildroot 简介 制作根文件系统有归多种方法: ① 使用Busybox手工制作 Busybox本身包含了很了Linux命令,但是要编译其他程序的话需要手工下载、编译,如果它需要某些依赖库,你还需要手工下载、编译这些依赖库。 如果想做一个极…

一文讲解Linux内核中根文件系统挂载流程

根文件系统的概念 根文件系统是控制权从linux内核转移到用户空间的一个桥梁。linux内核就类似于一个黑匣子,只向用户提供各种功能的接口,但是功能的具体实现不可见,用户程序通过对这些功能接口的不同整合实现不同的功能需求。以用户的角度来…

【linux kernel】挂载根文件系统之rootfs

挂载根文件系统之rootfs 文章目录 挂载根文件系统之rootfs一、开篇二、rootfs根文件系统(2-1)初始化rootfs(2-2)挂载rootfs文件系统(2-3)创建简单的rootfs根文件系统目录和文件(2-4)…

2021年Linux技术总结(三):根文件系统(rootfs)

# 一、根文件系统简介 Linux系统三大块:U-boot、kernel以及最后这个rootfs,跟文件系统。在kernel中,启动流程的最后会调用 prepare_namespace 函数,挂载根文件系统,这里就是挂载的本篇要说的。 根文件系统保存了内核代…

详解制作根文件系统

目录 前言 具体步骤 一.编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 二.利用交叉编译工具链,构建/lib目录 三.手工构建/etc目录 四.手工构建最简化的/dev目录 五.创建其它空目录 六.配置系统自动生成/proc目录和构建…

根文件系统理解

文件系统概念 文件系统是一些代码,是一套软件,这套软件的功能就是对存储设备的扇区进行管理,将这些扇区的访问变成了对目录和文件名的访问。我们在上层按照特定的目录和文件名去访问一个文件时,文件系统会将这个目录文件名转换成对…

linux之根文件系统

前言 1、板卡上电后首先由UBOOT启动初始化板卡,将Linux内核移到内存中运行 2、由linux内核自行做了初始化等操作,挂在了第一个应用程序上(根文件系统/linuxrc) 3、根文件系统会提供磁盘管理服务,glibc设备节点&…

Linux:根文件系统构建

文章目录 一、编译 BusyBox 构建根文件系统1.创建BusyBox路径并解压2.修改顶层Makefile3.修改 busybox 源码4.配置busybox5.编译busybox6.向 rootfs 的“/lib”目录添加库文件7.向 rootfs 的“usr/lib”目录添加库文件创建其他文件夹 二、NFS挂载根文件系统1.bootargs 环境变量…