[論文ノート] [より高速な Rcnn 最適化] 「Light-Head R-CNN: 2 段階物体検出器の防御」

論文: https://arxiv.org/abs/1711.07264

コード: GitHub - zengarden/light_head_rcnn: Light-Head R-CNN

1。概要

通常、オブジェクト検出は 2 つのシリーズに分けられます。

  • 1 つのタイプは 2 段階検出器です。

    • 代表的なアルゴリズムとしてはFaster RCNN、Mask RCNNなどが挙げられます。

    • アルゴリズムは 2 段階で実行されます。第 1 段階では提案を生成し、第 2 段階ではこれらの提案を分類および回帰します [微調整]

  • もう 1 つのタイプは 1 段階検出器です。

    • 代表的なアルゴリズムとしてはYOLOシリーズやSSDなどがあります。

    • このアルゴリズムは 1 つのステップに焦点を当てており、提案を生成するプロセスはありません。

        一般に、2 段階の一連の検出アルゴリズムの方が検出精度が高く、1 段階の一連のアルゴリズムの方が検出速度が速くなります。実際の産業応用(実装)においては、アルゴリズムの速度が重要な考慮事項であると同時に、YOLO シリーズのアルゴリズムは徐々に最適化され、その精度も向上しており、基本的に実際のニーズを満たすことができます。そのほとんどは依然として 1 段階の一連のアルゴリズムに基づいている可能性があります。

        著者はこの論文を「二段階物体検出器の尊厳の保護」と名付け、軽量ヘッド R-CNN ネットワークを構築することで、R-CNN が物体検出の精度と速度のバランスをどのようにとるかを調査しました。

  • 筆者はResnet-101をベースモデルとして使用し、COCO-2017で優勝しました。

  • 著者は軽量の Xception をベース モデルとして使用しており、30.7 mmAP と 102FPS の速度を実現しており、速度から精度まで総合的に既存のシングルステージ アルゴリズムを上回っています。

2. 2 段階アルゴリズムはなぜ非常に遅いのですか?

著者は、2 段階の遅さの主な理由は 「ヘッドが重い」 である と考えています。論文における「ヘッド」の著者の定義は次のとおりです。
この論文の「ヘッド」とは、バックボーンベースネットワークに接続されている構造を指します。より具体的には、 R-CNN サブネットと ROI ワーピングという2 つのコンポーネントがあります。

つまり、Head は主に 2 つの部分で構成されます。

  • ROI ワーピング: ROI プーリング/PSRoI プーリングおよびその他の方法を通じて、各 ROI の固定サイズの特徴マップを生成します。

  • RCNN サブネット: ROI ベースの特徴マップにより、認識プロセスがさらに実装されます。

        2 分割アルゴリズムの先頭では大量の計算が行われるため、軽量のバックボーン ネットワークであっても速度は大幅には向上しません。2 段階のアルゴリズム Faster R-CNN と R-FCN を例として使用して説明します。

Faster-RCNN の場合、効率が低い主な理由は 2 つあります。

  • 精度を確保するために、各 ROI は ROI プーリングによって処理され、2 つの大きな FC レイヤーに接続されますが、これには非常に時間がかかります。

  • 最初の FC 入力チャネルには多くのチャネルがあることが多いため (たとえば、resnet101 の出力には 2048 チャネルあり)、計算量が非常に多くなります。

