全局平均池化(Global Average Pooling)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
最近看论文看到了全局平均池化之间见过这东西但是没有仔细了解今天学习一下并记录下来方便以后查阅。
全局平均池化Global Average Pooling
概念概述
出处Lin M, Chen Q, Yan S. Network in network[J]. arXiv preprint arXiv:1312.4400, 2013.
定义将特征图所有像素值相加求平局得到一个数值即用该数值表示对应特征图。
目的替代全连接层
效果减少参数数量减少计算量减少过拟合
思路如下图所示。假设最终分成10类则最后卷积层应该包含10个滤波器即输出10个特征图然后按照全局池化平均定义分别对每个特征图累加所有像素值并求平均最后得到10个数值将这10个数值输入到softmax层中得到10个概率值即这张图片属于每个类别的概率值。
在原文这样描述全局平均值池化
作用如果要预测K个类别在卷积特征抽取部分的最后一层卷积层就会生成K个特征图然后通过全局平均池化就可以得到 K个1×1的特征图将这些1×1的特征图输入到softmax layer之后每一个输出结果代表着这K个类别的概率或置信度 confidence起到取代全连接层的效果。
优点
- 和全连接层相比使用全局平均池化技术对于建立特征图和类别之间的关系是一种更朴素的卷积结构选择。
- 全局平均池化层不需要参数避免在该层产生过拟合。
- 全局平均池化对空间信息进行求和对输入的空间变化的鲁棒性更强。
torch实现
import torch
a = torch.rand([4,3,4,4])
a.size()
输出
torch.Size([4, 3, 4, 4])
b = torch.nn.functional.adaptive_avg_pool2d(a, (1,1)) # 自适应池化指定池化输出尺寸为 1 * 1
b.size()
输出
torch.Size([4, 3, 1, 1])
参考资料
Global Average Pooling Layers for Object Localization
Comparison of the fully connected layer and global average pooling layer.