概論&全体的な研究トレンドの概観④(Cascade R-CNN、CBNet)|物体検出(Object Detection)の研究トレンドを俯瞰する #5

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

当シリーズでは物体検出の研究トレンドをまとめています。
#1ではHOG(Histograms of Oriented Gradient)[2005]からR-CNN[2013]までについて、#2ではFast R-CNN、FasterRCNN、YOLO、SSDについて、#3ではFPN、RetinaNet、M2Detについて、#4ではM2Detの著者実装について取り扱いました。

#5では2019年の研究として、Cascade R-CNN[2019]とCBNet[2019]について取り扱います。
以下目次になります。
1. Cascade R-CNN[2019]
2. CBNet[2019]
3. まとめ


1. Cascade R-CNN[2019]
1節では2019年6月の研究である"Cascade R-CNN: High Quality Object Detection and Instance Segmentation"について取り扱います。

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

[1906.09756] Cascade R-CNN: High Quality Object Detection and Instance Segmentation

Cascade R-CNNはIoU関連の閾値を連なった小さな滝(cascade)のようにすることで物体検出(Object Detection)の精度向上を試みているモデルです。概要を掴むにあたって、まずは簡単にAbstractを要約します。

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

要約:『物体検出において、IoU(Intersection over Union)の閾値はpositive/negativeの判定に用いている。このIoUの閾値は分類器の品質を決め、0.5くらいではnoisy(low-quality)な検出になるのに対し、この閾値を大きくすると性能が低下する場合もある。高品質の検出にあたってのパラドックスには二つの原因がありそれぞれ、(1)大きな閾値を設けることでpositiveのサンプルが消失する、(2)推論時において検出器とTestの仮説との間に乖離がある、である。だんだんIoUの閾値が増加していく状況で学習された犬種器の連なりによって構成されたCascade R-CNNはこの問題に取り組んでいる。このことによって精度を向上させ、Cascade R-CNNの実装はCOCOデータセットなどの有名データセットにおいてSotAを獲得した。また、Cascade R-CNNはMask R-CNNのアーキテクチャと組み合わせることでinstance segmentationのタスクにも適用されている。』
上記で大体の概要についてつかむことができます。物体検出のアルゴリズムにおいて領域提案(region proposal)にあたる処理が初期の頃は別アルゴリズムだったのに対し、Faster R-CNN[2015]やYOLO[2015]、SSD[2016]のようにDeepLearningの計算内部において回帰(regression)で求めるという手法によってend-to-endの処理の基礎的なアーキテクチャが確立され、以後DeepLearning内部の処理で領域を求めるというのが主流になっています。この領域提案(region proposal)部分の計算において、anchor(Faster R-CNNにおける記述)やdefault box(SSDにおける記述)を用いて予めbounding box(検出において使用する長方形)の座標を決めておき、これをDeepLearningの計算結果を用いて座標を調整するということをやります。
この際に調整後の座標を学習に用いるか用いないかの判断をIoU(Intersection over Union)を用いて行なっているのですが、この値が0.5くらいだと多くのbounding boxの座標を用いて学習を行うためnoisyになるし、この値を大きくする(be larger)とpositiveのサンプルがなくなってしまうので、学習が適切に行えなくなってしまいます。

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

この回避のためにCascade R-CNNでは、上記(Fig.3)で示される小さな滝の連なり(Cascade)のようにIoUを段階的に上げていくことによって精度を向上させることを試みています。Fig.3では(a)がFaster R-CNN、(b)がCascade R-CNNとなっており、Cascade R-CNNはFaster R-CNNの類似したアルゴリズムであることがわかります(論文中では"multi-stage extension of the Faster R-CNN architecture"のようにCascade R-CNNはFaster R-CNNの拡張であると言及されています)。

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

上記は論文のFig.4で、ステージが進むにつれてIoUの値が大きくなっていることがわかります。

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

学習においては上記のIntegral Lossにいくつかの変更を加えているとされています。

f:id:lib-arts:20191024231313p:plain
Integral LossはFig.3の(d)でも言及されています。

