DetectionOutput

バージョン名: DetectionOutput-8

カテゴリー: 物体検出

簡単な説明: DetectionOutput は、非最大抑制を実行して、位置と信頼度の予測に関する情報を使用して検出出力を生成します。

詳細な説明: リファレンス。このレイヤーには 3 つの必須入力があります: ボックスロジットを使用したテンソル、信頼性予測を使用したテンソル、およびボックス座標を使用したテンソル (プロポーザル)。記事で説明されている追加の信頼度予測とボックス座標を備えた 2 つの追加入力を持つことができます。出力テンソルには、7 つの要素タプルで記述されたフィルター処理された検出に関する情報が含まれています: [batch_id, class_id, confidence, x_1, y_1, x_2, y_2]batch_id-1 の最初のタプルは、出力の終了を意味します。

特徴マップの各セルで、DetectionOutput は、セル内のデフォルトのボックス形状に対する相対的なオフセットと、それらの各ボックス内のクラス・インスタンスの存在を示すクラスごとのスコアを予測します。具体的には、DetectionOutput は、指定された位置にある k 個のボックスごとに、クラススコアと、元のデフォルトのボックス形状に対する 4 つのオフセットを計算します。これにより、特徴マップ内の各位置の周囲に合計 \((c + 4)k\) フィルターが適用され、m * n 特徴マップの \((c + 4)kmn\) の出力が得られます。

属性:

DetectionOutput_1 に存在する num_classes (クラス数属性) は削除されました。これは cls_pred_shape[-1] // num_prior_boxes として計算できます。ここで、cls_pred_shapenum_prior_boxes はクラス予測テンソル形状と事前ボックスの数です。

  • background_label_id

    • 説明: 背景ラベルID。バックグラウンド・クラスがない場合は、-1 に設定します。

    • 値の範囲: 整数値

    • タイプ: int

    • デフォルト値: 0

    • 必須: いいえ

  • top_k

    • 説明: NMS ステップ後にバッチごとに保持される結果の最大数。-1 は、すべての境界ボックスを維持することを意味します。

    • 値の範囲: 整数値

    • タイプ: int

    • デフォルト値: -1

    • 必須: いいえ

  • variance_encoded_in_target

    • 説明: variance_encoded_in_target は、ターゲットで分散がエンコードされているかどうかを示すフラグです。flag が false の場合、それに応じて予測オフセットを調整する必要があります。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • keep_top_k

    • 説明: NMS ステップ後に保持されるバッチあたりの境界ボックスの最大数。-1 は、NMS ステップの後にすべての境界ボックスを維持することを意味します。

    • 値の範囲: 整数値

    • タイプ: int[]

    • 必須: はい

  • code_type

    • 説明: 境界ボックスのコーディング方法の種類

    • 値の範囲: “caffe.PriorBoxParameter.CENTER_SIZE”、“caffe.PriorBoxParameter.CORNER”

    • タイプ: string

    • デフォルト値: “caffe.PriorBoxParameter.CORNER”

    • 必須: いいえ

  • share_location

    • 説明: share_location は、境界ボックスが異なるクラス間で共有されているかどうかを示すフラグです。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値: true

    • 必須: いいえ

  • nms_threshold

    • 説明: NMS ステージで使用されるしきい値

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

    • タイプ: float

    • 必須: はい

  • confidence_threshold

    • 説明: 信頼度がしきい値よりも大きい検出のみを考慮します。指定されていない場合は、すべてのボックスを検討します。

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

    • タイプ: float

    • デフォルト値: 0

    • 必須: いいえ

  • clip_after_nms

    • 説明: clip_after_nms フラグは、非最大抑制後にクリップ境界ボックスを実行するかどうかを示します。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • clip_before_nms

    • 説明: clip_before_nms は、非最大抑制の前にクリップ境界ボックスを実行するかどうかを示すフラグです。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • decrease_label_id

    • 説明: decrease_label_id は、NMS の実行方法を示すフラグです。

    • 値の範囲:

      • false - Caffe と同様に NMS を実行します。

      • true - Apache MxNet と同様に NMS を実行します。

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • normalized

    • 説明: normalized は、プロポーザル・ボックスを含む入力テンソルが正規化されているかどうかを示すフラグです。テンソルが正規化されていない場合は、input_heightinput_width 属性を使用してボックス座標を正規化します。

    • 値の範囲: true または false

    • タイプ: boolean

    • デフォルト値 : false

    • 必須: いいえ

  • input_height (input_width)

    • 説明: 入力画像の高さ (幅)。normalized が 1 の場合、これらの属性は使用されません。

    • 値の範囲: 正の整数

    • タイプ: int

    • デフォルト値: 1

    • 必須: いいえ

  • objectness_score

    • 説明: 信頼性予測を分類するためのしきい値。DetectionOutput レイヤーに 5 つの入力がある場合にのみ使用されます。

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

    • タイプ: float

    • デフォルト値: 0

    • 必須: いいえ

