H2RBox:方向性のあるオブジェクトの検出に必要なのは水平ボックスの注釈だけです(读论文)

H2RBOX: 方向性のあるオブジェクトの検出に必要なのは水平ボックスの注釈だけです


水平ボックスを使用して回転オブジェクト検出器をトレーニングするだけで十分です

概要

水平ボックス アノテーションを使用して回転ボックスをトレーニングすると、アノテーションのコストを節約し、多数の既存のデータセットを最適化できます。
この論文では、自己監視と組み合わせた弱い監視を使用して回転ボックス検出器をトレーニングし、水平ボックスベースのインスタンス セグメンテーション モデルとパフォーマンスを比較します。
コード:https://github.com/yangxue0827/h2rbox-mmrotate

イントロ

いくつかのデータ セットを導入しました:
DIOR-R
SKU110K-R は、
いくつかの HBox 監視インスタンス セグメンテーション メソッドを導入しました:
BoxInst
BoxLevelSet

このタスクは初めて提案されるため、この論文のモデルではインスタンス セグメンテーション境界四角形モデルのパフォーマンスを比較します。

ここに画像の説明を挿入
この記事への貢献:

  • 最初の HBox アノテーションベースの指向性オブジェクト検出器、提案された自己教師あり角度予測モジュール
  • H2RBox インスタンスのセグメンテーション境界長方形モデル BoxInst (Tian et al., 2021) と比較すると、mAP50 (67.9% vs 53.59%)、12 倍高速 (31.6fps vs 2.7fps)、メモリ使用量 (6.25 GB vs. 19.93 GB)
  • 古典的な回転ターゲット検出モデル FCOS と比較すると、
    H2RBox は DOTA-v1.0 に対してわずか 0.91% (74.40% 対 75.31%) 遅れており、DIOR-R では 1.7% (34.90% 対 33.20%) も上回っています。 、DOTA-v1.0 では 29.1 FPS と 29.5 FPS。

関連作業

待機中の書類:
SDI
MCG
BBTP
Mask R-CNN
BoxInst
CondInst
BoxLevelSet

提案手法

この部分は論文と合わせて読むことをお勧めしますが、結局のところ、方法が最も重要な部分であり、著者が論文で説明した内容は簡略化されたものです。
ここに画像の説明を挿入

  • 強化されたビュー生成

本文の最も興味深い部分は、図の右側に示すように、予測された回転ボックスの角度の一貫性を確保するために自己監視を使用していることです。注: 回転がネットワークに供給された後、クロップまたはパディングのいずれかが必要です。
1: 中央領域を維持
2: 塗りつぶし (空白塗りつぶしと反射塗りつぶし)
(ここでは塗りつぶし領域は回帰損失に関与しません。塗りつぶし部分にターゲットが表示されることを心配しないでください)
ここに画像の説明を挿入

  • 弱く監視されたブランチ

resnet + FPN 構造を使用して、
監視を設定するための回帰に FCOS のヘッド ネットワークをどのように使用しますか?
著者は、外部の水平ボックスを監視として使用すると、RBox を正確に予測できなくなり、次のような問題が発生すると説明しました。
ここに画像の説明を挿入

  • 自己監視ブランチ

ws ブランチの補足として、ss ブランチには回帰のみが含まれ、分類は含まれません。つまり、ss はフレーム回帰のためのネットワークの学習を最適化するために使用されます。つまり、xywha は単に回転変換行列を呼び出し、 FCOS 学習の 4 つのパラメーター xl xr yl
yr
ここに画像の説明を挿入
を中心度と組み合わせて、ラベルの割り当てを完了します。外接水平枠が満たされる必要があり、その中心が元の回転枠の中心と一致するため、回転枠に対して学習する必要があるパラメータは wh θ です。明らかに、wh が正確な場合、外接長方形を gtH に等しくするために使用します。ここに画像の説明を挿入
B sss = S ( R ⋅ B wsc ) B_{ss}^s = S(R\cdot B_{ws}^c)Bsss=S ( R)Bうーん_cここで、
方程式の左側は ss 分岐予測のミラー フレームを表し、右側 S は水平反転変換 (中心が対称であるため、垂直反転とも呼ばれます) を表し、R は回転行列 (つまりは、θ \シータθで得られる回転行列B wsc B_{ws}^cBうーん_cws ブランチに対して予測された rbox と一致するボックス

(次の数文が理解できません)
最終的な SS 学習は、スケール一致学習と空間位置一致学習で構成されます:
S im ⟨ R ⋅ B ws , B ss ⟩ Sim \langle R\cdot B_{ws}, B_{ ss} \rangleシム⟨R _ _Bうーん_Bss
図 4(b) は、正確な予測を伴う SS 損失を使用した視覚化を示しています。付録には、
制約のさまざまな組み合わせに対する実現可能な解決策の視覚化が示されています。
見てみましょう)

  • ラベルの割り当て

