POST TIME:2021-07-11 22:17
本頁介紹了COCO使用的關(guān)鍵點評估指標(biāo)。此處提供的評估代碼可用于在公開可用的COCO驗證集上獲得結(jié)果。它計算下面描述的多個指標(biāo)。為了在COCO測試集上獲得結(jié)果,其中隱藏了實際真值注釋,必須將生成的結(jié)果上傳到評估服務(wù)器。下面描述的評估代碼用于評估測試集的結(jié)果。
COCO關(guān)鍵點任務(wù)需要同時檢測對象并將其關(guān)鍵點定位(對象位置不在測試時間給出)。由于同時檢測和關(guān)鍵點估計的任務(wù)是相對較新的,我們選擇采用受物體檢測度量啟發(fā)的新穎度量。為了簡單起見,我們將這個任務(wù)稱為關(guān)鍵點檢測,將預(yù)測算法稱為關(guān)鍵點檢測器。我們建議在繼續(xù)之前查看對象檢測的評估指標(biāo)。
評估關(guān)鍵點檢測的核心思想是模擬用于目標(biāo)檢測的評估指標(biāo),即平均精確度(AP,average precision)和平均召回率(AR,average recall)及其變體。這些度量的核心是實際真實對象和預(yù)測對象之間的相似性度量。在對象檢測的情況下,IoU(intersection-over-union,叫做交并比)作為這種相似性度量(對于框和片段)。IoU隱含定義了實際真實對象與預(yù)測對象之間的匹配,并允許計算精度召回曲線。為了采用AP / AR進行關(guān)鍵點檢測,我們只需要定義一個類似的相似性度量。我們通過定義與IoU具有相同作用的對象關(guān)鍵點相似度(OKS,object keypoint similarity)來實現(xiàn)這一點。
對于每個對象,實際真值關(guān)鍵點具有形式[x1,y1,v1,...,xk,yk,vk],其中x,y是關(guān)鍵點位置,v是定義為的可見性標(biāo)志。v = 0表示未標(biāo)記,v = 1表示標(biāo)記但不可見,v = 2表示標(biāo)記且可見。每個地面真值對象也有一個比例尺s,我們將其定義為物體分段區(qū)域的平方根(Each ground truth object also has a scale s which we define as the square root of the object segment area)。有關(guān)實際真值格式的詳細信息,請參閱下載頁面。
對于每個對象,關(guān)鍵點檢測器都必須輸出關(guān)鍵點位置和對象級別的置信度(object-level confidence)。對象的預(yù)測關(guān)鍵點應(yīng)該具有與實際真值相同的形式:[x1,y1,v1,...,xk,yk,vk]。然而,在評估過程中,檢測器的預(yù)測vi并不是目前使用的,即關(guān)鍵點檢測器不需要預(yù)測每個關(guān)鍵點的可見度或置信度(visibilities or confidences)。
我們將對象關(guān)鍵點相似性(OKS)定義為:
OKS = Σi[exp(-di2/2s2κi2)δ(vi>0)] / Σi[δ(vi>0)]
di是每個關(guān)鍵點相應(yīng)的實際真值和檢測到的關(guān)鍵點之間的歐幾里德距離,vi是實際真值的可見性標(biāo)記(檢測器的預(yù)測vi不被使用)。為了計算OKS,我們通過一個非標(biāo)準(zhǔn)化的高斯將標(biāo)準(zhǔn)差傳遞給標(biāo)準(zhǔn)偏差sκi,其中s是對象尺度,κi是一個控制衰減的按鍵控制常數(shù)。對于每個關(guān)鍵點,這產(chǎn)生范圍在0和1之間的關(guān)鍵點相似性。這些相似性在所有標(biāo)記的關(guān)鍵點(vi> 0的關(guān)鍵點)上被平均。 未標(biāo)記的預(yù)測關(guān)鍵點(vi = 0)不影響OKS。完美的預(yù)測將有OKS = 1,并且所有關(guān)鍵點的偏離超過幾個標(biāo)準(zhǔn)差sκi的預(yù)測都會有OKS?0。OKS類似于IoU??紤]到OKS,我們可以計算AP和AR,就像IoU允許我們計算盒/段(box/segment)檢測的這些度量一樣。
我們調(diào)整κi使得OKS是一個感知上有意義且易于解釋的相似性度量。首先,在val中使用5000個冗余注釋的圖像,對于每個關(guān)鍵點類型i,我們測量關(guān)于對象尺度s的每個關(guān)鍵點標(biāo)準(zhǔn)偏差σi。那就是我們計算σi2=E[di2/s2]。σi對于不同的關(guān)鍵點有很大的不同:人的關(guān)鍵點(肩膀,膝蓋,臀部等shoulders, knees, hips)往往比人的頭部(眼睛,鼻子,耳朵eyes, nose, ears)對應(yīng)的σ大得多。
為了獲得感知上有意義和可解釋的相似性度量,我們設(shè)置κi=2σi。通過設(shè)定κi,在di/s的一個,兩個和三個標(biāo)準(zhǔn)偏差處,關(guān)鍵點相似度exp(-di2/2s2κi2)取值為e-1/8=0.88, e-4/8=0.61 and e-9/8=0.32。正如所料,人類注釋的關(guān)鍵點是正態(tài)分布的(忽略偶爾的異常值)。因此,回顧68–95–99.7規(guī)則,設(shè)定κi=2σi意味著人類注釋關(guān)鍵點的68%,95%和99.7%分別具有0.88,0.61或0.32或更高的關(guān)鍵點相似性(在實踐中百分比是75%,95%和98.7%)。
OKS是所有(標(biāo)記的)對象關(guān)鍵點之間的平均關(guān)鍵點相似度。下面我們用κi=2σi來描繪預(yù)測的OKS分布,假設(shè)每個對象有10個獨立的關(guān)鍵點(藍色曲線),以及在雙重注釋數(shù)據(jù)(綠色曲線)上人類OKS得分的實際分布:
圖像不完全匹配的原因有如下幾個(1)對象關(guān)鍵點不是獨立的,(2)每個對象的標(biāo)記關(guān)鍵點的數(shù)量是不同的,(3)真實數(shù)據(jù)包含1-2%的異常值(大部分是是由于注釋者誤將左當(dāng)成右或當(dāng)兩個人靠近時注釋錯誤造成的)。不過,這種行為大致如預(yù)期的那樣。我們得出一些關(guān)于人類表現(xiàn)的結(jié)論(1)在0.50的OKS中,人類的表現(xiàn)幾乎完美(95%),(2)人類的中位數(shù)為~0.91,(3)在OKS為0.95后人類的表現(xiàn)迅速下降。請注意,此OKS分布可用于預(yù)測人類AR(因為AR不依賴于誤報)。
Precision 精確率(查準(zhǔn)率)。表示正確識別物體A的個數(shù)占總識別出的物體個數(shù)n的百分數(shù)Precision = TP / (TP+FP)
Recall 召回率(查全率)。表示正確識別物體A的個數(shù)占測試集中物體A的總個數(shù)的百分數(shù)Recall = TP / (TP+FN)
fp :false positive誤報,即預(yù)測錯誤
fn :false negative漏報,即沒有預(yù)測到
tp:true positive
tn:true negative
iou:intersection-over-union
Accuracy 準(zhǔn)確率。正確分類的樣本數(shù)除以所有的樣本數(shù),正確率越高,分類器越好。Accuracy=(TP+TN)/ (TP+TN+FP+FN)
以上介紹都是基于2分類的,并不是多分類的
以下10個指標(biāo)用于表征COCO上的關(guān)鍵點檢測器的性能:
Average Precision (AP):
AP % AP at OKS=0.50:0.05:0.95(primary challenge metric)
APOKS=.50 % AP at OKS=0.50 (loose metric)
APOKS=.75 % AP at OKS=0.75 (strict metric)
AP Across Scales:
APmedium % AP for medium objects: 322 < area < 962
APlarge % AP for large objects: area > 962
Average Recall (AR):
AR % AR at OKS=0.50:0.05:0.95
AROKS=.50 % AR at OKS=0.50
AROKS=.75 % AR at OKS=0.75
AR Across Scales:
ARmedium % AR for medium objects: 322 < area < 962
ARlarge % AR for large objects: area > 962
1)除非另有說明,否則AP和AR在多個OKS值(0.50:0.05:0.95)之間取平均值。
2)正如所討論的,我們?yōu)槊總€關(guān)鍵點類型i設(shè)置κi=2σi。對于人來說,括號內(nèi)為σ取值,鼻子(0.026,nose),眼睛(0.025,eyes),耳朵(0.035,ears),肩膀(0.079,shoulders),手肘(0.072,elbows),手腕(0.062,wrists),臀部(0.107,hips),膝蓋(0.087,knees),腳踝(0.089,ankles)
3)AP(所有10個OKS閾值的平均值)將決定挑戰(zhàn)勝利者。當(dāng)考慮COCO的關(guān)鍵點性能時,這應(yīng)該被認為是最重要的一個指標(biāo)。
4)計算所有度量標(biāo)準(zhǔn),每個圖像最多允許20個最高得分檢測(我們使用20個檢測,而不是像對象檢測挑戰(zhàn)那樣的100個,因為當(dāng)前人是唯一具有關(guān)鍵點的類別)。
5)小對象(分段區(qū)域面積(segment area)<322)不包含關(guān)鍵點注釋。
6)對于沒有標(biāo)注關(guān)鍵點的對象(包括人群),我們使用寬松的啟發(fā)式方法,以允許根據(jù)幻覺關(guān)鍵點(hallucinated keypoints)(置于實際真實對象內(nèi)以便最大化OKS)匹配檢測結(jié)果。 這與使用框/段(boxes/segments)來忽略區(qū)域的處理非常相似。詳細信息請參閱代碼。
7)無論被標(biāo)記的還是可見的關(guān)鍵點的數(shù)量如何,每個對象都具有相同的重要性。我們不過濾只有幾個關(guān)鍵點的對象,也不會根據(jù)存在的關(guān)鍵點的數(shù)量來加權(quán)對象示例。
評估代碼可在COCO github上找到。 具體來說,分別參見Matlab或Python代碼中的CocoEval.m或cocoeval.py。另請參閱Matlab或Python代碼(demo)中的evalDemo。在運行評估代碼之前,請按結(jié)果格式頁面上描述的格式準(zhǔn)備結(jié)果,建議先看一下這個格式。
除了評估代碼之外,我們還提供了一個函數(shù)analyze()來詳細分析多實例關(guān)鍵點估計中的錯誤。這在Ronchi等人的多實例姿態(tài)估計的基準(zhǔn)和誤差診斷中(Benchmarking and Error Diagnosis in Multi-Instance Pose Estimation)被廣泛地描述。代碼生成這樣的圖像。
我們展示了來自Zhe Cao等人的2016年ECCV 2016關(guān)鍵挑戰(zhàn)獲勝者Pose Affinity Fields檢測器的分析結(jié)果。
該圖總結(jié)了所有類型的錯誤對多實例姿態(tài)估計算法的性能的影響。它由一系列精確召回(PR,Precision Recall)曲線組成,其中每條曲線保證嚴格地高于前面的曲線,因為該算法的檢測在(任意的)OKS閾值為0.9時被逐步校正。圖例顯示曲線下面積(AUC,Area Under the Curve)。曲線如下(檢查項目頁面的完整說明):
1)Original Dts.:在OKS = 0.9(嚴格的OKS(strict KOS)下的AP)時,原始檢測獲得的PR,對應(yīng)于APOKS=.9度量的曲線下面積。
2)Miss:在所有遺漏錯誤(miss error)都被糾正之后,OKS = 0.9處的PR(嚴格的OKS下的AP)。缺失(miss)是一個很大的定位誤差:檢測到的關(guān)鍵點不在正確的身體部位附近。
3)Swap:在所有交換錯誤(swap errors)都被糾正之后,OKS =0.9處的PR(嚴格的OKS下的AP)。 交換(swap)是由于圖像中不同人的相同身體部分(即右肘right elbow)之間的混淆。
4)Inversion:在所有的逆誤差(inversion errors)被糾正之后,OKS =0.9處的PR(嚴格的OKS下的AP)。 倒置(inversion)是由于同一個人身體部位的混亂(即左右肘)造成的。
5)Jitter:在所有抖動錯誤(jitter errors)被糾正之后,OKS =0.9處的PR(嚴格的OKS下的AP)。 抖動(jitter)是一個小的定位誤差:檢測到的關(guān)鍵點在正確的身體部位附近。
6)Opt. Score:所有的檢測算法在評估時使用oracle函數(shù)重新計算之后,OKS = 0.9處的PR(AP在嚴格的OKS)。在檢測和實際真值之間匹配的數(shù)量重新計分達到最大值。
7)FP:所有背景誤報(fps)被移除后的PR。 FP是一個階躍函數(shù),直到達到最大召回率為1,然后降到0(跨類別平均后曲線更平滑)。
8)FN:刪除所有剩余的錯誤時的PR(微不足道的AP = 1(trivially AP=1))。
在上述檢測器的情況下,OKS = 0.9的整體AP是0.327。糾正所有miss錯誤導(dǎo)致AP的大幅改善到0.415。修正swaps改善到0.488,修正inversions改善到0.545,獲得較小的收益。當(dāng)jitter錯誤被消除時,獲得另一個大的改進,導(dǎo)致0.859的AUC。這顯示了如果CMU算法具有關(guān)鍵點的完美定位,性能將會如何。在定位很好的情況下,置信度得分錯誤(confidence score errors)的影響并不顯著,但仍然導(dǎo)致AUC提高約2%(0.879)。最佳評分檢測大大減少了背景誤報(Background False Positives)的影響,因為檢測很少保持不匹配。最后,去除背景錯報(Background False Negatives)提供了剩余的AUC以獲得完美的表現(xiàn)??傊贠KS = 0.9時CMU的錯誤主要是不完美的定位,主要是抖動錯誤和錯過檢測(missed detections)。
對于給定的檢測器,代碼共生成180個圖,在3個區(qū)域范圍(中,大,全)和10個評估閾值(0.5 :0. 05 :0.95)內(nèi)分析所有錯誤。分析代碼將自動生成一個PDF報告,其中包含總體性能總結(jié),方法行為對不同類型錯誤的敏感性及其對性能的影響,以及幾個最重要的失敗案例。
注意:analyze()可能需要很長時間才能運行,請耐心等待。因此,我們通常不會在評估服務(wù)器上運行此代碼;您必須使用驗證集在本地運行代碼。你可以在這個GitHub repository中找到analyze()函數(shù)。