每日Attention学习1——Parallel Aggregation Pyramid Pooling Module

server/2024/11/14 12:48:27/
模块出处

[CVPR 23] [link] [code] PIDNet: A Real-time Semantic Segmentation Network Inspired by PID Controllers


模块名称

Parallel Aggregation Pyramid Pooling Module (PAPPM)


模块作用

多尺度特征提取,更大感受野


模块结构

在这里插入图片描述


模块代码
import torch
import torch.nn as nn
import torch.nn.functional as Fclass PAPPM(nn.Module):def __init__(self, inplanes, branch_planes, outplanes, BatchNorm=nn.BatchNorm2d):super(PAPPM, self).__init__()bn_mom = 0.1# Avg 5,2 + Convself.scale1 = nn.Sequential(nn.AvgPool2d(kernel_size=5, stride=2, padding=2),BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, branch_planes, kernel_size=1, bias=False),)# Avg 9,4 + Convself.scale2 = nn.Sequential(nn.AvgPool2d(kernel_size=9, stride=4, padding=4),BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, branch_planes, kernel_size=1, bias=False),)# Avg 17,8 + Convself.scale3 = nn.Sequential(nn.AvgPool2d(kernel_size=17, stride=8, padding=8),BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, branch_planes, kernel_size=1, bias=False),)# Avg Global + Convself.scale4 = nn.Sequential(nn.AdaptiveAvgPool2d((1, 1)),BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, branch_planes, kernel_size=1, bias=False),)# Convself.scale0 = nn.Sequential(BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, branch_planes, kernel_size=1, bias=False),)self.scale_process = nn.Sequential(BatchNorm(branch_planes*4, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(branch_planes*4, branch_planes*4, kernel_size=3, padding=1, groups=4, bias=False),)self.compression = nn.Sequential(BatchNorm(branch_planes * 5, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(branch_planes * 5, outplanes, kernel_size=1, bias=False),)self.shortcut = nn.Sequential(BatchNorm(inplanes, momentum=bn_mom),nn.ReLU(inplace=True),nn.Conv2d(inplanes, outplanes, kernel_size=1, bias=False),)def forward(self, x):algc = Falsewidth = x.shape[-1]height = x.shape[-2]        scale_list = []x_ = self.scale0(x)scale_list.append(F.interpolate(self.scale1(x), size=[height, width],mode='bilinear', align_corners=algc)+x_)scale_list.append(F.interpolate(self.scale2(x), size=[height, width],mode='bilinear', align_corners=algc)+x_)scale_list.append(F.interpolate(self.scale3(x), size=[height, width],mode='bilinear', align_corners=algc)+x_)scale_list.append(F.interpolate(self.scale4(x), size=[height, width],mode='bilinear', align_corners=algc)+x_)scale_out = self.scale_process(torch.cat(scale_list, 1))out = self.compression(torch.cat([x_,scale_out], 1)) + self.shortcut(x)return outif __name__ == '__main__':pappm = PAPPM(inplanes=1024, branch_planes=96, outplanes=256)x = torch.randn([3, 1024, 8, 8])out = pappm(x)print(out.shape)  # 3, 256, 8, 8

原文表述

为了更好地构建全局场景先验,PSPNet引入了金字塔池化模块(PPM),在卷积层之前串联多尺度池化映射,形成局部和全局上下文表示。文献[20]提出的深度聚合PPM(DAPPM)进一步提高了PPM的上下文嵌入能力,并显示出卓越的性能。然而,DAPPM的计算过程无法就其深度进行并行化,耗时较长,而且DAPPM每个尺度包含的通道过多,可能会超出轻量级模型的表示能力。因此,我们修改了DAPPM中的连接,使其可并行化,如图6所示,并将每个尺度的通道数从128个减少到96个。这种新的上下文采集模块被称为并行聚合PPM(PAPPM),并应用于PIDNet-M和PIDNet-S,以保证它们的速度。注意,对于更大的变体PIDNet-L,考虑到其深度,我们选择DAPPM。


http://www.ppmy.cn/server/41843.html

相关文章

PHP数值数组讲解,for循环及函数 遍历数组获取元素

源码 <?phpheader("Content-Type:text/html;Charsetutf8");//创建数值数组$arr1 array();//简化创建语法 $arr2 [];//通过索引为数组添加不同类型的元素$arr1[0] "zhangsan" ;//也可以乱序添加元素$arr1[2] 12 ;$arr1[1] true ; //true输出为1 f…

摸鱼大数据——Linux搭建大数据环境(Hadoop集群的web-ui和安装Hive)四

集群web-ui 一旦Hadoop集群启动并运行&#xff0c;可以通过web-ui进行集群查看&#xff0c;如下所述&#xff1a; 访问HDFS的NameNode主机 : http://192.168.88.101:9870/ 访问YARN的ResourceManager主机 : http://192.168.88.101:8088/ 注意: 想要上传文件夹需要配置本地域…

微信小程序中的数据可视化组件封装艺术【附代码】

微信小程序中的数据可视化组件封装艺术 一、数据可视化的魅力与重要性数据可视化简述为什么要在小程序中封装数据可视化组件 二、微信小程序数据可视化基础小程序中的绘图工具&#xff1a;Canvas 三、实战&#xff1a;封装一个简易折线图组件设计思路组件结构&#xff08;line-…

解决springboot+vue静态资源刷新后无法访问的问题

一、背景 原项目是有前后端分离设计&#xff0c;测试环境是centos系统&#xff0c;采用nginx代理和转发&#xff0c;项目正常运行。 项目近期上线到正式环境&#xff0c;结果更换了系统环境&#xff0c;需要放到一台windows系统中&#xff0c;前后端打成一个jar包&#xff0c;…

Ubuntu24安装搜狗输入法,修复闪屏问题

下载deb安装包&#xff1a;搜狗输入法linux-首页 安装&#xff1a;sudo dpkg -i 1.deb 搜狗输入法linux-安装指导 重启&#xff0c;但是完成后闪烁。按以下步骤更改桌面配置。 sudo gedit /etc/gdm3/custom.conf 取消WaylandEnable的注释即可

免费WordPress主题可以商用吗?不可以

免费WordPress主题可以商用吗?不可以商用。 使用WordPress免费主题进行商业活动确实存在一些风险和不推荐的原因&#xff0c;以下是一些额外的不能商用的理由&#xff1a; 缺乏专业性&#xff1a;免费主题往往是由个人开发者或爱好者制作的&#xff0c;可能缺乏专业设计和开…

深⼊理解指针(5)

目录 1. 回调函数是什么&#xff1f;1.1 使用回调函数修改 2. qsort使⽤举例2.1 使⽤qsort函数排序整型数2.2 使⽤qsort排序结构数据按年龄排序2.3 使⽤qsort排序结构数据按名字排序2.4整体代码 3. qsort函数的模拟实现3.1 整型数组的实现3.2 结构体按名字排序实现3.3 结构体按…

机器学习-监督学习

监督学习是机器学习和人工智能中的一个重要分支&#xff0c;它涉及使用已标记的数据集来训练算法&#xff0c;以便对数据进行分类或准确预测结果。监督学习的核心在于通过输入数据&#xff08;特征&#xff09;和输出数据&#xff08;标签或类别&#xff09;之间的关系&#xf…