著者: ws 分岐と ss 分岐の間の整合性は、中心点損失と角度損失を設定することで学習できます。
ws ブランチによって予測された rb は、ss ブランチによって予測された rbox を監視するために使用されます。また、図の各ピクセルの中心度カテゴリのターゲット GT Hbox は一貫している必要があります。
1) 1 対 1、各元の画像点は ss 画像点に対応し、その rb に対応する Hb が監視として使用されます。 2) 1 対多、
中心点に最も近い rb が監視に使用されます。 ss ブランチ rb
ここに画像の説明を挿入
(正直に言うと、この数文は理解できているようですが、正しく理解できているかどうかはわかりません。まだコードから入力する必要があります)

  • wsとssを組み合わせた損失

ws ブランチ: FCOS に基づく回転オブジェクト検出器、損失: L reg L cls L cn L_{reg} L_{cls} L_{cn}L規則_Lクラス_ _L_それらは焦点損失、クロスエントロピー損失、IoU 損失です。#なぜまだ Lcn があるのですか? ? ?
ここに画像の説明を挿入
パラメータの説明: (手動でプレイしたくないので、違いはありません)
ここに画像の説明を挿入

重要なことは、ss 分岐損失を見てみましょう。
ここに画像の説明を挿入
この Lxy の t が説明されていないため、B(-,-,+,+) がわかりません。

実験

紙を参照

アブレーション研究

ここに画像の説明を挿入

  • 生成境界法の結果に対する影響
  • 異なる割り当て者が結果に影響を与える
  • 特殊な円形オブジェクト (貯蔵タンク) のトレーニングおよびテスト戦略
  • ss法による結果の向上

コードレベルでの解釈

コードについては論文内のリンクを参照してください。
コードを読んだ後、コード全体は非常に簡潔です。この記事では主に損失の新しい設計に焦点を当てています。
次に、コードを 3 つのステップで紹介します。

model.forwar_train(self,img,img_meta,gt_bboxes,gt_labels,gt_bboxes_ignore)

この部分は、次のことを行うネットワークの順伝播のコードです。

  • 角度をランダムに生成
  • 元の画像を回転し、境界線を埋めるように反射します
  • 回転した画像と元の画像はバックボーン+ネックに送信されます(重みを共有)
  • 次に、取得した特徴マップを head.forward_train に送信します。

一般的なmodel.forward_trainとの違いは、並列分岐が1つ多いだけであることがわかります。

loss=self.bbox_head.forward_train(x,x_aug,rot,img_metas,gt_bboxes,gt_labels,gt_bboxes_ignore)

ヘッド ネットワーク Rotated_FCOS_head がヘッド ネットワークに送信されます。
まず、元の x については、直接転送 (x) して bbox_pred、angle_pred、class、centerness を取得し
、次に x_aug については、回帰分岐 (共有重み) を通過して bbox_pred を取得します。角度_pred

次に最も重要な損失計算ですが、損失をどのように設計するか?
論文によれば、まず x の損失は FCOS 自身の損失を使用し、分類 + 回帰 + 角度 + 中心性の損失があり、x_aug に関する損失を一貫性損失と呼ぶことができます。もっと詳しく見てみましょう

loss(outs,outs_aug,tf,gt_bboxes, gt_labels, img_metas)

おすすめ

転載: blog.csdn.net/fei_YuHuo/article/details/127574833