当前位置:   article > 正文

通俗易懂理解全局平均池化(GAP)_gap全池平均化

gap全池平均化

温故而知新,可以为师矣!

一、参考资料

论文:Network In Network

全局平均池化(Global Average Pooling)

【机器学习】一文带你深入全局平均池化

二、全局平均池化(GAP)相关介绍

1. 引言

一般情况下,卷积层用于提取二维数据,如图片、视频等特征。针对于具体任务(分类、回归、图像分割等),卷积层后续会用到不同类型的网络。拿分类问题举例,最简单的方式就是将卷积层提取出的特征(feature map)输入到softmax全连接层对应不同的类别。首先,这里的 feature map 是二维多通道的数据结构,类似于三个通道(红黄绿)的彩色图片,也就是说 feature map 具有空间维度的信息;其次,在GAP被提出之前,常用的方式是将 feature map 直接拉平成一维向量(下图a),但是GAP是将每个通道的二维图像做平均,最后每个通道对应一个均值(下图b)。
在这里插入图片描述

2. GAP简介

全局平均池化(Global Average Pooling, GAP),所谓的全局是针对常用的 Average Pooling 而言,Average Pooling 会有它的 filter_size,比如 2 x 2,全局平均池化就没有size,它针对的是整张 feature map。GAP将 feature map 所有像素值相加求平均,得到一个数值,即用该数值表示对应 feature map

GAP的目的是代替全连接层。如果要预测K个类别,在特征提取的最后一层卷积层,会生成K个特征图,然后通过全局平均池化可以得到 K个1×1的特征图,将这些1×1的特征图输入到 softmax layer 后,每一个输出结果代表着这K个类别的概率值或置信度 confidence
在这里插入图片描述

如上图所示。假设最终分成10类,则最后卷积层包含10个filters(即输出10个特征图),然后按照全局池化平均定义,分别对每个特征图,累加所有像素值并求平均,最后得到10个数值,将这10个数值输入到softmax层中,得到10个概率值,即这张图片属于每个类别的概率值。

GAP可以减少参数量,减少计算量,减少过拟合。如下图所示,一个 feature map 进行GAP后得到一个值,再进行全连接(softmax)就会少很多参数。
在这里插入图片描述

3. GAP优势

  • 和全连接层相比,使用全局平均池化技术,对于建立特征图和类别之间的关系,是一种更朴素的卷积结构选择。
  • 全局平均池化层不需要参数,避免在该层产生过拟合
  • 全局平均池化对空间信息进行求和,对输入的空间变化的鲁棒性更强。

4. PyTorch实现

import torch


a = torch.rand([4,3,4,4])
print(a.size())

b = torch.nn.functional.adaptive_avg_pool2d(a, (1,1))  # 自适应池化,指定池化输出尺寸为 1 * 1
print(b.size())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输出结果

torch.Size([4, 3, 4, 4])
torch.Size([4, 3, 1, 1])
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/92431?site
推荐阅读
相关标签
  

闽ICP备14008679号