論文翻訳: M2Det part1

YOLOv3よりも精度が良いらしいM2Detを翻訳して箇条書きでまとめます．

原文: [「M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network」](https://arxiv.org/abs/1811.04533)

# ざっくりまとめ

### Abstract
- 特徴ピラミッド構造のバックボーンはclassificationのために設計されてるから制限がある
- マルチ特徴ピラミッドネットワーク(MLFPN)を提案しました．
- SSDのアーキテクチャに組み込むと，精度がすごい（語彙力）出た．

### Introduction 
- 特徴ピラミッド構造は物体検出に都合が良いけど，いくつか制限がある
- 問題1 classificationのモデルをそのまま単純に利用しがち
    - SSD, STDN, FPNについて問題点を記述
- 問題2 信号機と遠く離れた人の複雑さの違い
- TLN・FFMを使ったMLFPNを提案，M2Detが精度でた．

### 

# M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

## 概要
特徴ピラミッド[^1]は，オブジェクトインスタンス間の縮尺の違いという問題を軽減するため，the state-of-the artな物体検出器によって広く利用されています(one-stage detector[^7]ではDSSD[^2], RetinaNet[^3], RefineDet[^4]やtwo-stage detector[^8]ではMask-RNN[^5], DetNet[^6]など)． 
特徴ピラミッドを有するこれらのオブジェクト検出器は，有望な結果を達成しますが，
これらはもともとオブジェクト分類タスクのために設計されているバックボーン固有のマルチスケールピラミッドアーキテクチャにしたがって特徴ピラミッドを単に構築するだけであるため，いくつかの制限があります．
今回，本研究では，異なる規模の物体を検出するためのより効果的な特徴ピラミッドを構築するために，マルチレベル特徴ピラミッドネットワーク(MLFPN)を提示します．
最初に，基本機能としてバックボーンによって抽出された，マルチレベル機能を融合します．次に，基本特徴を交互に結合したU字型モジュールと，特徴変異モジュールのブロックにフィードし，各U字型モジュールのデコーダレイヤをオブジェクト検出用のフィーチャとして利用します．最後に，同等の縮尺でデコーダレイヤをまとめて，全ての特徴マップが複数レベルの（特徴）レイヤで構成されているオブジェクト検出用の特徴ピラミッドを作成します．
提案されたMLFPNの有効性を評価するために，SSDのアーキテクチャに統合することによってM2Detと呼ぶ強力なエンドツーエンドのone-stage detectorを設計し，訓練したところ，one-stage detectorの最先端技術より良い検出性能を達成しました．具体的にはMS-COCOベンチマークでは，M2DetはAP 41.0 (11.8 FPS)のスコアを達成しました．シングルスケールの推論戦略で11 FPS，マルチスケールの推論戦略でAP 44.2であり，これはone-stage detectorの中では最先端の結果です．
コードは https://github.com/qijiezhao/M2Det で公開されます．（2018/02/20現在: レポジトリのみ）

[^1]: 段階的にConvフィルタサイズを小さくするピラミッド構造のこと．大きさを変更することで，異なるスケールの物体の検出に対応する．
[^2]: [DSSD : Deconvolutional Single Shot Detector](https://arxiv.org/abs/1701.06659)
[^3]: [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002)
[^4]: [Single-Shot Refinement Neural Network for Object Detection](https://arxiv.org/abs/1711.06897)
[^5]: [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://arxiv.org/abs/1506.01497)
[^6]: [DetNet: A Backbone network for Object Detection](https://arxiv.org/abs/1804.06215)
[^7]: 1段のCNNでbounding boxの座標とクラスを推定する検出器．two-stage detectorに比較すると検出速度に優れ，検出精度に劣る傾向にある．
[^8]: 領域候補の抽出と，bounding boxとクラスの推定の2つのプロセスで物体認識を行う検出器．one-stage detectorに比べ，検出精度に優れ，検出速度に劣る傾向にある．

## はじめに

スケールオブジェクトインスタンスは，物体検出タスクのための主要な課題の一つで，この問題の解決に挑戦するには，通常2つの戦略があります．1つ目は，画像ピラミッド内のオブジェクト（入力画像の一連のサイズが変更されたコピー）を検出することです．これは，テスト時にしか利用できません．明らかに、この解決法はメモリおよび計算上の複雑さを非常に増大させるため、そのような物体検出器の効率は劇的に低下します。2つ目は、入力画像から抽出された特徴ピラミッドの中のオブジェクトを検出することです。これは、トレーニングとテストの両方の段階で利用できます。画像ピラミッドを使用する最初のソリューションと比較すると、メモリと計算コストが少なくて済みます。さらに、特徴ピラミッド構築モジュールは、最先端のディープニューラルネットワークベースの検出器に容易に統合することができ、エンドツーエンドの解決策をもたらします．

特徴ピラミッドを有する物体検出器は有望な結果をもたらしますが、それでもなおいくつかの制限があります。それは、オブジェクト分類タスク用に実際に設計されているバックボーンの固有のマルチスケールのピラミッド型アーキテクチャに従って、機能ピラミッドを単純に構築するということです。例えば、図1に示すように、SSDは独立骨格（e.g. VGG16）から二つの層を使用し，特徴ピラミッドを構築するためにストライド２の畳み込み層を４つ追加しています。STDNのみDenseNetの最後稠密ブロックを使用して操作をプールし、スケール移動によって特徴ピラミッドを構築します。FPNは深い層と浅い層をトップダウン方式で融合して、フィーチャーピラミッドを構築します。一般的に言って、上記の方法には以下の２つの制限があります。第1に、ピラミッド内の特徴マップは、物体検出タスクにとって十分に代表的なものではなく、それらは、物体分類タスクのために設計されたバックボーンのレイヤ（特徴）から単に構築されます。次に、ピラミッド内の各フィーチャマップ（特定のサイズ範囲のオブジェクトを検出するために使用される）は、バックボーンのシングルレベルのレイヤから主に、または単独で構築されます。つまり、単一レベルの情報のみを含みます。一般に、より深い層における高レベルの特徴は分類サブタスクにとってより識別力があり、より浅い層における低レベルの特徴はオブジェクト位置回帰サブタスクにとって有用です。また、低レベルの機能は、単純な外観を持つオブジェクトを特徴付けるのに適していますが、高レベルの機能は、複雑な外観を持つオブジェクトに適しています。実際には、同じサイズのオブジェクトインスタンスの外観はかなり異なる場合があります。例えば、信号機と遠く離れた人とは同程度のサイズである可能性があり、その人の外観ははるかに複雑になります。したがって、ピラミッド内の各フィーチャマップ（特定のサイズ範囲のオブジェクトの検出に使用される）は、主に、または単一レベルのフィーチャのみで構成されているため、次善の検出パフォーマンスが得られます。信号機と遠く離れた人は同程度の大きさであるかもしれず、その人の外見はずっと複雑です。したがって、ピラミッド内の各フィーチャマップ（特定のサイズ範囲のオブジェクトの検出に使用される）は、主に、または単一レベルのフィーチャのみで構成されているため、次善の検出パフォーマンスが得られます。信号機と遠く離れた人は同程度の大きさであるかもしれず、その人の外見はずっと複雑です。したがって、ピラミッド内の各フィーチャマップ（特定のサイズ範囲のオブジェクトの検出に使用される）は、主に、または単一レベルのフィーチャのみで構成されているため、次善の検出パフォーマンスが得られます。
![fig1_1.jpeg](https://qiita-image-store.s3.amazonaws.com/0/249063/b84391df-7690-0bb4-990a-e922b43ebe49.jpeg)

本論文の目的は、上述の既存の方法の制限を避けながら、異なるスケールの物体を検出するためのより効果的な特徴ピラミッドを構築することです。図2に示すように、この目標を達成するために、最初のマルチレベルの機能を融合，すなわちベースフィーチャとしてバックボーンから抽出し、次にそれを交互結合のU字型モジュール（TUM）とフィーチャフュージョンモジュール（FFM）のブロックにフィードして、より代表的なマルチレベルマルチスケールフィーチャとして抽出します。注目すべきは、各U字型モジュール内のデコーダレイヤが同じ深さを共有していることです。最後に、オブジェクト検出のための最終的な特徴ピラミッドを構築するために、同等の縮尺で特徴マップを集めます。明らかに、最終的な特徴ピラミッドを形成するデコーダレイヤは、バックボーン内のレイヤよりもはるかに深く、それらはより代表的です。さらに、最終特徴ピラミッド内の各特徴マップは、複数のレベルからのデコーダ層からなる。それゆえ、この特徴ピラミッドブロックをマルチレベル特徴ピラミッドネットワーク（MLFPN）と呼ぶ。
提案されたMLFPNの有効性を評価するために、MLFPNをSSDのアーキテクチャに統合することによって、M2Detと呼ぶ強力なエンドツーエンドの1ステージ物体検出器を設計・訓練した。 M2Detの結果（達成すなわち単一スケール推論戦略とマルチスケール推論戦略と44.2 APと11.8 FPSの速度で41.0 AP）は、MS-COCOの一段階検出器のベンチマークにおいて(既存の手法を)上回ります．

![fig2.jpeg](https://qiita-image-store.s3.amazonaws.com/0/249063/b4323c5f-8a97-08f3-6957-0fc2e0328ede.jpeg)

<!--
## 関連研究

研究者は、さまざまな規模の物体の検出精度を向上させるために多くの努力を払ってきました

> それがどのような種類の検出器であっても、one-stage detectorまたはtwo-stage detectorです。

私たちの知る限りでは、このスケール変動の問題に取り組むための戦略は主に2つあります。第１のものは、意味的に代表的なマルチスケール特徴を生成するために画像ピラミッド（すなわち入力画像の一連のサイズ変更されたコピー）を特徴とすることである．異なる縮尺の画像からの特徴は別々に予測を生み出し、これらの予測は一緒になって最終的な予測を与える．認識精度および位置特定精度に関して、様々なサイズの画像からの特徴は、単に単一スケールの画像に基づく特徴を上回る．などの方法をSNIPは採用しました。パフォーマンスの向上にもかかわらず、そのような戦略は時間的にもメモリ的にもコストがかかる可能性があり、リアルタイムタスクでのアプリケーションの使用を禁止しています。この主要な欠点を考慮すると、このようなSNIPなどの方法の代替としてテスト段階中はfeaturized画像ピラミッドを利用するための高速R-CNNなど他の方法に対し、選択することができる及び高速R-CNNはデフォルトでこの戦略を使わないことを選択しました．
2つ目は、単スケールの画像を撮影しながら、ネットワーク内の固有のレイヤから抽出された特徴ピラミッド内のオブジェクトを検出することです。この戦略では、最初の戦略よりも大幅に少ない追加のメモリと計算コストで済み、リアルタイムネットワークでのトレーニングとテストの両方の段階で展開が可能になります。
さらに、特徴ピラミッド構築モジュールは、容易に修正され、最先端のディープニューラルネットワークベースの検出器に適合することができる。MS-CNN、SSD、DSSD、FPN、YOLOv3、RetinaNet、及びRefineDetは、さまざまな方法でこの戦術を採用しました。
私たちの知る限りでは、MS-CNNは2つのサブネットワークを提案し、最初に物体検出のためにマルチスケール特徴をディープコンボリューションニューラルネットワークに組み込んだ。提案サブネットは、画像内のマルチスケールオブジェクトを検出するためにいくつかの解像度の特徴マップを利用した。SSDはVGG16ベースネットの後の層からの特徴マップと複数のスケールでの予測のための追加の特徴層を利用した。FPNは、特徴的なピラミッドを生成するために横方向の接続とトップダウンの経路を利用し、より強力な表現を実現しました。DSSDは文脈を集約し、浅い特徴のための高水準の意味論を強化するために逆畳み込み層を実装しました．RefineDetはSSDの効率を維持しながら精度に著しい進歩を達成採用二段階カスケード回帰
-->

<!--
## 提案手法
M2Detの全体的なアーキテクチャは図2に示されています。M2Detは、バックボーンとマルチレベル特徴
ピラミッドネットワーク（MLFPN）を使用して入力画像から特徴を抽出し、SSDと同様に、学習された特徴に基づいて密接な境界ボックスとカテゴリスコアを生成し、続いて非最大抑制最終結果を出すためのNMS）操作。MLFPNは三つのモジュールで構成さすなわち機能融合モジュール（FFM）、薄型U字型モジュール（TUM）、およびスケール別機能集約モジュール（SFAM）。FFMv1は、バックボーンの機能マップを融合することによって意味情報を基本機能に強化します。各TUMはマルチスケールフィーチャのグループを生成し、次に交互ジョイントTUMとFFMv2はマルチレベルマルチスケールフィーチャを抽出します。さらに、SFAMは、スケールごとの機能連結操作と適応的注意メカニズムによって、機能をマルチレベル機能ピラミッドに集約します。M2Detの3つのコアモジュールとネットワーク構成についての詳細は、以下で紹介します。

### 多レベル特徴ピラミッドネットワーク
図２に示すように、ＭＬＦＰＮは３つの部分を含む。第１に、ＦＦＭｖ１は、浅い特徴と深い特徴を融合させて、基本特徴、例えばＶＬＧのconv4_3およびconv5_3 [ citeauthoryear Simonyan and Zisserman2015 ]を生成し、それはＭＬＦＰＮのためのマルチレベル意味情報を提供する。次に、複数のTUMとFFMv2が交互にスタックされます。特に、各TUMは異なる縮尺でいくつかの特徴マップを生成します。FFMv2は以前のTUMの基本機能と最大出力機能マップを融合したものです。そして融合した特徴マップは次のTUMに送られます。最初のTUMは他のTUMに関する予備知識がないため、X_baseからのみ学習します。。出力
マルチレベルマルチスケールフィーチャは、次のように計算されます。
(1)
ここで、X_baseは基本特徴量、X_liはl番目のTUMのi番目のスケールの特徴量、LはTUM の数、T_lはl番目のTUM処理、FはFを表します。 FFMv1処理 第３に、ＳＦＡＭは、スケールごとの特徴連結操作およびチャネルごとの注意メカニズムによってマルチレベルマルチスケール特徴を集約する。FFM FFMはM2Detのさまざまなレベルのフィーチャーを融合します。これは、最終的なマルチレベルフィーチャーピラミッドを構築するために不可欠です。それらは、入力特徴のチャネルを圧縮するために１×１畳み込み層を使用し、これらの特徴マップを集約するために連結演算を使用する。特に、FFMv1はバックボーン内のスケールが異なる2つのフィーチャーマップを入力として使用するため、連結操作の前に深いフィーチャーを同じスケールに再スケーリングするために1つのアップサンプル操作を採用します。その間、FFMv2は前のTUMの基本特徴と最大の出力特徴マップを取ります - これら2つは同じスケールです - 入力として、そして次のTUMのための融合した徴を作り出します。ＦＦＭｖ１およびＦＦＭｖ２の構造の詳細は、それぞれ図４（ａ）および（ｂ）に示されている。

タムズ FPN異なりとRetinaNet図に示すように、TUMは薄いU字型構造を採用している。4（C）。エンコーダはストライド2の一連の3×3畳み込みレイヤです。また、デコーダはこれらのレイヤの出力をフィーチャマップの参照セットとして使用し、元のFPNはResNetバックボーンの各ステージの最後のレイヤの出力を選択します。さらに、学習能力を高め、特徴の滑らかさを維持するために、デコーダブランチでのアップサンプリングおよび要素ごと和演算の後に1x1の畳み込みレイヤを追加します[ \ citeauthoryear Lin、Chen、およびYan2014]。各TUMのデコーダ内のすべての出力は、現在のレベルのマルチスケール機能を形成します。全体として、積み重ねられたＴＵＭの出力はマルチレベルマルチスケール機能を形成し、一方前部ＴＵＭは主に浅レベル機能を提供し、中央ＴＵＭは中レベル機能を提供し、そして後部ＴＵＭは深レベル機能を提供する。
SFAM SFAMは、図3に示すように、TUMによって生成されたマルチレベルマルチスケールフィーチャをマルチレベルフィーチャピラミッドに集約することを目的としています。ＳＦＡＭの第１段階は、チャネル寸法に沿って等価スケールの特徴を一緒に連結することである。集約特徴ピラミッドとして提示することができる
ここでは、集約ピラミッドの各目盛には、複数レベルの深度の特徴が含まれています。
ただし、単純な連結操作では十分に適応できません。第2段階では、チャンネルごとに注目するモジュールを導入して、機能が最も役立つチャンネルに焦点を当てるようにします。SEのブロックに続いて、我々は、チャネルごとの統計情報を生成するために世界の平均プールを使用するZ ∈ R^Cを絞りステップで。また、チャネルごとの依存関係を完全に捉えるために、次の励起ステップでは、2つの完全に接続されたレイヤを介してアテンションメカニズムを学習します。
(2)式 
(3)式 
ここで，X... の各機能は，拡張または再スケーリング操作によって弱められます．
-->
# 参考にしたページ

[物体認識モデルYOLOv3に完全勝利](https://note.mu/seishin55/n/n6f82917832e6)
[Understanding Feature Pyramid Networks for object detection (FPN)](https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c)