在講 AP 之前先來說說 Precision 跟 Recall,就公式上來說 precision = TP/TP+FP,recall = TP/TP+FN,白話來說 Precision 就是所有 positive(預測)的結果中 TP 的比例,recall 就是預測中 positive 的目標被正確判斷為 positive 的比例,舉例來說,今天如果一張圖中有五個人,有三個人被正確的框出來了,但有另外一個不知道標去那裡的框,因此所有 positive 的結果(TP+FP=4)中有三個是對的,所以 precision=0.75,那實際為 positive 的目標(5)有三個正確的標出來,所以recall=0.6,也可以說 precision 看你標出來的品質,recall 指在乎目標有沒有被標到,confidence threshold 過高你可能標的很準達到超高的precision,但你忽略的地方相對來說也會增加,太低的話 recall 可以很高,不過可能標了太多不存在的東西。
幹嘛不直接看 Precision?
如同 detection 的結果,每個預測其實都包含了一個 confidence,如果兩個 model 預測出來一樣都是 0.8 的 precision,但一個 confidence 都落在快要被排除掉的範圍,一個 confidence 都是很完美的1,此時單純的 precision 就無法去判別出好壞。
所以 AP 怎麼計算?
所謂 AP 就是計算模型預測結果的 Precision-Recall-curve 底下的面積,顧名思義就是以 Precision 跟 Recall 當作橫軸與縱軸畫出來的圖,延續前面的例子,我們假設預測出來的框框其實有五個,confidence 分別為0.9、0.8、0.7、0.6、0.4,其中後兩個分別為錯誤與正確的預測,且 confidence threshold 為0.5,因此結果的四個框框都被選出來,但如果不論如何只選最高的那個top-1,對這例子來說 precision 就是1,如果再放寬一點,我前兩名都給過,那在這例子中依然是個很準的情況,再繼續下去放寬到第四個時,precision 就開始下降了,但過程中 recall 也會跟著增加,AP 就是來計算這曲線底下的面積,precision-recall curve,把選取的情況一一列出可以得到
Confidence threshold
0.9