また、Mask R-CNNはFaster R-CNNにMaskを用いたセグメンテーションを加えただけなので、Cascade R-CNNも同様にInstance Segmentationタスクに適用することができます。

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

Fig.6にMask R-CNNのアーキテクチャCascadeを加えるにあたっての構造の議論が色々とされています。


2. CBNet[2019]
2019年9月の研究である"CBNet: A Novel Composite Backbone Network Architecture for Object Detection"について取り扱います。

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

[1909.03625] CBNet: A Novel Composite Backbone Network Architecture for Object Detection

概要を掴むにあたって、まずは簡単にAbstractを要約します。

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

要約:『既存のCNNベースの物体検出器において、backboneネットワークは基本的な特徴抽出(basic feature extraction)において非常に重要な役割を果たしている。この研究においては、ResNetやResNeXtなどの既存のbackbone networkよりも強力なbackbone networkを構築することでより良い検出パフォーマンスを獲得しようと試みている。CBNet(Composite Backbone Network)は隣接するbackbone(adjacent backbones)を構成することによって複数のbackboneを組み合わせる新しい戦略を取っている。CBNetは多くのSotAの検出器(detectors)に組み込むことができ、特筆すべきレベルでパフォーマンスを向上させた。さらに、Cascade Mask R-CNNにCBNetを導入することにより、COCOデータセットにおいてSotAを達成した。』
上記で大体の概要をつかむことができました。SPPNet[2014]やFast R-CNN[2015]においてFeature Mapを作成するにあたって、backbone networkとしてVGGNetなどを用いたというのが話の始まりですが、Faster R-CNN[2015]、SSD[2016]、FPN[2016]、RetinaNet[2017]、M2Det[2018]でもこのbackbone networkにVGGNetやResNetなどのアーキテクチャを用いるというのが主流となっています。上記で挙げた2014〜2018年頃のSotAの研究においてはこの辺のbackbone networkよりもRegion Proposal Network(Faster R-CNN)、Feature Pyramid Networks(FPN)、Multi Level Feature Pyramid Networks(M2Det)などbackbone以後の処理についてのフォーカスされたり、Focal Loss(RetinaNet)のようにloss関数に着目される研究がメインストリームとなっています。
CBNet(Composite Backbone Network)はこれらとは違い、画像から基本的な特徴量抽出を行うbackbone networkの方にフォーカスして議論が進められています。

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

CBNetのアーキテクチャは論文のFigure1で紹介されています。用語として、adjacent backbone(隣り合うbackbone network)、Lead Backbone(物体検出器の入力とする最後のbackbone network)、Assistant Backbones(Lead Backboneの補佐をするbackbone network)について抑えておくと良さそうです。基本的にはAssistant Backbonesの処理結果を徐々に伝播させて最終的にはLead Backboneから検出(Detection)の処理を行う形となっています。

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

上記のTable1では、COCOのtest-devデータセットにおいてCascade Mask R-CNNのbackbone networkを変更してみた実験結果についてまとめられています。基本的にはbackbone networkが深くなればなるほど、数が増えれば増えるほど精度が上がるというのがこの結果から読み取ることができます。

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

上記のTable2では、様々なbackboneと検出器の組み合わせにおいてDual-Backbone、Triple-Backboneの比較を行っており、Triple-Backboneが良いパフォーマンスを出していることがここから読み取れます。

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

上記のTable3では、物体検出(Object detection)のその他のstate-of-the-artな手法と今回のCBNetをCascade Mask R-CNNに導入した手法について比較を行っています。今回の手法がCOCO test-devデータセットにおいてSotAとなっていることが読み取れます。

f:id:lib-arts:20191025175110p:plain
State-of-the-art table for Object Detection on COCO test-dev

また、COCO test-devのleaders boardは上記のようになっており、2019年10月時点ではCascade Mask R-CNN(Triple-ResNeXt152, multi-scale)がSotAとなっていることが確認できます。


3. まとめ
#5では、Cascade R-CNN[2019]やCBNet[2019]などについて取り扱いました。
#6ではDynamic Head[2021]について取り扱います。