GenerateProposals

バージョン名: GenerateProposals-9

カテゴリー: 物体検出

簡単な説明: GenerateProposals 操作は、バッチ内の各画像の入力データに基づいて ROI とそのスコアを提案します。

詳細な説明: この操作では、各イメージに対して次の手順が実行されます。

  1. 予測されたバウンディング・ボックスのデルタとスコアを転置および再形成して、アンカーと同じ次元の順序にします。

  2. アンカーとデルタをプロポーザル・ボックスに変換し、プロポーザル・ボックスを画像にクリップします。normalized 属性は、プロポーザル Bbox が正規化されているかどうかを示します。

  3. すべての (proposal, score) のペアをスコアの高い順から低い順に並べ替えます。スコアが等しいペアの順序は定義されていません。

  4. プロポーザルの合計数が pre_nms_count 未満の場合は、上位の pre_nms_count プロポーザルから、すべてのプロポーザルを取得します。

  5. 高さまたは幅 < min_size の予測ボックスを削除します。

  6. adaptive_nms_threshold を使用して非最大抑制を適用します。adaptive_nms_threshold の初期値は nms_threshold です。nms_eta < 1 および adaptive_threshold > 0.5 の場合、adaptive_threshold *= nms_eta を更新します。

  7. nms 操作後の上位のプロポーザルを取得して返します。各イメージで返されるプロポーザルの数は動的ですであり、出力ポート 3 rpnroisnum によって指定されます。また、各画像内のプロポーザルの最大数は属性 post_nms_count で指定されます。

バッチ全体のすべてのプロポーザルは画像ごとに連結されており、出力を通じて区別できます。

属性:

  • min_size
    • 説明: min_size 属性は、ボックスの最小の幅と高さを指定します。

    • 値の範囲: 負でない浮動小数点数

    • タイプ: float

    • 必須: はい

  • nms_threshold
    • 説明: nms_threshold 属性は、NMS ステージで使用されるしきい値を指定します。

    • 値の範囲: 負でない浮動小数点数

    • タイプ: float

    • 必須: はい

  • pre_nms_count
    • 説明: pre_nms_count 属性は、NMS 前の上位 n プロポーザルの数を指定します。

    • 値の範囲: 負でない整数

    • タイプ: int

    • 必須: はい

  • post_nms_count
    • 説明: post_nms_count 属性は、NMS 後の上位 n プロポーザルの数を指定します。

    • 値の範囲: 負でない整数

    • タイプ: int

    • 必須: はい

  • normalized
    • 説明: normalized は、プロポーザル Bbox が正規化されているかどうかを示すフラグです。

    • 値の範囲: true または false * true - bbox 座標は正規化されます。 * false - bbox 座標は正規化されません。

    • タイプ: ブール値

    • デフォルト値: true

    • 必須: いいえ

  • nms_eta
    • 説明: 適応型 NMS の eta パラメーター。

    • 値の範囲: 閉範囲 [0, 1.0] の浮動小数点数。

    • タイプ: float

    • デフォルト値: 1.0

    • 必須: いいえ

  • roi_num_type
    • 説明: 出力 3 rpnroisnum の要素のタイプ。

    • 値の範囲: i32、i64

    • タイプ: 文字列

    • デフォルト値: i64

    • 必須: いいえ

入力:

  • 1: im_info - 入力イメージ情報を提供する、タイプ T および形状 [num_batches, 3] または [num_batches, 4] のテンソル。画像情報は、[image_height, image_width, scale_height_and_width] または [image_height, image_width, scale_height, scale_width] としてレイアウトされます。必須。

  • 2: anchors - アンカーを提供する形状 [height, width, number_of_anchors, 4] を持つタイプ T のテンソル。 各アンカーは [xmin, ymin, xmax, ymax] としてレイアウトされます。必須。

  • 3: boxesdeltas - アンカーのデルタを提供する形状 [num_batches, number_of_anchors * 4, height, width] を持つタイプ T のテンソル。デルタは、レイアウト [dx, dy, log(dw), log(dh)] の 4 つの要素タプルで構成されます。必須。

  • 4: scores - プロポーザル・スコアを提供する形状 [num_batches, number_of_anchors, height, width] のタイプ T のテンソル。必須。

入力 anchorsboxesdeltas および scores からの heightwidth は、特徴マップの高さと幅です。

出力:

  • 1: rpnrois - プロポーザル ROI を提供する形状 [num_rois, 4] のタイプ T のテンソル。 プロポーザルは [xmin, ymin, xmax, ymax] としてレイアウトされます。num_rois は、1 つのバッチ内のすべての画像の合計プロポーザル数です。num_rois は動的な次元です。

  • 2: rpnscores - プロポーザル ROI スコアを提供する形状 [num_rois] のタイプ T のテンソル。

  • 3: rpnroisnum - 各画像内でプロポーザル ROI の数を提供する形状 [num_batches] を持つタイプ roi_num_type のテンソル。

タイプ:

  • T: サポートされている浮動小数点タイプ。

例:

<layer ... type="GenerateProposals" version="opset9">
    <data min_size="0.0" nms_threshold="0.699999988079071" post_nms_count="1000" pre_nms_count="1000" roi_num_type="i32"/>
    <input>
        <port id="0">
            <dim>8</dim>
            <dim>3</dim>
        </port>
        <port id="1">
            <dim>50</dim>
            <dim>84</dim>
            <dim>3</dim>
            <dim>4</dim>
        </port>
        <port id="2">
            <dim>8</dim>
            <dim>12</dim>
            <dim>50</dim>
            <dim>84</dim>
        </port>
        <port id="3">
            <dim>8</dim>
            <dim>3</dim>
            <dim>50</dim>
            <dim>84</dim>
        </port>
    </input>
    <output>
        <port id="4" precision="FP32">
            <dim>-1</dim>
            <dim>4</dim>
        </port>
        <port id="5" precision="FP32">
            <dim>-1</dim>
        </port>
        <port id="6" precision="I32">
            <dim>8</dim>
        </port>
    </output>
</layer>