AI大视觉(十七) | PANet(路径聚合网络)

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

本文来自公众号“AI大道理”。

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。

目标检测或者实例分割不仅要关心语义信息,还要关注图像的精确到像素点的浅层信息。

所以需要对骨干网络中的网络层进行融合,使其同时具有深层的语义信息和浅层的纹理信息。

PANet整体结构

PANet(Path Aggregation Network)最大的贡献是提出了一个自顶向下和自底向上的双向融合骨干网络,同时在最底层和最高层之间添加了一条“short-cut”,用于缩短层之间的路径。

PANet还提出了自适应特征池化和全连接融合两个模块。

其中自适应特征池化可以用于聚合不同层之间的特征,保证特征的完整性和多样性,而通过全连接融合可以得到更加准确的预测mask。

PANet的整体结构:

PANet的网络结构如图1所示,它由5个核心模块组成。

其中(a)是一个FPN,(b)是PAN增加的自底向上的特征融合层,(c)是自适应特征池化层,(d)是PANet的bounding box预测头,(e)是用于预测掩码的全连接融合层。

FPN

在FPN中,因为要走自底向上的过程,浅层的特征传递到顶层需要经过几十个甚至上百个网络层,当然这取决于BackBone网络用的什么,因此经过这么多层传递之后,浅层的特征信息丢失就会比较严重。

(a)的最左侧是一个线性网络结构,通过这个自底向上模块,可以得到 [C1、C2、C3、C4、C5] 五组不同尺寸的Feature Map。

FPN通过自顶向下的路径得到4组Feature Map: [P5、P4、P3、P2] 。

其中上采样采用的是双线性差值, Pi 和Ci 的融合采用的是单位加的方式。

FPN的融合方式

PANet

PANet在FPN的自底向上的路径之后又添加了一个自底向上的路径,通过这个路径PANet得到 [N2、N3、N4、N5] 共4个Feature Map。

PANet通过一个更浅层的Ni 和更深层的Pi+1 融合的方式得到它的下一层Ni+1 ,以N2 到N3 的计算为例。

它先通过一个步长为2的3*3 卷积对N2进行下采样,再通过单位加的方式将P3和下采样之后的Feature Map进行特征融合。

接着再使用一个3*3的卷积对特征进行融合,增加融合之后的特征的表征能力。

最后使用ReLU激活函数对特征进行非线性化。

在PANet中,[N3、N4、N5]均是采用上面的融合方式,而N2是直接复制的P2的值。

PANet的融合方式

此外PANet还在自顶向下模块和自底向上模块各添加了一个跨越多层的shortcut,如图中的红色和绿色虚线。

自适应特征池化

在FPN中,每个Feature Map都会输出一个预测结果。

FPN这么做的原因是出于感受野和网络深度成正比的关系,即网络越深,网络上的像素点的感受野越大。

但其实不同的层次的Feature Map的不同特性并不仅仅只有感受野,还有它们不同的侧重点,基于这个思想,PANet提出了融合所有层的Feature Map的池化操作:自适应特征池化层。

自适应特征池化先将通过RPN提取的ROI压缩成一维的特征向量,然后通过取max或者取和的方式进行不同Feature Map的融合,最后在融合之后的基础上记性bounding box和类别的预测。

全连接融合

全连接和FCN都被广泛应用到分割图的预测,但是FCN和全连接都有它们各自的优点。

FCN给出的像素点级别的预测是基于它的局部感受野和共享的卷积核。

全连接的特点在于它是对位置敏感的,因为它对于不同的空间位置的预测都是使用不同的参数进行预测的,因此全连接层具有适应不同空间位置的能力。

同时全连接的每个像素点的预测都是基于整个图的信息,这对于区分物体是否是同一个对象也非常重要。

基于这个动机,PANet提出了对FCN和全连接融合的结构。

其主分支由4个连续的3*3卷积核一个上采样2倍的反卷积组成,它用来预测每个类别的mask分支。

全连接融合的另一个分支是从conv3叉出的一个全连接层,它先通过两个3*3卷积进行降维,然后将其展开成一维向量,然后通过这个向量预测类别不可知的前景/背景的mask。

最后再通过一个reshape操作将其还原为 28*28的Feature Map。

这里一般只使用一个全连接层,因为两个以上的全连接会使空间特征遭到破坏。

最后在单位加和一个sigmoid激活函数得到最终输出。

Yolo v4中的PANet

PANet位在于YOLOv4模型的neck,主要通过保留空间信息来增强实例分割过程。

当图像经过神经网络的各个层时,特征的复杂度增加 ,同时图像的空间分辨率降低 。

YOLOv3中使用的FPN使用自顶向下的路径来提取语义丰富的特征并将其与精确的定位信息结合起来。

但对于为大目标生成mask,这种方法可能会导致路径过于冗长,因为空间信息可能需要传播到数百个层。

另一方面,PANet使用另一条自底向上的路径,而FPN采用的自顶向下的路径。

通过使用从底层到顶层的横向连接,这有助于缩短路径。

这就是所谓的“shortcut”连接,它只有大约10层。

PANet通常使用自适应特征池化将相邻的层相加到一起进行mask预测。

但是,在YOLOv4中使用PANet时,这种方法做了点修改,不是相加相邻的层,而是对它们应用一个拼接操作,以提高预测的准确性。

张量连接concat也是一种融合方式,只不过把如何融合交给了下一层卷积核的学习。

而add有一种先验在里面,就是假设特征图的每层代表着不同的语义信息,而待融合的两个特征图每个层是对应的,并且相比于concat,add操作使得相加以后,对应的层对应的特征分享相同的权重。

总结

PANet是一个加强版的FPN,它通过融合自底向上和自顶向下两条路径的方式增强了骨干网络的表征能力。

自适应特征池化使模型自己选择在预测不同物体时选择不同的Feature Map,避免了目标尺寸和网络深度的硬性匹配。

最后,PANet的全连接融合的输出头通过在原来的Mask分支的基础上增加了全连接分支,提升了预测的掩码的质量。

  

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

     

—————————————————————

投稿吧   | 留言吧


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

相关文章

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

文章目录 1、概括2、介绍3、特征金字塔网络(FPN)4、PANet5、改进点 1、概括 信息在神经网络中的传播方式非常重要。为了促进信息的流动,提出了一种基于提议的实例分割框架下的路径聚合网络Path Aggregation Network (PANet)。具体地说,我们通过自底向上…

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设备节点&…