[注:高速化するために、グローバル平均プールは通常、全結合層に直接接続するのではなく、RoI 特徴マップの背後で使用されます。この目的は、最初の FC 層の計算量を削減することですが、ある程度の空間的局所化が行われます。情報は失われますが、対象のbboxの返却につながります】

        R-FCN の場合、1x1 コンボリューション カーネルを使用して、位置依存の特徴マップを取得します。各 RoI は、PSRoI プーリング層を通過して、固定サイズの特徴マップ [p*p*(c+1)、c はカテゴリの数] そして最後に、各 RoI の予測はグローバル平均プール層を通じて取得されます。Faster-RCNN と比較して、PSRoI プーリングによって出力されるチャネル数ははるかに少なく [c+1]、完全接続層は削除されますなので速度は速くなりますが、位置依存特徴マップのチャネル数はP^2(C+1)を満たす必要があります。

  • COCO データ セットの 80 カテゴリの場合、対応するチャネル数は 3969 であり、このオーバーヘッドは非常に大きくなります。

3.ライトヘッド R-CNN の最適化

        上の図 C は、論文で改良されたネットワーク構造を示しています。Light-Head R-CNN は Faster R-CNN と R-FCN から改良されており、2 つの利点の一部を組み合わせていることがわかります。その改良点は主に次のとおりです。次の 3 つの側面で:

3.1. RoI ワーピング用の薄い特徴マップ

  • RoI ワーピングの前に、R-FCN の特徴マップが大きすぎてカテゴリ C の数が増加するにつれて増加するという問題を回避するために、特徴マップを圧縮して [薄い] 薄い特徴マップを取得します。

    • チャネル数がR-FCNの3969から490に削減され、計算量が大幅に削減されます。

  • 薄い特徴マップの後にPSROI/ROI Poolingを行った後、このとき得られるROI別の特徴マップも薄いため、FC層を後から追従すると計算量が少なくなり問題を回避できるR-CNN サブネットにおける Faster R-CNN の FC 第 1 層の計算過剰の問題

チャネル数が少ない薄い特徴マップが精度に与える影響を調べるために、著者は実験用に次のネットワーク構造を構築しました。

 R-FCNと比較すると、ネットワーク構成は基本的に同じですが、主な違いは以下の2点です(その他の設定は同じ)。

  • フィーチャー マップ チャネルを 3696 (7*7*81) から 490 (7*7*10) に削減します。

  • 特徴マップ チャネルの数が変更されたため、グローバル平均プールを介して直接予測を行うことができないため、FC レイヤーが追加されます。

実験結果は次のとおりです。

         このうち、B1 はオリジナルの作者が実装した R-FCN を表し、B2 は Light-Head の作者が実装した R-FCN を表し、いくつかのトリック (トレーニング画像サイズの拡大、分類と回帰のバランスのとれたトレーニング損失、修正されたアンカー) を追加しています。設定等】を見ると、B2はB1に比べて3ポイント改善されていることが分かります。次に、B1/B2 モデルの薄い特徴マップに変更すると、次のことがわかります。チャネル数の減少は精度の低下につながりますが、低下の規模は非常に小さいです。

  • FC 層が追加されるため、チャネル数だけが変数ではありませんが、モデル構造は基本的に同じであり、実験結果は比較的比較可能です。

  • さらに、薄い特徴マップの導入により、特徴ピラミッド ネットワーク [FPN] の導入が可能になります。RFCN の本来の実装では、浅い特徴マップ (Resnet ステージ 2) の解像度が高く、計算量とメモリ量が増加するため、この時点でかなりお金がかかります

3.2.大規模な分離可能な畳み込み

        R-FCN 法を参照すると、この層の前の特徴マップには 2048 チャネルがあり、この層には 490 チャネルしかないため、薄い特徴マップの実装は 1 × 1 畳み込みを通じてチャネルを直接圧縮します。多くのチャネルは特徴マップの能力を弱めます。チャネルの減少によって引き起こされる精度の損失を補うために、著者は大規模な分離可能な畳み込みを導入します。その構造は次の図に示されています。 15 であるため、これは大きな conv と呼ばれ、主にチャネル圧縮が失われすぎないようにするためです。 倍精度。

  • 計算量をさらに削減するために、大規模な分離可能なコンボリューションの実装はインセプション 3 のアイデアを利用しています。サイズ k*k のコンボリューション カーネルは、1*k と k*1 の 2 層コンボリューションに置き換えられます。一貫した結果を維持しながら計算量を削減して計算できます。

  • 計算の複雑さは Cmid と Cout のサイズに関連しており、論文のハイパーパラメーターは Cmid = 256、Cout = 490 に設定されています。

実験結果:

  • 大規模なカーネルによってもたらされたより大きな有効受容野のおかげで、プーリング後の特徴マップはより強力な表現力を持ち、その結果、精度が 0.7 向上しました。

3.3.light RCNN サブネット

        著者は、ドロップアウトなしで単一の FC 層(2048 チャネル) のみを使用し、その後に分類と回帰のために 2 つの完全な接続を使用します。

  • 回帰は異なるクラス間で共有されるため、各境界ボックスに 4 つのチャネルのみを使用します。

  • 全結合層の上位層の特徴マップは 10*p*p のみであり、全結合層は 1 つだけ導入されるため、本来の高速な rcnn に比べて計算量が大幅に削減されます。

実験結果:

  •  さまざまな最適化戦略のおかげで、Light Head R-CNN は速度と精度の両方で良好な結果を達成しました。 

4. 実験

著者は 8 個の Pascal TITAN XP GPU で COCO 実験を実行しました。関連するパラメータ設定は次のとおりです。
  • 重量減衰: 0.0001、運動量: 0.9 と同期した SGD。
  • 各ミニバッチには GPU ごとに 2 つのイメージがあります。
  • 各イメージには、トレーニング/テスト用の 2000/1000 RoI があります。
  • 画像の右下にゼロを埋めて、ミニバッチ内の画像を同じサイズにパディングします。
  • 学習率: 最初の 1.5M 反復では 0.01、後の 0.5M 反復では 0.001。
  • Resnet のステージ 5 で atrous アルゴリズムを採用します。
  • 私は養子縁組されました。
  • バックボーン ネットワークは、事前トレーニングされた ImageNet に基づいて初期化されます。
  • プールサイズ: 7。
  • 実験を高速化するためにバッチ正規化も修正されました。
  • データ拡張: 水平方向の画像反転。

4.1.LightHead  RCNN : 高精度【標準】

アルゴリズムの精度を向上させるために、作成者は LightHead  RCNNに 次のトリックを追加しました。
  • RoIAlign の補間技術 (Mask-RCNN) が PSRoI プーリングに追加され、1.3 ポイント改善されました。
  • NMS しきい値として元の 0.3 を 0.5 に置き換え 、0.6 ポイント増加します [ 混雑状況での再現率の向上 ]
  • トレーニングにマルチスケールを使用します。 トレーニング中に、スケールを {600、700、800、900、1000} からランダムにサンプリングし、 1 ポイントずつ増やします。

 最後に、COCO テスト開発データ セットに関する他の一般的なターゲット検出アルゴリズムとのパフォーマンスの比較は次のとおりです。

4.2.LightHead RCNN : 高速【快】

実際の実装を考慮し、モデルの推論速度を向上させるために、作成者は次の変更を加えました。

  • 軽量の Backbone Xception を使用して Resnet-101 を置き換えます。

  • 非推奨の atrous アルゴリズム [小規模なバックボーンに対する大規模な計算]

  • RPN チャネルを半分に減らします: 512 - - >256。

  • Large separable convolution の設定を変更します: kernel size = 15、Cmid = 64、Cout = 490。

  • PSPooling + RoI-align の使用

上記のトリックを使用すると、COCO で 102FPS を達成し、精度 30.7%mmAP を達成することができ、このパフォーマンスは非常に優れていると言えます。

5。結論:

Light Head R-CNN は、速度と精度のバランスが取れた 2 段階のターゲット検出方法であり、主に次の最適化ポイントがあります
  • 軽量の Backbone Xception を使用して Resnet-101 を置き換えます。
  • 薄い特徴マップ 大規模な分離可能な畳み込みにより、 速度を向上させながら精度を確保
  • グローバル平均プーリング の代わりに単一層 FC を使用する
  • FC の最後の 2 層を削除して、 空間情報の損失を減らし、精度を向上させます。
  • 他のトリックを追加: RoIAlign を使用した PSRoI、マルチスケール トレーニング、OHEM 

おすすめ

転載: blog.csdn.net/qq_44804542/article/details/123624669