R-FCN 領域ベースの完全畳み込みニューラル ネットワーク

R-FCN、正式名は「リージョンベースの完全畳み込みネットワーク」 この記事の公開時刻は次の図に示されています: R-FCN の焦点は検出精度ではなく、検出速度です
ここに画像の説明を挿入
図からわかる
ここに画像の説明を挿入
ように、Faster RCNN は各 Roi 領域のサブネットワークを通過します。このサブネットワークには、グローバル平均プール操作と 2 つの FC 操作が含まれます。各 Roi の計算が共有されないため、このネットワーク構造は時間がかかります。

この問題を解決するためのより直接的なアイデアは、Roi プーリングの前に 2 層の FC 演算を配置することです。この場合、各 Roi 領域はグローバル平均プール演算のみを実行する必要があり、計算量が節約されます。 。しかし、これには別の問題があり、全球平均プール演算で得られた特徴量には空間領域情報が不足しているため、そのまま座標を返すと測位精度が不正確になってしまいます。より多くの空間領域の位置情報を保持するために、R-FCN では「位置依存スコア マップ」の概念が提案されています。

右目を検出するための特徴マップが 1 つだけあると仮定します。では、それを使って顔を特定できるでしょうか? 大丈夫なはずです。右目は顔画像の左上隅にあるはずなので、これを使用して顔全体の位置を特定できます。
ここに画像の説明を挿入
左目、鼻、口の検出に他の特徴マップが使用されている場合は、検出結果を組み合わせて顔の位置をより適切に特定できます。

それでは、すべての質問を確認してみましょう。Faster R-CNN では、検出器は予測に複数の完全に接続されたレイヤーを使用します。ROI が 2000 ある場合、コストは非常に高くなります。

feature_maps = process(image)
ROIs = region_proposal(feature_maps)
for ROI in ROIs
    patch = roi_pooling(feature_maps, ROI)
    class_scores, box = detector(patch)         # Expensive!
    class_probabilities = softmax(class_scores)```

R-FCN 通过减少每个 ROI 所需的工作量实现加速。上面基于区域的特征图与 ROI 是独立的,可以在每个 ROI 之外单独计算。剩下的工作就比较简单了,因此 R-FCN 的速度比 Faster R-CNN 快。

```c
feature_maps = process(image)
ROIs = region_proposal(feature_maps)         
score_maps = compute_score_map(feature_maps)
for ROI in ROIs
    V = region_roi_pool(score_maps, ROI)     
    class_scores, box = average(V)                   # Much simpler!
    class_probabilities = softmax(class_scores)

次に、内部に青い四角形を含む 5 × 5 の特徴マップ M を見てみましょう。正方形を 3 × 3 の領域に均等に分割します。ここで、正方形 (TL) の左上隅を検出するために M で新しい特徴マップを作成します。この新しい機能マップを下の図 (右) に示します。黄色のグリッド セル [2, 2] のみがアクティブです。
オブジェクトの左上隅を検出するために、左側に新しい特徴マップを作成します。
正方形を 9 つの部分に分割し、対応するオブジェクト領域を検出するためにそれぞれ使用される 9 つの特徴マップを作成します。これらの特徴マップは、各マップがオブジェクトのサブ領域を検出する (スコアを計算する) ため、位置依存スコア マップと呼ばれます。
9 つのスコア プロットを生成する
以下の図の赤い点線の長方形は、提案される ROI です。それを 3 × 3 の領域に分割し、各領域にオブジェクトの対応する部分が含まれる確率を尋ねます。たとえば、左上の ROI 領域に左目が含まれる確率。以下の図 (右) に示すように、結果を 3 × 3 の投票配列として保存します。たとえば、vote_array[0][0] には、左上の領域にターゲットの対応する部分が含まれているかどうかのスコアが含まれます。
ROI を特徴マップに適用し、3 x 3 配列を出力します。
スコア マップと ROI を投票配列にマッピングするプロセスは、位置依存の ROI プーリングと呼ばれます。このプロセスは、前述した ROI プーリングに非常に似ています。
ROIの一部を対応するスコアマップに重ね合わせてV[i][j]を計算します。
位置依存の ROI プーリングのすべての値を計算した後、クラス スコアはそのすべての要素スコアの平均になります。
ROIプーリング
検出する C クラスがあるとします。これを C + 1 カテゴリに拡張し、背景 (非オブジェクト) の新しいカテゴリを追加します。カテゴリごとに 3 × 3 のスコア マップがあるため、合計で (C+1) × 3 × 3 のスコア マップが存在します。各クラスのスコア マップを使用すると、そのクラスのクラス スコアを予測できます。次に、これらのスコアにソフトマックス関数を適用して、各クラスの確率を計算します。

以下はデータ フロー グラフです。この場合、k=3 です。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41318914/article/details/127780675