深さ学習対象検出(2)-位置決め概念のまとめ


オブジェクト検出シリーズ


0️⃣ 深さ学習対象検出(1)-概念と用語のまとめ
1️⃣ 深さ学習対象検出(2)-位置決め概念のまとめ
2️⃣ 深度学習オブジェクト検出(3)-スライドウィンドウ、Convolution
3️⃣ 深度学習対象検出(4)-Anchor Box、NMS
4️⃣ 深度学習オブジェクト検出(5)-アーキテクチャ-1次または2次検出器
今日のテーマを発表する前に、参考資料を添付してください.では今日も勉強を頑張ります.🐣!
  • 推奨コース:cs 231 nのLecture 11 | Detection and Segmentation2
  • スライド:Slideショートカット2
  • より前の位置:深さ学習対象検出の概念と用語の総括2
  • Object Localization


    オブジェクト検出を構成するには、オブジェクトのローカライズを理解する必要があります.

    このイメージから
  • Image classification
  • Classification with localization
  • Detection
  • という形式のものになります.
    画像を分類することは、画像を分類し、画像の中でcarというオブジェクトの位置を決定することは、画像を分類して位置決めすることであり、位置決めによって画像の中の複数のオブジェクトを識別することができ、1つのオブジェクトではない.

    Classification with localization


    検出を行うためには、分類と位置決めを同時に実行する必要があります.画像をinputとして入力する場合、以下の方法で同時に処理できます.

    複数層のConvNetに画像を入力する場合は、アプリケーションソフトmaxのOutput Vectorを使用してクラス別に画像を分類できます.
    Output Vectorの分類と位置に出力する場合は、Bounding Boxの座標を追加できます.

    画像ソース:ここ
    Boundig Boxは、上の図のようにオブジェクトの境界を表します.

    上図では、Bounding Boxの座標をbx、by、bh、bwと表す.
  • bx:bounding boxの中心点x座標
  • by:boundingboxの中心点y座標
  • bh:bounding box高さ
  • bw:bounding boxの幅
  • 上記の例
  • (bx、by、bh、bw)は(0.5、0.7、0.3、0.4)である.
  • ニューラルネットワークのトレーニングセットに既存のクラスとBounding Boxの4つの座標を追加してトレーニングを行うと,学習を監視することによって分類と位置決めを予測することができる.

    Target Label


    分類モデルを作成する際、ボリューム層で構成されたバックボーンネットワーク(Backbone Network)から画像の特性を抽出し、クラス間で分類するために完全に接続された層を追加します.
    分類問題を解く場合、最終結果ノードの数は、表示するクラスに依存します.
    位置決めを行うには、ボックスの位置を表すために、ボリューム層からなるホストネットワークの後に4つの出力ノードを追加する必要があります.

    画像ソース:ここです。
    ラベルは以下の通りです.
  • pc:object出現確率
  • c 1、c 2、c 3:第1、2、3類確率
  • p cが0の場合:背面が
  • 必要に応じて、c 1、c 2、c 3、およびp cを分離して、アクティブ化関数を適用し、lossを計算することができる.
    バウンディングボックス(Bbox)を定義する4つのノード
  • b_x: left top
  • b_y: right bottom
  • b h:Bbox高さ
  • b w:Bbox幅
  • しかし、b x、b y、b h、b wはいずれも入力画像幅w、高さhがそれぞれ標準化された相対座標とheight/weightで表される.
    分類モデルではなく出力を追加するローカライズモデルを構成します.
    import tensorflow as tf
    from tensorflow import keras
    
    output_num = 1+4+3
    # object_prob 1, bbox coord 4, class_prob 3
    
    imput_tensor = keras.layers.Input(shape=(224,224,3), name='image')
    base_model = keras.applications.resnet.ResNet50(
    	input_tensor=input_tensor,
        include_top=False,
        weights='imagenet',
        pooling=None,
        )
    x = base_model.output
    preds = keras.layers.Conv2D(output_num, 1,1)(x)
    localize_model=keras.Model(inputs=base_model.input, outputs=preds)
    
    localize_model.summary()
    上記で作成したモデルでは、上記のyをターゲットラベルとして提供します.

    Quiz



    画像ソース:ここ
    上記の入力画像では、オブジェクトを検出するためにターゲットlabel yを自分で作成できます.しかし、この場合、class labelは、個(dog)の単一オブジェクト検出であるため、考慮されない.「Ground Truth」の枠線である座標(位置)は、上図のようにx 1、y 1、x 2、y 2である.入力画像の幅(width)はw、高さ(height)はhである.

    [参考写真]
    ターゲットラベルy=[1]、x 1/w、y 1/h、(y 2-y 1)/h、(x 2-x 1)/w]