【コンピュータビジュアル】『LightHead R-CNN:In Defense of Two-stage Object Detector』
7106 ワード
Light-Head R-CNN: In Defense of Two-Stage Object Detector
, , 。
:https://zhuanlan.zhihu.com/cyh24
, , !
この文章はテーマから見れば一目瞭然だ:two-stage object detectorを守る.
Object detectionは2つの大きなジャンルに分かれていることを知っています.
通常、前者は検出精度が高く、後者は検出速度が速い.YOLO、YOLOv 2、SSDなどのスピードが速くて精度の良いone stage detectorが登場するにつれて、RCNN familyへの愛着は少なくなったようです.結局、本当に応用が定着したとき、speedは明らかに非常に重要な点です.正直に言うと、もしあなたがランキングを磨くためでなければ、これらのone stage detectorアルゴリズムの精度も確かに十分です.まして速度は本当に速いです.
しかし、個人的にはsingle-stageの上限はtwo-stageより低いと思います.two-stage detectorの速度を最適化する仕事を見たいと思っています.だから、ideaは大きくありませんが、実験はとてもよくできています.手動でいいですね.
Abstract
この文章では、著者は主に分析した.
本文では、著者はtwo-stageをbodyとheadに分解した.
著者らは,現在のアルゴリズムはbest accurcyを追求するためにheadを非常にheavyに設計するのが一般的であるため,前のbase modelを小さくしても検出速度を著しく向上させることはできないと考えている.
この文章のポイントは、headをどのように痩せるかです.ライトヘッドおよび他のtrick:-著者はResnet-101をベースモデルとしてCOCO-2017のチャンピオンを獲得した.-さらに重要なことに,著者らは,base modelとして軽量レベルのXceptionを用い,30.7 mmAPに達し,102 FPSに達し,speedからaccuracyまで既存のsingle‐stageのアルゴリズムを完全に打ち破った.
前の図では、speedとaccuracyの間のtrade-offがどれだけ良いかを自分で感じてみましょう.
Light-Head R-CNN
前述したように,著者らはtwo-stageをbody(RoI warping)+head(RCNN subnet)に分け,headがheavyすぎることがtwo-stageの効率が低い主な原因であると指摘した.典型的なtwo-stage detector構造を見てみましょう.
RCNN subnet of Faster RCNN
上の図はbase modeがResnet-101のFaster RCNNのネットワーク構造です.
各RoIはRCNN-subnetで1回計算され、精度を保証するためにFaster R-CNN用のRCNN-subnetは通常2つの大きなFC(またはresnetの5番目のステージ)であり、このようなやり方は非常に時間がかかります.
スピードアップのため、通常RoI feature mapの後にglobal average poolが採用される.このような目的は,最初のFC層の計算量を減らすことであるが,ターゲットbbox回帰に不利なspatial localizationの情報がいくつか失われる.
RCNN subnet of R-FCN
R−FCNNはFaster−RCNNの各RoIが計算を繰り返す場合にいくつかの最適化を行った.
R-FCNでは、
R-FCNのRCNN-subnetは小さく、global average poolしか含まれていないので、Faster-CNNより速いことがわかります.しかし,得られたfeature mapにPosition-sensitiveの特徴を持たせるためには,そのchannel数がP^2(C+1)であることを満たす必要がある.COCOデータセットでは、対応するchannel数が3969であり、これは必然的に大きな時間とストレージのオーバーヘッドをもたらす.
RCNN subnet of Light-head RCNN
上図は本稿で提案した改良構造であり,基本的にR−FCNに基づいて修正されていることがわかる.違うところは:1.著者らはlarge separable convolutionを用いてchannel数の少ないfeature map(3969から490に減少)を生成した.2.R-FCNのglobal average poolの代わりにFC層を用い、空間情報の損失を回避する.
本文でいうlarge separable convolutionはInception 3の思想を参考にしたはずである:Inception 3は大きさk*kのボリュームコアを1*kとk*1の2層のボリュームで代用する.このようなボリューム置換を用いると,計算結果が一致することを前提として計算量を減らすことができる.減少した計算量は,ほぼ元のk/2であり,著者らはkを15としたので,ここで計算を大幅に減少させた.もちろん、計算の複雑さはC_と同じです.midとC_out関係.
Experiments
著者らは,8個のPascal TITAN XP GPUs上を走るCOCOの実験を行った.
Implementation Details
Ablation Experiments
この部分は文章全体で私が一番好きな部分で、実験はよくできました.しかし、具体的な対比実験はやはり原文を見るべきだ.ここでは実験の結論を簡単にまとめます.
Baselines
著者らはR-FCNのオープンソースコードによりCOCO mini-validation set上にmmAP 32.1%のbaselineを得てB 1と記す.またいくつかの改善を通じて、より良いR-FCN baselineが得られ、B 2と記す.主な改善点は次のとおりです.
効果は非常に顕著で、これらの簡単な改善の後、R-FCNは3%上昇し、以下の図に示す.
Thin feature maps for RoI warping
より少ない数のfeature mapが結果に及ぼす影響を調べるために,著者らはまた実験を行った.以下の2点を除いて、R-FCNとほぼ一致しています.
実験結果は以下の通りである.
これは予想に合致し,channel数が少なくなると必然的に精度の低下を招く.
Large separable convolution
上記の実験はchannel数を減らしたが,R−FCN中の1*1のボリュームコアを用いた.Large separable convolutionがもたらした影響を検証するために、著者らは前のグループの実験の基礎の上で、1*1の核を巻き、Large separable convolutionに変えた.同時に、k=15、Cmid=256、Cout=490とする.
large separable convolutionを用いると、channel数は減少したが、効果は0.7%向上した.
R-CNN subnet
thin feature mapとlarge separable convolutionの効果についてそれぞれ紹介しました.以下はこの2つを結合した効果です.
精度が大幅に向上する、mmAPは37.7%に達した.さらに重要なのは、thin feature mapおよびlight RCNN-subnetのため、数千のRoIがあってもアルゴリズムは速い.
ライト-Head RCNNはどれくらい正確ですか?
アルゴリズムの精度を向上させるために,著者らは他のtrickを加えた.
最終的に、COCO test-devデータセットでは、次のperformanceに達しました.
ライト-Head RCNNはどれくらい速くできますか?
精度と速度をバランスさせるために,著者らは以下のように変更した.
上記trickを採用した後、COCO上で102 FPSに達するとともに30.7%mmAPの精度に達することができる.とてもすごいと言えます!
Conclusion
この文章をまとめると、著者は主に以下のいくつかの改善点を持っている.