OKS指標詳解

參考網站

http://cocodataset.org/#keypoints-eval

https://blog.csdn.net/u014734886/article/details/78837961


Keypoint Evaluation

本篇描述了COCO數據集的 Keypoint估計 的度量方法,提供的估計代碼可以用於獲得公共驗證集的估計結果,但是測試集的真實標註是隱藏的,要想獲得測試集上的評估則需要上傳代碼至服務器


綜述

COCO關節點檢測需要同時檢測目標並定位 Keypoint 的座標,同時進行檢測和關節點估計的任務相對來說較爲新穎,我們受目標檢測度量方法的啓發,採用了了一種新奇的度量方法。簡單地說,就是將這項任務看作是 Keypoint detection ,將預測算法看作是 Keypoint detector,在此之前,建議先會看一下有關 Object detection 的度量方法

http://cocodataset.org/#detection-eval

Keypoint detection 度量方法的核心思想就是模仿 Object detection 的度量方法 : average precision (AP) and average recall (AR)和他們的變種。所有這些度量方法的核心都是去檢測真實目標和預測目標之間的相似度。在 Object detection 中,IoU 是作爲一種相似度度量,它定義了在真實目標和預測值目標之間的匹配程度並允許計算 precision-recall 曲線。爲了將 AP/AR 應用到關節點檢測,我們只需要定義一個相似的度量方法,於是我們就定義了一個類似於 IoUOKS(object keypoint similarity) 方法


AP、AR、mAP、mAR、Precision-Recall曲線

  • 爲什麼同時需要準確率和召回率
    例如,有一個池塘,裏面共有1000條魚,含100條鯽魚。機器學習分類系統將這1000條魚全部分類爲“不是鯽魚”,那麼準確率也有90%(顯然這樣的分類系統是失敗的),然而查全率爲0%,因爲沒有鯽魚樣本被分對。這個例子顯示出一個成功的分類系統必須同時考慮Precision和Recall,尤其是面對一個不平衡分類問題。

分類目的: 取出測試集中所有飛機的圖片,而不是大雁的圖片。
tp(true positives):飛機的圖片被正確識別爲飛機(好瓜)
tn(true nagetives):大雁的圖片沒有被識別,正確認爲它們是大雁(壞瓜)
fp(false positives):大雁的圖片被錯誤的預測爲飛機(壞瓜被當做好瓜,實際是壞瓜)
fn(false nagetives):飛機的圖片沒有被識別出來,被錯誤的認爲是大雁(好瓜被當做壞瓜,實際是好瓜)
true:好瓜是好瓜,壞瓜是壞瓜(預測對了)
false:好瓜當做壞瓜,壞瓜當做好瓜(預測錯了)
positives:被預測爲好瓜(好瓜+壞瓜當做好瓜)
nagetives:被預測爲壞瓜(壞瓜+好瓜當做壞瓜)

  • AP(average precision) : 挑出來的西瓜中有多少是好瓜
    Precision = \frac{tp}{tp + fp}
  • mAP(mean average precision) : 針對於所有類別的AP
  • AR(average recall) : 所有好瓜中有多少比例被挑出來
    Recall = \frac{tp}{tp + fn}
  • mAR : mean average recall(針對於所有類別)

    image.png


Object Keypoint Similarity(OKS)

  • 真實關節點的格式 : [x_1, y_1, v_1,...,x_k, y_k, v_k]
    其中x,yKeypoint的座標,v爲可見標誌
    v = 0 : 未標註點
    v = 1 : 標註了但是圖像中不可見(例如遮擋)
    v = 2 : 標註了並圖像可見
    實際預測時,不要求預測每個關節點的可見性

Object Keypoint Similarity (OKS)

\sf OKS = \sum_i [exp(-d_i^2 / 2s^2k_i^2)\delta (v_i>0)] \ / \ \sum_i[\delta (v_i > 0)]
\sf d_i是標註和預測關節點之間的歐氏距離
\sf sk_i爲標準差
每個關節點的相似度都會在\sf [0,1]之間,完美的預測將會得到\sf OKS = 1,預測值與真實值差距太大將會得到\sf OKS\text{~}0


Tuning OKS

我們通過調整\sf k_i使得\sf OKS更符合直覺意義並更容易描述相似度量,首先,使用5000多餘的標註圖片組成驗證集,對於隸屬於\sf i類型的每個關節點都定義了一個與目標尺度\sf s相關的標準差。計算標準差\sf \sigma_i^2 = E[d_i^2/s^2],不同的關節點有着相差極大的\sf \sigma_i : 位於身體上的關節點(shoulders, knees, hips, etc.)的\sf \sigma要大於位於頭部上的關節點(eyes, noses, ears)
設置\sf k_i = 2\sigma_i,經如此設置,當標準差爲原來的(\sf d_i / s)一、二、三倍時,代入公式可以得到\sf exp(-d_i^2 / 2s^2k_i^2)的值爲\sf e^{-1/8} = 0.88, e^{-4/8} = 0.61, e^{-9/8} = 0.32,剛好爲正態分佈。根據68-95-99.7法則,設置\sf k_i = 2\sigma_i意味着68%, 95%, 99.7%標註的關節點將會有0.88, 0.61, 0.32以上的相似度(實際測得爲75%, 95%, 99.7%)


Metrics

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章