より速いRcnn
FastRCNN の主な手順
1: まず画像を固定サイズ M*N に拡大縮小してから、画像をネットワークに送信します。
2: VGG や Resnet などの他のネットワークを通じて特徴マップを抽出します。さらに、アンカーを初期化し、有効なアンカーを見つけます (ステップ 1)。
3: 特徴マップは、RPN ネットワーク (地域提案ネットワーク) を通じて、有効なアンカー信頼度および予測フレームの座標係数を取得します。2K (正のサンプルと負のサンプル x K 個のアンカー係数) スコアと 4K (アンカーの座標オフセット係数 x K 個のアンカー係数) 座標。
4: 特徴マップと予測フレームから計算された提案を使用して、ROI プーリングを通じて固定サイズの予測ターゲット特徴マップを取得します。つまり、予測フレームを使用して特徴マップからターゲットを抽出します。
上記のパラメータを参照してください
- この提案は M*N スケールに対応するため、まず Spatial_Scale を使用して、(M/16)*(N/16) サイズの特徴マップにマッピングし直します。
- 次に、その特徴マップを Pooled_w*Pooled_H サイズのグリッド サイズに分割します。
- 次に、各ネットワーク上で最大プーリング操作を実行して出力します。
- これにより、出力サイズが均一になります。
5: 固定サイズの特徴マップは完全接続層とソフトマックスに送信され、BOX_Pred と Cls_Prob をそれぞれ予測します。
詳細な導出例
Step1: 画像を入力 800*800サイズに変形します。
次に、画像をグリッドに分割します。各グリッドのピクセル領域が 16*16 であるとすると、グリッドは 800/16=50 に分割され、グリッド サイズは 50*50 になります。同時に、各グリッドは K=9 個のアンカーを生成します。次に、ピクチャは 22,500 個のアンカーを同時に生成します。
同時に、アンカーのサイズが異なるため、境界ボックスを超えるアンカーや負の値を持つアンカーがいくつか存在するはずです。次に、このパーツの境界ボックスを削除する必要があります。
消去後、アンカーは 8940 個残ります。バウンディングボックスの座標値を取得し、初期化を完了します
次に、すべてのアンカーと実際の GT の間の IOU を計算します。そして、一定割合の陽性サンプルと陰性サンプルをスクリーニングします。
ステップ 2: VGG を実行して機能マップを取得し、その機能マップを RPN ネットワークに送信します。ステップ 1 を繰り返します
次に、画像をグリッドに分割します。各グリッドのピクセル領域が 16*16 であるとすると、グリッドは 800/16=50 に分割され、グリッド サイズは 50*50 になります。同時に、各グリッドは K=9 個のアンカーを生成します。次に、ピクチャは 22,500 個のアンカーを同時に生成します。
これらの 22,500 個のアンカーについて、各アンカーの信頼度 2 (ポジティブ サンプル 1 ネガティブ サンプル 0) と、元の画像に対する各アンカーの 4 つの座標オフセット値を取得します。
ステップ 3: RPN 損失 (有効アンカーと予測アンカー間の損失 - 座標と信頼度) を計算します。
Step1 のターゲットアンカー情報と Step2 の pred_anchors 情報を通じて。主に、ステップ 1 の陽性サンプルのアンカーとステップ 2 の対応するアンカーの損失値を計算します。
ステップ4: IOUNMS
アンカーと予測アンカー係数に基づいて、予測フレーム ROI、座標係数、カテゴリを計算します。取得された ROI 予測ボックスは、NMS (非最大抑制) によってさらにフィルター処理され、合理化されます。
Step5:ROIプーリング
1: ROI に従って特徴マップから対応する予測ターゲットを差し引きます。
2: 後続のバッチ処理を容易にするために、控除処理の予測ターゲットをadaptive_max_poolメソッドに渡し、固定サイズとして出力します。
STep6&Step7:損失計算
予測フレームのカテゴリ信頼度、ターゲット フレームに変換された変換スケーリング係数、分類損失をそれぞれ計算します。