入力:

  • 1: 形状 [N, num_prior_boxes * num_loc_classes * 4] およびタイプ T のボックスロジットを含む 2D 入力テンソル。num_loc_classes は、share_location が 0 の場合は num_classes に等しく、それ以外の場合は 1 に等しくなります。必須。

  • 2: 形状 [N, num_prior_boxes * num_classes] およびタイプ T のクラス予測を含む 2D 入力テンソル。必須。

  • 3: 形状 [priors_batch_size, 1, num_prior_boxes * prior_box_size] または [priors_batch_size, 2, num_prior_boxes * prior_box_size] のプロポーザルを持つ 3D 入力テンソル。priors_batch_size は 1 または N のいずれかです。2 番目の次元のサイズは、variance_encoded_in_target に依存します。variance_encoded_in_target が 0 に等しい場合、2 番目の次元は 2 に等しく、分散値が各ボックス座標に提供されます。variance_encoded_in_target が 1 に等しい場合、2 番目の次元は 1 に等しく、このテンソルにはプロポーザル・ボックスのみが含まれます。prior_box_size は、normalized が 1 に設定されている場合は 4 に等しく、それ以外の場合は 5 に等しくなります。必須。

  • 4: 記事で説明されている追加のクラス予測情報を含む 2D 入力テンソル。形状は [N, num_prior_boxes * 2] に等しくなければなりません。オプション。

  • 5: 記事で説明されている追加のボックス予測情報を含む 2D 入力テンソル。形状は最初の入力テンソル形状と等しくなければなりません。オプション。

出力:

  • 1: タイプ T の 4D 出力テンソル。その形状は、設定されている keep_top_k または top_k によって異なります。keep_top_k[0] が 0 より大きい場合、形状は [1, 1, N * keep_top_k[0], 7] になります。keep_top_k[0] が -1 に設定され、top_k が 0 より大きい場合、形状は [1, 1, N * top_k * num_classes, 7] になります。それ以外の場合、出力形状は [1, 1, N * num_classes * num_prior_boxes, 7] と等しくなります。

タイプ:

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

例:

<layer ... type="DetectionOutput" version="opset8">
    <data background_label_id="1" code_type="caffe.PriorBoxParameter.CENTER_SIZE" confidence_threshold="0.019999999552965164" input_height="1" input_width="1" keep_top_k="200" nms_threshold="0.44999998807907104" normalized="true" share_location="true" top_k="200" variance_encoded_in_target="false" clip_after_nms="false" clip_before_nms="false" objectness_score="0" decrease_label_id="false"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>5376</dim>
        </port>
        <port id="1">
            <dim>1</dim>
            <dim>2688</dim>
        </port>
        <port id="2">
            <dim>1</dim>
            <dim>2</dim>
            <dim>5376</dim>
        </port>
    </input>
    <output>
        <port id="3" precision="FP32">
            <dim>1</dim>
            <dim>1</dim>
            <dim>200</dim>
            <dim>7</dim>
        </port>
    </output>
</layer>