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_shape
と num_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_height と input_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>