金字塔池化过程及其优势
第一次完全自己动手写博文,起初有点不知所措,后来是有种深深的责任感,经过查阅了一些资料,才敢动笔,可能有些地方没有完全领悟到,期望各位同仁予以指正。
虽然在 池化总结(OverlappingPooling、 一般池化、Spatial Pyramid Pooling)一文中简单地介绍过金字塔池化(SPP),这次主要针对SPP实现原理和细节进行说明。本文主要基于Spatial Pyramid Pooling in Deep Convolutional Networ ks for Visual Recognition 这篇论文进行介绍,我觉得这篇论文把这金字塔池化(SPP)这个过程讲的很详细,感兴趣的可以阅读。
当前,深度卷积神经网络引发了计算机视觉和目标检测的革命,识别更加精确的新技术层出不穷,例如 dropout,data augment, modify activation function, 还有我们现在讲的SPP。这些主要从训练和测试着手以提升神经网络的性能。
一、卷积神经网络原理
Pooling是卷积神经网络的一个环节,对于刚接触CNN的读者,再看本文之前,建议先阅读下我另一篇博文——卷积神经网络原理,当然,这里也会简单的介绍下,算是我们共同温习下整个脉络,加深记忆吧!
1.1 神经元
Pooling神经网络由大量的节点(或称“神经元”、“单元”)和相互连接而成。每个神经元接受输入的线性组合,进行非线性变换(亦称激活函数activation function)后输出。每两个节点之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。神经网络的每个神经元如下:
其中, a1~an为输入向量,当然,也常用x1~xn表示输入,w1~wn为权重,b为偏置bias,f 为激活函数,t 为输出。
事实上,在20世纪50/60年代,上述简单神经元被称之为感知机,可以把感知机理解为一个根据不同因素、以及各个因素的重要性程度而做决策的模型。
1.2 激活函数
常用的激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全链接层,后者relu常见于卷积层。这里先简要介绍下最基础的sigmoid函数,sigmoid的函数表达式如下:
其中 z 是一个线性组合,比如z可以等于: