概論&全体的な研究トレンドの概観②(FastRCNN、FasterRCNN、YOLO、SSD)|物体検出(Object Detection)の研究トレンドを俯瞰する #2

f:id:lib-arts:20190307173555p:plain

物体検出の研究については以前に論文読解で、FasterRCNNやYOLO、SSD、RetinaNetについて取り扱ったのですが、改めて研究トレンドや考え方の推移についてまとめられればということで新規でシリーズを作成させていただきました。
#1ではHOG(Histograms of Oriented Gradient)[2005]からR-CNN[2013]までについて取り扱いました。

#2ではFastRCNN、FasterRCNN、YOLO、SSDなどの2015〜2016年にかけての高速化と精度向上の両側面からの取り組みについてまとめていきます。
以下目次になります。
1. Fast R-CNN[2015]とRoI pooling
2. Faster R-CNN[2015]とRegion Proposal Networks
3. One stage detectorとYOLO[2015]
4. SSD
5. まとめ


1. Fast R-CNN[2015]とRoI pooling
1節ではFast R-CNNについて取り扱います。

f:id:lib-arts:20190618140925p:plain

[1504.08083] Fast R-CNN
まずは概要をつかむにあたってAbstractから確認します。簡単な和訳を行います。

f:id:lib-arts:20190618141143p:plain
和訳:『この論文はObject Detectionタスクに関して、Fast R-CNN(Fast Region-based Convolutional Network method)について提案する。Fast R-CNNはDeepなCNNを用いて物体の候補領域を効率的に分類する。従来の研究と比較すると、Fast R-CNNは精度を向上させながら学習と検証のスピードを改善させるいくつかの工夫を採用している。Fast R-CNNはR-CNNよりも学習時で9倍、推論時で213倍のスピードとなっている。また同時に、PASCAL VOC2012でより高いmAPを達成している。(以下略)』
後ろの方は概要をつかむにあたってそれほど重要には見えないので省略しました。要は#1でまとめたR-CNNの精度とスピードを候補領域の分類を効率よく行うことで向上させたというのがメイントピックで、和訳では略しましたが2014年のSPPnetよりも向上させたとあります。
ネットワークアーキテクチャ自体はSPP-Net[2014]を参考にしているところが多いようなので、SPP-NetのSpatial Pyramid Poolingを先に説明します。

f:id:lib-arts:20190618153838p:plain

[1406.4729] Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

Spatial Pyramid Poolingについては論文のFigure3で概要が記述されています。こちらのPoolingを採用する利点としては、入力画像を固定長にしなくても良いというのがあります。入力画像を固定長にしなくてはならない理由としては最後のFC(Fully Connected)層を固定長にするためであり、畳み込みの処理には関係がないのでFC層の入力を作成するにあたってSpatial Pyramid Poolingを行うとあります。

f:id:lib-arts:20190618155525p:plain

この考え方をSection4のFigure5で物体検出(Object Detection)に導入しています。4.1で"We use the “fast” mode of selective search to generate about 2,000 candidate windows per image."とあるように、Selective Searchを用いて生成した候補領域に対してSpatial Pyramid Poolingを用いることで、R-CNNにおいて候補領域ごとにCNNを全て回していたのを畳み込み処理部分を一度で済ますことができるようになり処理速度を大きく向上させています。

f:id:lib-arts:20190618155556p:plain

Fast R-CNNのRoI poolingは上記のようにSpatial Pyramid Poolingの特殊なケースだというように書かれています。このように、R-CNNにおいてネックだった処理速度をFeature mapを計算するまでの畳み込み部分の処理を一度にまとめることで高速化をはかったというのがこれまでの流れになっています。


2. Faster R-CNN[2015]とRegion Proposal Networks
2節ではFaster R-CNN[2015]について取り扱います。Faster R-CNNはR-CNN、Fast R-CNNと同様にRoss Girshick氏がAuthorの一人となっています。まずはAbstractを簡単に要約します。

f:id:lib-arts:20190618160353p:plain

[1506.01497] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

要約:『SPPnetやFast R-CNNなどの研究を通して物体検出に用いるネットワークの大幅な時間短縮に繋がったが、一方で領域提案(region proposal)部分の処理がボトルネックとなった。そのため、領域提案ネットワーク(RPN; Region Proposal Network)を導入し、一つのネットワークに統合した。PASCAL VOCやMS COCOなどのデータセットにおいてSOTAを達成すると同時に高速化にも成功しGPUで5fps(frame per second)を実現した。』
上記で大体の概要がつかめるかと思います。少々補足すると、RPN(Region Proposal Network)が論文のメインのContributionで、Selective Searchなどを用いて候補領域を作成していたところもニューラルネットワークを用いて作成できるようにすることで、処理速度の向上が実現されています。また、PASCAL VOCは従来から用いられていたデータセットで、MS COCOも論文と同時期に整備されたデータセットです。
以下RPNについて説明を行なっていきます。

