Index
Spatial Pyramid Pooling / SPP とは
CNN (特に全結合層) の課題 である、入力サイズが固定されていること、への対応策.
Pooling の処理を、「特徴を減らさずに、決まった大きさのサイズに出力する」処理に変更する提案.
CNN の課題
通常のCNN は、入力を固定サイズにする必要があり、そのために、リサイズかクロッピングを行う.
しかし、そのため、物体のスケールや形状の情報を失ってしまう可能性がある.
CNN が固定サイズを必要する原因は、全結合層にある.
逆に言えば、CNN を構成している、畳み込み層とPooling 層は、固定サイズの入力を要求しない.
畳み込み層 で行う畳み込み演算は、Window (Filter / Kernel) をスライド (少しづづ動かす)することで、 処理を行うので、スライドする幅や、パディングの大きさを調整することで、処理を行うことができる.
また、Pooling も同様.
畳み込み層 で行う畳み込み演算は、Window (Filter / Kernel) をスライド (少しづづ動かす)することで、 処理を行うので、スライドする幅や、パディングの大きさを調整することで、処理を行うことができる.
また、Pooling も同様.
全結合層では、決まった入力サイズのベクトルを決まった出力サイズのベクトルに変換する処理を行う.
100 次元の特徴量マップから、10クラス分類のための確率ベクトルへの変換など
全結合層への対応
そこで、全結合層への入力の時点で、固定サイズになっていれば良いというアイディアを採用する.
全結合層への入力の前の Pooling 層を、固定サイズに変換する処理 (=Spatial Pyramid Pooling) に切り替えることで、 課題に対応する.
Spatial Pyramid Pooling
では、「固定サイズに変換する処理」とは、どうすればいいのだろうか.
上図がその仕組みである.
入力は、[tex : H\ \times\ W\ \times\ k] とする.
つまり、これは最後の畳み込み層の出力.
入力に対し、複数の異なる分割方法 (上だと3つ) で行う pooling 処理をそれぞれ施す.
そして、 次元のベクトルが出力される.
参考
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- [2015]
- Abstract
- 1 INTRODUCTION
- 2 DEEP NETWORKS WITH SPATIAL PYRAMID POOLING
- 2.2 The Spatial Pyramid Pooling Layer
- arxiv.org
Web サイト
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
入力画像サイズやスケールが自由なSPP-netとは!? TensorFlowによる実装も!