前言文章标题给出了四种Pooling的方法,这feature pooling方法是我在看论文的时候看到的,从最开的PoI Pooling到目前最新的Precise RoI Pooling由Pooling RoI Pooling这种Pooling方法我是在Faster RCNN中看到的,该种Pooling方法采用的运算方法比较直接。下面是其计算的流程图:? 2)得到Pooling结果。 RoIWrap Pooling该Pooling方法比前面提到的Pooling方法稍微好一些。 2)得到Pooling结果。
https://blog.csdn.net/Solo95/article/details/85017049 整理并翻译自吴恩达深度学习系列视频:卷积神经网络1.9 Pooling layers Other than convolutional layers, ConvNets often use pooling layers to reduce the size of their 计算output维度变为: ⌊n+2p−fs+1⌋\lfloor \frac{n+2p-f}{s}+1\rfloor⌊sn+2p−f+1⌋ Average Pooling ?
Graph Pooling 简析 Pooling 是一种用于图表征提取的技术,通常用在图分类上面。 image.png 个节点的属性向量 image.png 是边集,其中 image.png 是边的属性向量 我们记这个图的邻接矩阵为 image.png 借助论文“Understanding Pooling in Graph Neural Networks” 我们使用其中的 SRC 来对Pooling方法进行总结。 Reduce函数会将一个超节点(可能包含一个或多个节点)映射到一个属性向量,该属性向量对应Pooling后图的超节点 Connect函数会计算出超节点的边集 SRC formalization 在Pooling 操作之后,我们将一个N节点的图映射到一个K节点的图 按照这种方法,我们可以给出一个表格,将目前的一些Pooling方法,利用SRC的方式进行总结 Pooling Methods 这里以 DiffPool
1.概要 池化是一个抽象概念,这里主要了解一下Memory Pooling。C# 池化(Pooling)是一种内存管理技术,旨在提高性能和降低资源消耗。它涵盖多个方面,包括对象池、内存池和连接池等。 内存池(Memory Pooling):内存池是一种管理内存分配和回收的方法。它有助于避免内存碎片化,并提高内存分配的效率。 Memory Pooling Memory Pooling是一种内存管理技术,旨在提高性能和减少内存分配的开销。 使用Span和Memory:Memory Pooling通常与Span和Memory一起使用,这些类型允许您以更高效的方式访问内存。 减少内存碎片化:Memory Pooling还有助于减少内存碎片化,因为它可以重复使用已分配的内存块,而不会在堆上产生大量小块内存。
例如,就用输入到全连接层的前一层conv来说,特征map太大的话,特征数量就不易太多,通过pooling,使得特征map变小,特征map数量就可以更多。 (那么为什么要特征map更多呢?
RoI Pooling 层 caffe prototxt 定义: layer { name: "roi_pool5" type: "ROIPooling" bottom: "conv5" bottom: "rois" top: "pool5" roi_pooling_param { pooled_w: 6 pooled_h: 6 spatial_scale : 0.0625 # 1/16 } } caffe caffe.proto ROI Pooling 层参数说明: optional ROIPoolingParameter roi_pooling_param // 乘以空间缩放因子,以将 RoI 坐标由输入尺度转换到 pooling 时使用的尺度 optional float spatial_scale = 3 [default = 1]; } 根据 根据其源码 roi_pooling_layer.cpp 分析, RoI Pooling 层 LayerSetUp —— 参数读取 void ROIPoolingLayer<Dtype>::LayerSetUp
说白了,“global pooling”就是pooling的 滑窗size 和整张feature map的size一样大。 “global pooling”在滑窗内的具体pooling方法可以是任意的,所以就会被细分为“global avg pooling”、“global max pooling”等。 由于传统的pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。 替代方案 如下: 采用 Global Pooling 以简化计算; 增大conv的 stride 以免去附加的pooling操作。 ---- [1] What does global pooling do? [2] Global average Pooling
Pooling Pooling的讲解可以看我的这篇文章CS231n 笔记:通俗理解 CNN 这里主要讲解一下如何用 pytorch定义Pooling层,有两种方式,具体看下面代码 import torch
如今大部分情况下,pooling就出现在网络的最后,或者一些需要concat/add不同通道的block里面,为何?本文从3个方面来说说。 02pooling是什么 pooling,小名池化。 ? pooling有什么用呢?或者说为什么需要pooling呢? 因为pooling不断地抽象了区域的特征而不关心位置,所以pooling一定程度上增加了平移不变性。 (3) 容易优化,pooling是每个featuremap单独做降采样,与基于卷积的降采样相比,不需要参数,更容易优化。 03如何去除pooling 那pooling是必要的吗? 总之,不管是文献的研究结果,以及大家的实际使用经验,都已经完全使用带步长的卷积替换掉了pooling这一降采用的操作。 04pooling没用了吗?
samples, pooled_dim1, pooled_dim2, pooled_dim3,channels,)的5D张量 ---- GlobalMaxPooling1D层 keras.layers.pooling.GlobalMaxPooling1D samples,steps,features)的3D张量 输出shape 形如(samples, features)的2D张量 ---- GlobalAveragePooling1D层 keras.layers.pooling.GlobalAveragePooling1D samples,steps,features)的3D张量 输出shape 形如(samples, features)的2D张量 ---- GlobalMaxPooling2D层 keras.layers.pooling.GlobalMaxPooling2D cols,channels)的4D张量 输出shape 形如(nb_samples, channels)的2D张量 ---- GlobalAveragePooling2D层 keras.layers.pooling.GlobalAveragePooling2D
本节介绍与神经层配套使用的pooling(池化)层的定义和使用。 pooling(池化)层原则上为采样操作,与upsample(上采样)不同的是,pooling为下采样操作,即将feature map变小的操作。 那么下采样和上采样是什么含义呢? 而在卷积神经网络中,以max pooling操作为例 过程如下 ? 与max pooling对应的还有Avg pooling,即取平均数。 比较简单,这里不再赘述。 那么在pytorch中如何完成pooling操作 import torch import torch.nn as nn import torch.nn.functional as F x = torch.rand
截图来自论文:https://arxiv.org/abs/1901.00596 图分类所用的downsize便是本文的主角graph pooling。--终于引出来了.. Graph Pooling GNN/GCN 最先火的应用是在Node classification,然后先富带动后富,Graph classification也越来越多人研究。 所以,Graph Pooling的研究其实是起步比较晚的。 Pooling就是池化操作,熟悉CNN的朋友都知道Pooling只是对特征图的downsampling。不熟悉CNN的朋友请按ctrl+w。 对图像的Pooling非常简单,只需给定步长和池化类型就能做。但是Graph pooling,会受限于非欧的数据结构,而不能简单地操作。 简而言之,graph pooling就是要对graph进行合理化的downsize。 目前有三大类方法进行graph pooling: 1.
1、pooling是在卷积网络(CNN)中一般在卷积层(conv)之后使用的特征提取层,使用pooling技术将卷积层后得到的小邻域内的特征点整合得到新的特征。 2、pooling是用更高层的抽象表示图像特征,至于pooling为什么可以这样做,是因为:我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用 因为滑动的窗口间有大量重叠区域,出来的卷积值有冗余,进行最大pooling或者平均pooling就是减少冗余。减少冗余的同时,pooling也丢掉了局部位置信息,所以局部有微小形变,结果也是一样的。 所以平移不变性不是pooling带来的,而是层层的权重共享带来的。 invariance: 下图表示数字“0”的识别,第一张的“0”比较大,第二张的“0”进行了较小,相当于作了缩放,同样地,经过多次max pooling后具有相同的特征
这是2017年NIPS上的一篇做动作识别的论文,作者提出了second-order pooling的低秩近似attentional pooling,用其来代替CNN网络结构最后pooling层中常用的mean pooling或者max pooling, 在MPII, HICO和HMDB51三个动作识别数据集上进行了实验,都取得了很好的结果。 Second-order pooling 在CNN结构中,pooling层我们一般采用mean pooling或者max pooling,这两者都是一阶pooling (first-order pooling 和 full-rank pooling的比较 所谓“full-rank pooling”, 就是指使用原来的二阶pooling,不进行矩阵低秩近似。 作者只在最后面使用了一次attentional pooling, 如果将网络中所有的pooling都换为attentional pooling,效果是否会更好? 参考论文 [1].
出处:Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.
max_pooling: 夜晚的地球俯瞰图,灯光耀眼的穿透性让人们只注意到最max的部分,产生亮光区域被放大的视觉错觉。故而 max_pooling 对较抽象一点的特征(如纹理)提取更好。 Thinking 选用 max_pooling 还是 average_pooling ,要看需要识别的图像细节特征情况。知乎上说 二者差异不会超过 2% ,这个我深表质疑。 相比之下,个人感觉 max_pooling 是比 average_pooling 更抽象化的操作,因此可以抽象出更高级一点的特征。 由于pooling太过粗暴,操作复杂,目前业界已经逐渐放弃了对pooling的使用。 替代方案 如下: 采用 Global Pooling 以简化计算; 增大conv的 stride 以免去附加的pooling操作。
Rol Pooling 和 Rol Align的作用 RoI Pooling 对于任意大小的图像输入,总能产生固定大小的输出。 Rol Pooling原理 RoI Pooling在Fast RCNN 中被首次提出。 RoI Pooling = crop feature + resize feature 通过上图的容易得到,RoI Pooling的作用本质上是为了将不同尺寸的RoI特征转换为相同的特征图输出,保证特征图展开 针对RoI Pooling在语义分割等精细度任务中精确度的问题提出的改进方案。 利用最大池化(max pooling)或平均池化(average pooling)分别对每个子区域执行聚合操作,得到最终的特征图。
Loss Max-Pooling for Semantic Image Segmentation CVPR2017 https://arxiv.org/abs/1704.02966 本文采用偏数学语言的角度来描述语义分割样本类别分布不均匀问题 ,提出一个方法 Pixel-Loss Max-Pooling 本文主要解决什么问题了?
现有的深度卷积神经网络(CNNs)需要一个固定大小的输入图像(如224×224)。这一要求是“人为的”,可能会降低对任意大小/尺度的图像或子图像的识别精度。在这项工作中,我们为网络配备了另一种池化策略,“空间金字塔池”,以消除上述要求。这种新的网络结构称为SPP-net,可以生成固定长度的表示,而不受图像大小/比例的影响。金字塔池对物体变形也有很强的鲁棒性。基于这些优点,SPP-net一般应改进所有基于cnn的图像分类方法。在ImageNet 2012数据集中,我们证明了SPP-net提高了各种CNN架构的准确性,尽管它们的设计不同。在Pascal VOC 2007和Caltech101数据集中,SPP-net实现了最先进的分类结果使用单一的全图像表示和没有微调。在目标检测中,spp网络的能力也很重要。利用SPP-net算法,只对整个图像进行一次特征映射计算,然后将特征集合到任意区域(子图像),生成固定长度的表示形式,用于训练检测器。该方法避免了卷积特征的重复计算。在处理测试图像时,我们的方法比R-CNN方法快24-102×,而在Pascal VOC 2007上达到了更好或相近的精度。在2014年的ImageNet Large Scale Visual Recognition Challenge (ILSVRC)中,我们的方法在所有38个团队中目标检测排名第二,图像分类排名第三。本文还介绍了本次比赛的改进情况。
下列引用来自stackoverflow: With Global pooling reduces the dimensionality from 3D to 1D. Therefore Global pooling outputs 1 response for every feature map. This can be the maximum or the average or whatever other pooling operation you use. 参考:https://stackoverflow.com/questions/42070528/what-does-global-pooling-do 参考:https://blog.csdn.net/