RegionYolo

バージョン名: RegionYolo-1

カテゴリー: 物体検出

簡単な説明: RegionYolo は、クラスごとに確率を使用して領域の座標を計算します。

詳細な説明: この操作は、YOLO9000: Better, Faster, Stronger の論文に直接マップされます。

属性:

  • anchors

    • 説明: anchors は、以前のボックスサイズをコード化するペア [width, height] の平坦化されたリストをコード化します。この属性は出力計算では使用されませんが、実際のボックス座標を復元する後処理に必要です。

    • 値の範囲: 任意の長さの正の浮動小数点数のリスト

    • タイプ: float[]

    • デフォルト値: なし

    • 必須: いいえ

  • axis

    • 説明: 出力で平坦化される入力テンソル data 形状の開始軸インデックス。平坦化された範囲の終端は、end_axis 属性で定義されます。

    • 値の範囲: -rank(data) .. rank(data)-1

    • タイプ: int

    • 必須: はい

  • coords

    • 説明: coords は各領域の座標の数です。

    • 値の範囲: 整数。

    • タイプ: int

    • 必須: はい

  • classes

    • 説明: classes は各領域のクラスの数です。

    • 値の範囲: 整数。

    • タイプ: int

    • 必須: はい

  • end_axis

    • 説明: 出力で平坦化される入力テンソル data 形状の終了軸インデックス。平坦化された範囲の始まりは、axis 属性で定義されます。

    • 値の範囲: -rank(data)..rank(data)-1

    • タイプ: int

    • 必須: はい

  • num

    • 説明: num は領域の数です。

    • 値の範囲: 整数。

    • タイプ: int

    • 必須: はい

  • do_softmax

    • 説明: do_softmax は推論方法を指定するフラグであり、領域数の決定方法に影響します。出力形状にも影響します。0 の場合、出力形状は 4D、それ以外の場合は 2D になります。

    • 値の範囲:

      • false - ソフトマックスを実行しません

      • true - ソフトマックスを実行します

    • タイプ: boolean

    • デフォルト値: true

    • 必須: いいえ

  • mask

    • 説明: mask は領域の数を指定します。do_softmax が 0 に等しい場合は、num の代わりにこの属性を使用します。

    • 値の範囲: 整数のリスト

    • タイプ: int[]

    • デフォルト値: []

    • 必須: いいえ

入力:

  • 1: data - タイプ T および形状 [N, C, H, W] の 4D テンソル。必須。

出力:

  • 1: 検出された領域をコード化するタイプ T およびランク 4 以下のテンソル。出力をボックスとしてデコードするには、YOLO9000: Better, Faster, Stronger の論文を参照してください。anchors 実際のボックス座標をデコードするのに使用する必要があります。do_softmax0 に設定されている場合、出力形状は [N, (classes + coords + 1) * len(mask), H, W] になります。do_softmax1 に設定されている場合、出力形状は部分的に平坦化され、次のように定義されます。

flat_dim = data.shape[axis] * data.shape[axis+1] * ... * data.shape[end_axis] output.shape = [data.shape[0], ..., data.shape[axis-1], flat_dim, data.shape[end_axis + 1], ...]

タイプ:

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

例:

<!-- YOLO V3 example -->
<layer type="RegionYolo" ... >
    <data anchors="10,14,23,27,37,58,81,82,135,169,344,319" axis="1" classes="80" coords="4" do_softmax="0" end_axis="3" mask="0,1,2" num="6"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>255</dim>
            <dim>26</dim>
            <dim>26</dim>
        </port>
    </input>
    <output>
        <port id="0">
            <dim>1</dim>
            <dim>255</dim>
            <dim>26</dim>
            <dim>26</dim>
        </port>
    </output>
</layer>

<!-- YOLO V2 Example -->
<layer type="RegionYolo" ... >
    <data anchors="1.08,1.19,3.42,4.41,6.63,11.38,9.42,5.11,16.62,10.52" axis="1" classes="20" coords="4" do_softmax="1" end_axis="3" num="5"/>
    <input>
        <port id="0">
            <dim>1</dim>
            <dim>125</dim>
            <dim>13</dim>
            <dim>13</dim>
        </port>
    </input>
    <output>
        <port id="0">
            <dim>1</dim>
            <dim>21125</dim>
        </port>
    </output>
</layer>