MS COCO Detection Challenge 2015 で3位かつ、Best Student Entryだった論文です。
単純にいうと、ROIの内側の情報だけでは、うまくいかないので外側の情報も使おうというもので、その時に外側の情報をどうやって取り込むのかあります。彼らがやったのは、Contextual Informationという周辺情報のFeature Mapをspatial RNNから作って認識に使うことです。
Architecture
Inside-Outside Net(ION)
下図はIONの全体イメージです。
ネットワークは、Convolutional Layerがconv1, conv2, conv3 ... とあって、そこから2つのspatial RNNが来て、最終的にcontext featuresにつながっています。得られた各LayerのFeatureを結合(Skip layer connection)して、Object Detectionを行うという流れになっています。
Pooling from multiple layers(Skip layer connection)
Fast R-CNN, Faster R_CNN, SPPnetは、最後のConvolutional Layerから全部Poolingしています。
これをIONではMultiple Layerに拡張しました。各Convolutional LayerごとにPooling Layerを用意し、その出力を結合し、1x1 Convolutionで次元を削減しています。
この時に各Layerの出力の強度がことなるので、各LayerごとにL2 normalizeし、さらにrescalingしています。
Context features with IRNNs(spatial RNN)
RNNを使う目的は、ROIの外側のデータを使って物体検出したいということです。その時に、自分の近くにあるデータを時系列のデータとみたててRNNに突っ込んでいます。RNNは、もともとHidden LayerがFeedback Loopになっているネットワークのことです。
RNNには、以下のような種類があり、今回はmany to manyのPatternを使っています。
データを時系列データとみたてる場合に、どの順番で入力するかというのが問題になりますが、ここでは水平方向x2、と垂直方向x2の4方向からデータを入力しています。
Results
以下結果です。
Dataset: PASCAL, VOC2007, VOC2012, MS COCO
PASCAL VOC 2007
IONのmAPの結果は、76.5%で、構造に少し手を入れると79.2%を達成した。
PASCAL VOC2012
Datasetが少しむずかしくなっているので、mAPは、76.4%
MS COCO
APとARは、7.0%, 10.7%
Design evaluation
Poolingに関する性能評価
Conv3からConv5が一番良い
Scalingに関する評価
rescalingのscaleを固定の時の学習で決める時の比較
どちらも同じくらいの性能
RNNの性能評価
RNNを使った時と使わなかった時の比較