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

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

一、参考资料

论文:Network In Network

全局平均池化(Global Average Pooling)

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

全局池化–Pytorch

二、全局平均池化(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())

输出结果

torch.Size([4, 3, 4, 4])
torch.Size([4, 3, 1, 1])
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值