Proposal

バージョン名: Proposal-1

カテゴリー: 物体検出

簡単な説明: Proposal 操作は境界ボックスをフィルター処理し、予測の信頼度が最も高い境界ボックスのみを出力します。

詳細な説明:

Proposal には 3 つの入力があります: 特定の境界ボックスが背景と前景に対応するかどうかの確率を持つテンソル、各境界ボックスの bbox_deltas を持つテンソル、[image_height, image_width, scale_height_and_width] または [image_height, image_width, scale_height, scale_width] 形式の入力画像サイズを持つテンソル。生成されたテンソルは 2 つの次元 [batch_size * post_nms_topn, 5] を持ち、各出力ボックスにはバッチ・インデックスとボックス座標が含まれます。Proposal レイヤーは入力テンソルを使用して次の処理を行います。

  1. 初期アンカーボックスを生成します。すべてのボックスの左上隅は (0, 0) にあります。ボックスの幅と高さは、scaleratio 属性を使用して、base_size から計算されます。

  2. 最初の入力テンソルの各点について:

    • 各ボックスに 4 つのデルタを含む 2 番目の入力テンソルに従って、アンカーボックスを画像に固定します: 中心の xy高さ

    • 最初の入力テンソルのスコアを見つけます。

  3. min_size 未満のサイズのボックスをフィルターで除外します。

  4. すべてのプロポーザル (ボックススコア) を最高スコアから最低スコアまで並べ替えます

  5. 上位の pre_nms_topn プロポーザルを採用します。

  6. ボックスの交差を計算し、\(intersection/union > nms\_thresh\) を使用してすべてのボックスをフィルター処理します。

  7. 上位の post_nms_topn プロポーザルを採用します。

  8. 上位のプロポーザル。出力テンソル全体を満たすのに十分なプロポーザルがない場合、有効なプロポーザルは単一の -1 で終了します。

属性:

  • base_size

    • 説明: base_size は、scaleratio 属性が適用されるアンカーのサイズです。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • pre_nms_topn

    • 説明: pre_nms_topn は、NMS 操作前の境界ボックスの数です。例えば、pre_nms_topn が 15 に等しい場合は、スコアが最も高い上位 15 個のボックスを取得することを意味します。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • post_nms_topn

    • 説明: post_nms_topn は、NMS 操作後の境界ボックスの数です。例えば、post_nms_topn が 15 に等しい場合は、スコアが最も高い NMS 上位 15 ボックスの後を取得することを意味します。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • nms_thresh

    • 説明: nms_thresh は、考慮される提案の最小値です。例えば、nms_thresh が 0.5 に等しい場合は、予測確率が 0.5 未満のすべてのボックスがフィルターで除外されることを意味します。

    • 値の範囲: 正の浮動小数点数

    • タイプ: float

    • 必須: はい

  • feat_stride

    • 説明: feat_stride は、ボックス上をスライドするステップサイズ (ピクセル単位) です。例えば、feat_stride が 16 に等しい場合は、すべてのボックスがスライド 16 で分析されることを意味します。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • min_size

    • 説明: min_size は、考慮されるボックスの最小サイズです。例えば、min_size が 35 に等しい場合は、ボックスサイズが 35 未満のすべてのボックスがフィルターで除外されることを意味します。

    • 値の範囲: 正の整数

    • タイプ: int

    • 必須: はい

  • ratio

    • 説明: ratio はアンカー生成の比率です。

    • 値の範囲: 浮動小数点数のリスト

    • タイプ: float[]

    • 必須: はい

  • scale

    • 説明: scale はアンカー生成のスケールです。

    • 値の範囲: 浮動小数点数のリスト

    • タイプ: float[]

    • 必須: はい

  • clip_before_nms

    • 説明: clip_before_nms は、非最大抑制の前にクリップ・バウンディング・ボックスを実行するかどうかを指定するフラグです。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値: true

    • 必須: いいえ

  • clip_after_nms

    • 説明: clip_after_nms は、非最大抑制後にクリップ・バウンディング・ボックスを実行するかどうかを指定するフラグです。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • normalize

    • 説明: normalize は、出力ボックスを [0,1] 間隔に正規化するかどうかを指定するフラグです。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • box_size_scale

    • 説明: box_size_scale は、デコード前にボックスサイズの bbox_deltas に適用されるスケール係数を指定します。

    • 値の範囲: 正の浮動小数点数

    • タイプ: float

    • デフォルト値: 1.0

    • 必須: いいえ

  • box_coordinate_scale

    • 説明: box_coordinate_scale は、デコード前にボックス座標の bbox_deltas に適用されるスケール係数を指定します。

    • 値の範囲: 正の浮動小数点数

    • タイプ: float

    • デフォルト値: 1.0

    • 必須: いいえ

  • framework

    • 説明: framework は、ボックス座標の計算方法を指定します。

    • 値の範囲:

      • “” (空の文字列)) - Caffe のようにボックス座標を計算します

      • tensorflow - TensorFlow* 物体検出 API モデルと同様にボックス座標を計算します

    • タイプ: 文字列

    • デフォルト値: “” (空の文字列)

    • 必須: いいえ

入力:

  • 1: タイプ T およびクラス予測スコアを持つ形状 [batch_size, 2*K, H, W] の 4D テンソル。必須。

  • 2: 各境界ボックスのデルタを含む、タイプ T および形状 [batch_size, 4*K, H, W] の 4D テンソル。必須。

  • 3: 3 つまたは 4 つの要素を持つ T タイプの 1D テンソル: [image_height, image_width, scale_height_and_width] または [image_height, image_width, scale_height, scale_width]必須。

出力:

  • 1: タイプ T および形状 [batch_size * post_nms_topn, 5] のテンソル。

タイプ:

  • T: 浮動小数点タイプ。

例:

<layer ... type="Proposal" ... >
    <data base_size="16" feat_stride="16" min_size="16" nms_thresh="0.6" post_nms_topn="200" pre_nms_topn="6000"
    ratio="2.67" scale="4.0,6.0,9.0,16.0,24.0,32.0"/>
    <input> ... </input>
    <output> ... </output>
</layer>