11

画像検出アルゴリズムの結果を収集しています。だから、基本的には、320 x 480のサイズの画像から、64x128のスライディングウインドウを実行し、さらにいくつかの定義済みのスケールの下でスライディングウインドウを実行するということです。スライディングウィンドウのオブジェクト検出で真のネガを分類するにはどうすればいいですか?

私がいることを理解:アルゴリズムが与えられるとき(注釈付きのバウンディングボックス)地上真実で

  • 偽陽性の=を

    • 真陽性=私の検出ウィンドウの重なり(定義された交差点サイズ/重心内に)私は正直な真実の外にある正の窓。
    • False Negatives =正のウィンドウを表示できなかったとき、地面の真理注釈でオブジェクトがあると表示されているとき。

    しかし、何について真のネガティブ?これらの本当のネガティブは、私の分類器が私にマイナスの結果を与えるすべてのウィンドウですか?私は小さなウィンドウ(64x128)を一度に4ピクセルずらしているので、それは奇妙に聞こえ、検出には8種類のスケールが使われています。私がそれをしなければならなかったら、私はイメージごとに本当のネガをたくさん持っていました。

    また、純粋なネガティブイメージ(オブジェクト/人間が一切ありません)を用意しています。ここではスライドしていますが、これらのイメージにそれぞれ1つ以上の肯定的な検出がある場合は、Falseネガティブ、またはその逆?

    ここで私は常に次のように4つの用語を見てきた例の画像(グラウンドトゥルースとして緑rects付き)

    Example image, not real result

  • +3

    オブジェクト検出は用語TP、FPとミス率を使用しています。ネガはあまり使われていません。 – William

    答えて

    1

    です:

    • 偽陰性は、結果は正の値であったはずですが、負の値です。
    • 偽陽性。結果は負であったはずですが、正です。
    • 真陽性;結果は正であり、正であったはずです。
    • 真の否定;結果は負であって負であったはずです。

    私が正しく理解している場合は、画像にオブジェクトがあるかどうかを検出しようとしています。したがって、偽陰性はオブジェクトがあることを意味します(結果は正でなければなりません)が、アルゴリズムはそれを検出しなかったため、負の値を返します。真の否定は、単にチェックされた領域がではないことを正しく示すアルゴリズムであり、オブジェクトを保持しています。

    負の値は無視することもできますが、これを使用してアルゴリズムをさらに訓練することができます(たとえば、認識されないものをすべてfalseに設定する代わりに、両方を探すアルゴリズムを使用します)。

    +0

    このフレームでFP = 2、TP = 3、FN = 1、TN = 0を修正してください。その計算方法は? –

    +0

    私は、用語に数字を割り当てることが何を意味するのかよく分かりません。 – Nallath

    +0

    私は割り当てられていないと私は混乱させていますが、FPRやTPRを計算してカーブ曲線をプロットするにはどうしたらいいですか?私の計算が正しいかどうかはわかりません。方法を知っていれば分かち合ってください。 –

    0

    hereという素晴らしい説明があります。 wikiで説明されているF1スコアとhereは成功の測定に役立ちます。

    enter image description here

    私はF1スコアを計算する関数を記述しようとする試みがあります

    /// <param name="realClasses">Class names that exists on the image. A class name may exists more than once.</param> 
        /// <param name="foundClasses">Predicted class names. A class name may exists more than once.</param> 
        private static void findPosNeg(List<string> realClasses, List<string> foundClasses, out int truePositive, out int falsePositive, out int falseNegative) 
        {    
         Dictionary<string, int> dicReal = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase); 
         Dictionary<string, int> dicFound = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase); 
         #region fill dictionaries 
         foreach (string className in realClasses) 
         { 
          if (!dicReal.ContainsKey(className)) 
           dicReal[className] = 1; 
          else 
           dicReal[className]++; 
         } 
         foreach (string className in foundClasses) 
         { 
          if (!dicFound.ContainsKey(className)) 
           dicFound[className] = 1; 
          else 
           dicFound[className]++; 
         } 
         #endregion 
    
         truePositive = 0; 
         falsePositive = 0; 
         falseNegative = 0; 
         foreach (string className in dicFound.Keys) 
         { 
          if (!dicReal.ContainsKey(className)) 
           falsePositive += dicFound[className]; 
          else 
          { 
           int found = dicFound[className]; 
           int real = dicReal[className]; 
           truePositive += Math.Min(found, real); 
           if (real > found) 
            falseNegative += real - found; 
           else if (found > real) 
            falsePositive += found - real; 
          } 
         } 
         foreach (string className in dicReal.Keys) 
          if (!dicFound.ContainsKey(className)) 
           falseNegative += dicReal[className]; 
    
        } 
        /// <summary> 
        /// Calculates F1Score ref:https://en.wikipedia.org/wiki/Precision_and_recall 
        /// </summary> 
        private static double calc_F1Score(int truePositive, int falsePositive, int falseNegative, out double precision, out double recall) 
        { 
         precision = (double)truePositive/((double)truePositive + (double)falsePositive); 
         recall = (double)truePositive/((double)truePositive + (double)falseNegative); 
         double div = (precision + recall); 
         return (div != 0d) ? 2d * precision * recall/div : 0d; 
        } 
    
    関連する問題