1. 程式人生 > >人體關鍵點評價指標---OKS計算

人體關鍵點評價指標---OKS計算

轉載自知乎

OKS, object keypoint similarity, 即關鍵點相似度. 在人體關鍵點評價任務中,對於網路得到的關鍵點好壞,並不是僅僅通過簡單的歐氏距離來計算的,而是有一定的尺度加入,來計算兩點之間的相似度. 公式:

O K S p =

i { d p 2
2
/ 2 S p 2 σ
i 2
} δ ( v p i = 1 )
i δ ( v p i = 1 )
OKS_{p} = \frac{\sum_{i}\{-d^{2}_{p^{2}}/2S^{2}_{p}\sigma^{2}_{i}\}\delta(v_{p^{i}}=1)}{\sum_{i}\delta(v_{p^{i}}=1)}

其中:

  • p p 表示在groundtruth中某個人的id
  • p i p^{i} 表示某個人的關鍵點id
  • v p i = 1 v_{p^{i}}=1 表示這個關鍵點的可見性為1(即在圖片上可見)
  • S p 2 S^{2}_{p} 表示這個人所佔的面積大小平方根, 根據groundtruth里人的box計算得到
  • σ i \sigma_{i} 表示第i個骨骼點的歸一化因子,這個因子是通過對已有的資料集中所有groundtruth計算的標準差而得到的,反映出當前骨骼點對與整體的影響程度。值越大,說明在整個資料集中對這個點的標註效果越差; 值越小,說明整個資料集中對這個點的標註效果越好

OKS是對兩個人的之間的關節點相似度計算,如果有多人的時候,假設一張要預測的圖片上有M個人,我預測出來了N個人,那麼M個人中的每個人都會和預測的N個人的關節點進行相似度計算,所以最後我們會得到一個M x N 的矩陣,對於其中的一個人來講,會選擇和他oks最大的那個作為預測的label來計算.

AP(Average Precision)

根據前面的OKS矩陣,已經知道了某一張影象的所有人(groundtruth中出現的)的OKS分數,現在測試集中有很多影象,每張影象又有一些人,此時該如何衡量整個演算法的好壞的。這個時候就用到了AP的概念,AP就是給定一個t,如果當前的OKS大於t,那就說明當前這個人的骨骼點成功檢測出來了,並且檢測對了,如果小於t,則說明檢測失敗或者誤檢漏檢等,因此對於所有的OKS,統計其中大於t的個數,並計算其佔所有OKS的比值。即假設OKS一共有100個,其中大於閾值t的共有30個,那麼AP值就是30/100=0.3.

mAP(mean Average Precision)

顧名思義,AP的均值,具體計算方法就是給定不同的閾值t,計算不同閾值情況下對應的AP,然後求個均值就ok了。