Articles

#021CNN Object Localization

Object Localization

オブジェクト検出は、コンピュータビジョンの分野の一つであり、爆発しており、数年前よりもはるかに優れています。 オブジェクト検出を構築するために、まずオブジェクトの局在化について学びます。 それが何を意味するのかを定義することから始めましょう。

すでに、画像分類タスクは写真を見て、車があるかどうかを言うことであると述べています。 ローカリゼーションによる分類とは、オブジェクトに車のラベルを付けるだけでなく、境界ボックスを配置したり、画像内の車の位置の周りに長方形を描 ローカリゼーション問題を伴う分類という用語では、ローカリゼーションとは、写真のどこに私たちが検出した車があるかを把握することを指します。

画像内に複数のオブジェクトが存在する可能性があり、それらをすべて検出してローカライズする必要がある検出問題について学びます。 自動運転アプリケーションでこれを行う場合、他の車だけでなく、他の歩行者やオートバイ、さらには他の物体を検出する必要があるかもしれません。 分類と局在化問題を伴う分類は、通常、私たちが認識または認識して局在化しようとしている画像の中央に一つの大きなオブジェクトを持っています。 対照的に、検出の問題では、複数のオブジェクトが存在する可能性があり、実際には、単一の画像内の異なるカテゴリの複数のオブジェクトでさえも 画像分類について学んだアイデアは、局在化による分類に役立ち、局在化のために学んだアイデアは検出に役立つことが判明します。

局在化と検出とは何ですか?

定位による画像分類、物体の定位

画像分類(左)、定位による分類(中央)、複数の物体の検出(右)

まず、定位による分類について話しましょう。 私たちは、複数のレイヤーを持つ\(convnet\)に画像を入力する可能性のある画像分類問題に既に精通しており、これにより、予測されたクラスを出力する\(softmax\)単位に供給される特徴量のベクトルが得られます。

Softmax出力を持つたたみ込みニューラルネットワーク

a\(convnet\)with a\(softmax\)出力

自己駆動車を構築している場合、オブジェクトカテゴリは歩行者、車、オートバイ、背景である可能性があります(これは上記のどれも意味しません)。 したがって、歩行者、車、オートバイがない場合は、出力の背景がある可能性があります。 これらは私たちの4つのクラスなので、\(4\)可能な出力を持つ\(softmax\)が必要です。

画像でも車をローカライズしたい場合はどうですか? これを行うには、境界ボックスを出力するいくつかの出力ユニットを持つようにニューラルネットワークを変更することができます。 特に、ニューラルネットワークの出力\(4\)をさらに多くの数にすることができ、それらの数は\(b_x\)、\(b_y\)、\(b_h\)、\(b_w\)になります。 これらの\(4\)の数値は、検出されたオブジェクトの境界ボックスをパラメータ化します。

境界ボックスの位置を出力するCNN

境界ボックスの位置を出力する畳み込みニューラルネットワーク

局在化による分類

ここでは、画像の左上点が\((0,0)\)、右下が\((1,1)\)という表記を使用しています。

carの境界ボックス,,object localization

境界ボックスとその座標

境界ボックスの指定赤い四角形は中点を指定する必要があるので、ポイント\(b_x\),\(b_y\)、\(b_h\)、\(b_w\)、\(b_w\)、\(b_h\)、\(b_w\)である。 ここで、学習セットにニューラルネットワークがここで予測しようとしているオブジェクトクラスラベルだけでなく、境界ボックスを与える\(4\)追加の数値も含まれている場合、教師あり学習を使用して、クラスラベルだけでなく、検出したオブジェクトの境界ボックスがどこにあるかを示す\(4\)パラメータも出力することができます。 この例では、\(b_x\)は約\(0.5\)である可能性があります。この赤い正方形の高さは画像全体の高さの約\(30\)%であるため、\(b_h\)は約\(0.3\)であり、赤いボックスの幅は画像全体の幅の約\(0.4\)であるため、\(b_w\)は約\(0.4\)である可能性があります。

ターゲットラベルの定義\(y\)

教師あり学習タスクとしてターゲットラベル\(Y\)をどのように定義するかという点で、これをもう少し形式化してみましょう。 ターゲットラベル\(Y\)を定義しましょう。 これは、最初のコンポーネント\(p_c\)がオブジェクトがあることを示すベクトルになります。 オブジェクトが歩行者、車、またはオートバイの場合、\(p_c\)は1に等しく、それがバックグラウンドクラスの場合(検出されたオブジェクトのどれも \(P_c\)は、オブジェクトが存在する確率、検出しようとしているクラスの1つが存在する確率、バックグラウンドクラス以外の確率を表していると思

私たちのベクトル\(y\)は次のようになります:P Y=\開始{bmatrix}P_{C}\B_{X}\B_{Y}\B_{H}\B_{W}\C_{1}\C_{2}\C_{3}\端{bmatrix}object

次に、オブジェクトがある場合、我々は出力したい\(B_x\)、\(B_y\)、\(b_Y\)、\(B_Y\)、\(B_Y\)を出力しますB_H\)と\(B_W\)は、検出したオブジェクトの境界ボックスです。 そして最後に、オブジェクトがある場合、\(p_c=1\)の場合、\(c1\)、\(C2\)、および\(C3\)を出力します。\(class1\)、\(class2\)、または\(class3\)、つまり歩行者、車、またはオートバイです。 この分類では,画像には一つの物体しかなく,これらの物体のほとんどが局在化問題を持つ画像に現れると仮定した。 いくつかの例を見てみましょう。

