Proposal¶
バージョン名: Proposal-4
カテゴリー: 物体検出
簡単な説明: Proposal 操作は境界ボックスをフィルター処理し、予測の信頼度が最も高い境界ボックスのみを出力します。
詳細説明:
Proposal には 3 つの入力があります: 特定の境界ボックスが背景または前景に対応するかどうかの確率を含む形状 [num_batches, 2*K, H, W]
の 4D テンソル、および形状 [num_batches, 4*K, H, W]
の 4D テンソル各境界ボックスのデルタ、および [image_height, image_width, scale_height_and_width]
または [image_height, image_width, scale_height, scale_width]
形式の入力イメージサイズを持つテンソル。K
はアンカーの数で、H, W
は特徴マップの高さと幅です。操作により 2 つのテンソルが生成されます: 提案されたボックスを含む形状 [batch_size * post_nms_topn, 5][batch_size * post_nms_topn, 5]
の最初の必須テンソルと、確率 (スコアと呼ばれることもあります) を含む形状 [batch_size * post_nms_topn]
の 2 番目のオプションのテンソルです。
Proposal レイヤーは入力テンソルを使用して次の処理を行います。
初期アンカーボックスを生成します。すべてのボックスの左上隅は (0, 0) にあります。ボックスの幅と高さは、scale と ratio 属性を使用して、base_size から計算されます。
-
最初の入力テンソルの各点について:
各ボックスに 4 つのデルタを含む 2 番目の入力テンソルに従って、アンカーボックスを画像に固定します: 中心の x と y、幅と高さ。
最初の入力テンソルのスコアを見つけます。
min_size 未満のサイズのボックスをフィルターで除外します。
すべてのプロポーザル (ボックス、スコア) を最高スコアから最低スコアまで並べ替えます。
上位の pre_nms_topn プロポーザルを採用します。
ボックスの交差を計算し、\(intersection/union > nms\_thresh\) を使用してすべてのボックスをフィルター処理します。
上位の post_nms_topn プロポーザルを採用します。
-
結果を返します。
上位のプロポーザル。出力テンソル全体を満たすのに十分なプロポーザルがない場合、有効なプロポーザルは単一の -1 で終了します。
オプションで、特別な値で終了しない各プロポーザルの確率を返します。
属性:
-
base_size
説明: base_size は、scale と ratio 属性が適用されるアンカーのサイズです。
値の範囲: 正の整数
タイプ:
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 は、デコード前にボックスサイズに適用されるスケール係数を指定します。
値の範囲: 正の浮動小数点数
タイプ:
float
デフォルト値: 1.0
必須: いいえ
-
box_coordinate_scale
説明: box_coordinate_scale は、デコード前にボックス座標に適用されるスケール係数を指定します。
値の範囲: 正の浮動小数点数
タイプ:
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]
のテンソル。2: タイプ T および形状
[batch_size * post_nms_topn]
のテンソル (確率付き)。
タイプ:
T: 浮動小数点タイプ。
例:
<layer ... type="Proposal" ... >
<data base_size="16" feat_stride="8" min_size="16" nms_thresh="1.0" normalize="0" post_nms_topn="1000" pre_nms_topn="1000" ratio="1" scale="1,2"/>
<input>
<port id="0">
<dim>7</dim>
<dim>4</dim>
<dim>28</dim>
<dim>28</dim>
</port>
<port id="1">
<dim>7</dim>
<dim>8</dim>
<dim>28</dim>
<dim>28</dim>
</port>
<port id="2">
<dim>3</dim>
</port>
</input>
<output>
<port id="3" precision="FP32">
<dim>7000</dim>
<dim>5</dim>
</port>
<port id="4" precision="FP32">
<dim>7000</dim>
</port>
</output>
</layer>