f:id:lib-arts:20190618162526p:plain

RPNについてはSection3のFigure2で言及されています。RoI poolingについては1節のFast R-CNNで言及した通りなので、ここでは省略します。RPNについては3.1でまとめられています。

f:id:lib-arts:20190618165152p:plain
RPNの処理については上記で記載されています。VGGやZFのような当時のオーソドックスなモデルを用いて作成したfeature mapに畳み込み処理を行うことで、cls層とreg層を出力しています。このcls層は物体かどうかの情報、reg層はbounding boxの座標の情報を表しています。一点、ここで注意なのがAnchorsについてです。通常の処理だけで計算したreg層で十分なのではと一瞬考えてしまいますが、Anchorの情報も付加することでスケールやアスペクト比の情報も加味した上で計算を行うことが可能になります。


3. One stage detectorとYOLO[2015]
3節ではYOLO(You Look Only Once)について取り扱います。YOLOはRetinaNet[2017]でも触れられているように、One stage detectorの初期のモデルと考えることができます。One stageとTwo stageの違いについては、領域提案部分が分離されているかされていないかの違いとして捉えられます。これまで取り扱ってきた、R-CNN、SPPnet、Fast R-CNN、Faster R-CNNはどれも領域提案部分がCNNを使おうが使うまいが独立していたのに対し、One stageでは処理が一度で済むような計算となっています。Abstractを軽く要約しておきます。

f:id:lib-arts:20190618170330p:plain

[1506.01497] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

要約:『YOLOでは従来の手法と異なり、物体検出の問題を回帰問題に変換した。推論時に一つのニューラルネットワークがbounding boxとクラスの確率を画像全体の入力から直接生成し、end-to-endで最適化を行なっている。また、YOLOのベースのモデルは統合された構造を用いた推論は極めて早く、45fpsのリアルタイムでの処理が可能となっている。また、Fast YOLOを用いると155fpsを実現した。』
上記のように、YOLOを見る際に一番衝撃なのが処理速度です。大幅な高速化がはかられたFaster R-CNNでさえ、5fpsのところをそれよりもはるかに速い処理を実現しています。

全体の処理については上記のSection2の説明のところでも言及しましたので一部抜粋します。
『画像の全体をS×Sのグリッドで考え、バウンディングBOXの抽出とグリッドのクラスの確率の予測を別々に行い、それを組み合わせて推論結果を出しています。話がやや抽象的でややこしいのでYOLOをPASCAL VOCを用いて評価する話をベースに具体化すると、グリッドをS=7、グリッド単位でのバウンディングBOXの候補数をB=2、クラスのラベル数をC=20とすることで、最終的な予測が7×7×30になるとされています。ここでBに5がかかっているのはバウンディングBOXの中心座標とサイズを表す(x,y,w,h)とバウンディングBOXの確信度を表すconfidenceで5個の値を持つためです。』
上記によって、S×S×(B*5+C)の意味がわかれば処理概要について把握することができます。
YOLOがそのあとの研究に与えた影響としては、One stageの考え方を導入しリアルタイムな物体検出を実現したというのが大きいように思われます。


4. SSD
SSD(Single Shot Detector)[2015]はYOLOと同じくOne stageのネットワークです。

f:id:lib-arts:20190618174811p:plain

https://arxiv.org/abs/1512.1506.02640
SSDは上図のように"Multi-scale feature maps"を用いて様々なスケールのfeature mapを用いて計算が行われています。

f:id:lib-arts:20190619164006p:plain
また、上記で触れられているようにAnchorの情報を元に作成したデフォルトボックス(default box)に推論結果のオフセット(offset)を適用することで、座標の調整(adjustment)を行なっています。2.1節に"Our default boxes are similar to the anchor boxes used in Faster R-CNN"とあるようにanchorの設定にあたっては基本的にはFaster R-CNNと同様に行なったとありますが、Faster R-CNNにあまり言及がなかったdefault boxやoffsetの話について丁寧に書かれています。


5. まとめ
#2では2015年〜2016年にかけて(SSDは2015/12にarxivにあがっているので、2016年とも考えられそう)の物体検出系の研究として、Fast R-CNN、Faster R-CNN、YOLO、SSDについてまとめました。
#3では2016年以降の話題として、Feature Pyramid Network[2016/12]、RetinaNet[2017]、M2Det[2018]について取り扱います。