\(x\)がトレーニングセット画像である場合、\(y\)はオブジェクトがあるため、最初のコンポーネント\(p_c=1\)を持ち、\(b_x\)、\(b_y\)、\(b_h\)、\(b_w\)は境界ボックスを指定します。 だから、私たちのラベルトレーニングセットは、我々はラベルに境界ボックスが必要になります。

そして最後にこれは車なので、それは\(クラス2\)です。 \(C_1=0\)は歩行者ではないので、\(C_2=1\)は車なので、\(C_3=0\)はバイクではないので、\(C_3=0\)は自転車なので、\(C_4=0\)は自転車なので、\(C_5=0\)は車なので、\(C_6= \(C_1,C_2,C_3\)の中で、最大でも1つは\(1\)に等しくなければなりません。$ $Y=\begin{bmatrix}1\b_{x}\b_{y}\b_{h}\b_{w}beginとすると、y y=\begin{bmatrix}1\b_{x}\b_{y}\b_{h}\b_{w}beginとなります。}\\0\\1\\0 \end{bmatrix}image

画像にオブジェクトがない場合はどうなりますか? この場合、\(p_c=0\)このベクトルの残りの要素は、この画像にオブジェクトがない場合、ニューラルネットワーク出力の境界ボックスと3つのオブジェクト\(c_1,C_2,C_3\)のどちらを気にしないので、任意の数にすることができます。

y y=\開始{bmatrix}0\\?\\?\\?\\?\\?\\?\\? \end{bmatrix}car

車の画像(左)-自然の画像(右)

トレーニングセット内の画像の例

ラベル付きトレーニング例のセットを考えると、これは我々がそれを構築する方法です:\(x\)入力画像だけでなく、\(y\)クラスラベルオブジェクトがある画像とオブジェクトがない画像の両方で、これらのセットは、私たちのトレーニングセットを定義します。

損失関数

最後に、ニューラルネットワークを訓練するために使用する損失関数について説明しましょう。 地上の真理ラベルは\(y\)であり、ニューラルネットワークは\(\hat{y}\)をどのような損失にするべきかを出力します。$ $L=\left(\hat{y}_{1}-y_{1}\right)l{2}+\left(\hat{y}_{2}-y_{2}\right).{2}+…+\left(\hat{y}_{8}-y_{8}\right)l{2}、y_{1}、y_{2}\right{1}=1 $$

$$ L L=\左(\帽子{y}、y\右)=\左(\帽子{y}_{1}-y_{1}\右){{2}、y_{1}={1}=0 $$

ここで\(y\)は\(8\)の成分(損失関数の最初の行)を持っているので、要素の差の二乗の和からなり、\(y_1=1\)の場合は損失です。\(y_1=1\)の場合、\(y_1=1\)の場合、\(y_1=1\)の場合、\(y_1=1\)の場合、\(y_1=1\)の これは、\(y_1\)=\(p_c\)のようなオブジェクトがある場合です。 したがって、画像にオブジェクトがある場合、損失はすべての異なる要素の二乗和になります。

もう1つのケースはif(y_1=0.この場合、損失は\(\hat{y_1}\)から\(y_1\)の2乗を差し引いたものになる可能性があります。 私たちが気にするのは、その場合、ニューラルネットワークがどれほど正確に\(p_c\)を出力しているかということだけです。

ちょうど要約…

\(y_1=1\)の場合、二乗誤差を使用して、8つの成分すべての実際の出力よりも予測子からの二乗偏差を罰することができますが、\(y_1=0\)の場合、残りの7つの値は気にしません。 私たちが気にしているのは、ニューラルネットワークが\(p_c\)に等しい\(y_1\)をどれだけ正確に推定しているかということです。 ちょうどすべての詳細を知りたいあなたのそれらのためのサイドコメントとして。 実際には、おそらく\(c1\enspace,C2\enspace,C3\enspace\)の尤度損失を\(softmax\)出力に使用することができますが、loosを計算するときに、二乗誤差は正常に機能します。\(c1\enspace,C2\enspace,C3\enspace\)の場合、\(c1\enspace,c2\enspace,c3\enspace\)の場合、\(c1\enspace,c2\enspace,c3\enspace\)の場合、\(

コメントを残す

メールアドレスが公開されることはありません。