【其他】【思考】目標檢測的目標以及mAp(0)

一、簡介

目標檢測(object detection)是一個CV中一個經典的問題,相對於物體識別任務而言,它更加的複雜,應用也更加的廣泛。目標檢測(以下指general object detection)的任務是在場景中檢測出給定的一組類別中所有的物體,這個類別組通常包含很多的類別,例如20類,爲的是體現出檢測任務的普適性(general)。檢測分爲兩步,第一是對物體的位置(location)以及其大小進行明確,也就是給出b-box(bounding box),第二是對物體進行識別,判斷其類別,也就是給出confidence。所以,我們可以從幾個方面來對進行目標檢測的檢測器進行評價:

  1. 它是否將所有給定類別的物體都檢測出來了,有沒有漏檢,更進一步,有沒有冗餘的檢測,對於同一物體,有多個檢測框與之對應。
  2. 它定位的準不準,它對物體大小的判斷是否合適,與ground truth相比如何。
  3. 它識別的效果怎麼樣,識別的準確性如何。

 

二、明確任務

下面,我們來詳細明確一下任務。

1.Ground Truth

Ground Truth是實現給定的正確結果。它標註了數據集中b-box,以及b-box中物體的類別。物體的類別數是事先給定的,比如說VOC2012數據集中就含有20個類別,在YOLO9000,作者使用了具有9000個以上類別的數據集,已經與"general"無異。

對於每一張圖片,Ground Truth給出了其中所有給定類別中的物體的b-box以及對應的label。在VOC2012中,b-box是通過(xmin, ymin, xmax, ymax)來確定的,標定了b-box的top-left點以及bottom-right點。b-box也可以通過(x, y, w, h)來進行描述,x,y描述中心位置,w,h描述b-bow的寬和高。label就是物體的種類。

所以,一張圖片中的Ground Truth會有如下形式:

圖片2007_000027

pictureframe 176 206 225 266
heater 170 156 350 240
pottedplant 272 190 316 259
book 439 157 556 241
book 437 246 518 351
book 515 306 595 375
book 407 386 531 476
book 544 419 621 476
book 609 297 636 392
coffeetable 172 251 406 476
coffeetable 2 236 102 395
tvmonitor 2 10 173 238
bookcase 395 2 639 470
doll 482 83 515 107
vase 276 233 304 259

這張圖片包含了15個物體,每一行描述了物體的(lable, xmin, ymin, xmax, ymax),是一個五元組。得到的b-box稱爲GT b-box(Ground Truth bounding box)。

2.Detection Result

Detection Result是我們的檢測器給出的檢測結果。對於一張圖片,檢測器給出了多個b-box以及b-box對應的confidence。confidence是檢測對物體種類的預測結果,值爲可能性大小。在DNN模型中,我們的輸出是一個概率向量,描述了該b-box中所含物體屬於各個類別的可能性大小,confidence就可以取其中最大的那個概率值,預測label爲對應的物體。所以,檢測結果具有如下格式:

圖片2007_000027

tvmonitor 0.471781 0 13 174 244
cup 0.414941 274 226 301 265
book 0.460851 429 219 528 247
bottle 0.287150 336 231 376 305
chair 0.292345 0 199 88 436
book 0.269833 433 260 506 336
book 0.462608 518 314 603 369
book 0.298196 592 310 634 388
book 0.382881 403 384 517 461
book 0.369369 405 429 519 470
pottedplant 0.297364 259 183 304 239
pottedplant 0.510713 279 178 340 248
pictureframe 0.261096 187 206 237 258
book 0.272826 433 272 499 341
book 0.619459 413 390 515 459

 這張圖片中預測出了15個物體,與上面的Ground Truth比對可以發現檢測出來了一些多餘的book,而doll則沒有檢測出來。輸出的結果是一個6元組(label, confidence, xmin, ymin, xmax, ymax)。得到的b-box稱爲DR b-box(detection result bounding box)。

3.任務

檢測器對每一張圖片給出了detection result,我們也知道了ground truth,任務當然就是根據這些信息去衡量檢測器的好壞啦。

 

三、分析目標

首先,我們需要一種方式去衡量定位的準確性。

1.空間準確率

使用IoU(Intersection over Union)可以做到這一點。對於一個Ground Truth b-box(GT b-box) B1,假如B2是檢測器得到的關於B1中物體的一個b-box(DR b-box),IoU就是\frac{|B_1 \cap B_2|}{|B_1 \cup B_2|},它在[0, 1]之間,它既度量了我們位置估計的準確性,也度量了b-box大小的恰當程度。但是我們如何能夠得知給定的DR b-box對應哪個GT b-box中的物體呢?

方法1:對於DR b-box B2, 我們取與其IoU最大的GT b-box作爲對應的GT b-box。

方法2:對於GT b-box B1, 我們取與其IoU最大的DR b-box作爲對應的DR b-box。

這兩種方法都有缺陷。方法1,可能出現多個GT b-box與之對應,這說明檢測器得出的DR b-box有冗餘。如下圖:

B1 和 B2 都算作了GT的檢測框。一種方法是:在GT b-box被分配給了某一個DR b-box後,就將其剔除出匹配備用列表,不再參與匹配。但這樣也有問題,假設有一個DR b-box D1,我們有GT b-box G1與之匹配,但是D1事實上是一個較差的檢測框,而後面有一個很好的檢測框DR b-box D2,它是檢測器對於GT b-box G1的一個很好的檢測框,而由於G1已經被剔除了,D2便不能與G1匹配,而是與某個G2匹配,它也成爲了一個較差的檢測框,如下圖:

而如果我們顛倒一下檢測順序,那個D2匹配G1,D1匹配G2,則D1仍然較差,但是D2是一個較好的檢測框。所以,這種改進方法會受到DR b-box檢測順序的影響,我們需要一種確定檢測順序的方法。

方法2也有缺陷,可能會有兩個GT b-box選中了統一個DR b-box作爲對應的檢測框,這通常發生在檢測器給出的檢測框過少或者是GT b-box之間有較大重疊的時候,如下圖:

嬰兒的GT b-box和牀的GT b-box重合了,它們都選取了D1作爲對應。

我們可以將方法1和方法2結合,得到以下的問題:

設{G1, ... , Gm}和{D1, ..., Dn}分別爲一張圖片中的GT和DR,如果m!=n,我們可以通過添加零檢測框來使得m=n。

得到以下的匹配問題:\max_{M}{\sum_{i=1}^n\sum_{j=1}^n{IoU(G_i, D_j)M_{ij}}}\\ s.t. \sum_iM_{ij}=\sum_jM{ij}=1, M_{ij}\in\{0,1\},其中Mij = 1代表Gi和Dj匹配,而且這種匹配是一一的。

在求出匹配之後,上面的匹配問題的目標函數值就作爲該檢測器的空間準確程度,爲了消除b-box數量的影響,我們將其除以n,也就是得到IoU的平均值,作爲位置準確的度量。///我們接下來考慮一下這種度量是否是好的。

GT b-box之間可能有三種位置關係:相交,不相交,包含。DR b-box的數量n和GT b-box的數量m有:m<n,m=n,m>n。

如果m<n,說明檢測框有冗餘,由於我們是對整體的IoU和進行考慮,所以有m個最優(總體上)的檢測框與之匹配,那會不會出現這種情況,///

我們之所以這麼執着於兩者之間的匹配,一方面是出於我們想度量空間準確性,另一方面是爲了後面分類準確率的判斷。對於一個檢測器的輸出,我們只知道confidence和b-box,我們並不知道它提出的一個b-box究竟是對哪一個GT b-box的估計,我們只能夠人爲的去猜測這種關係,(或許有什麼方法能夠讓檢測器自己告訴我們它提出的DR b-box究竟對應哪一個GT b-box呢?),並將猜測視爲它真實的想法。

2.分類準確率

對於已經匹配了GT b-box的DR b-box,我們通過比較他們的標籤,就能夠得到分類的準確率了。

3.TP、TN、FP、FN

3.1將定位與識別統一

如果DR b-box的數量更少,那麼會存在GT b-box沒有匹配上,這些GT b-box就是False Negative;如果GT b-box的數量更少,那麼會存在冗餘的DR b-box,那些匹配失敗的DR b-box是False Positive。

在目標檢測任務中,Positive指的是檢測器認爲這裏(loc)有這種類別(label)的物體,是集定位和識別爲一體的概念,對應於DR b-box。Negative就是檢測器認爲這裏(loc)沒有某種類別(lable)的物體。正樣例就是GT b-box們,而負樣例與Negative的概念類似,在訓練集中這裏(loc)沒有某種類別(label)的物體。而TP、FP、FN、TN這四個概念指的是檢測器判斷的情況,是一種判斷情況,不是b-box上的概念,這一點可以詳細看:https://blog.csdn.net/u011956147/article/details/78967145

Ture Positive就是檢測器認爲loc有一個叫label的物體,實際上的確存在,可以用一種簡單的閾值方法去判斷:如果一個DR b-box與其匹配的GT b-box label相同並且IoU足夠大,這種情況視爲Ture Positive。

False Positive就是檢測器認爲loc有一個叫label的物體,但實際上沒有,可以用一種簡單的閾值方法去判斷:如果一個DR b-box與其匹配的label不同或者IoU過小,該DR b-box視爲False Positive。

Negative則較難定義,在判斷是否的問題中,Negative指的是判斷器判斷爲“否”的那些樣本,在目標檢測問題中,檢測器只給出了它認爲有物體的地方在哪裏,而沒有給出否定的方面,我們可以給出一些定義,Negative一方面就來源於定位上的否定:與DR b-box相差甚遠的其他位置,另一方面來源於識別上的否定:它給出了一個物體的confidence,那麼其他物體就是它的類別否定。我們也可以提出一個閾值方法來判斷False Negative:

False Negative就是檢測器認爲loc沒有標爲label的物體,但實際上存在。我們對於物體存在與否是通過GT b-box來得知的,所以我們要通過GT b-box來判斷。如果一個GT b-box與所有的DR b-box,IoU值小於某個閾值,或者雖然存在某個DR b-box使得IoU夠大,但是label不同,那麼這種情況就是False Negative。

Ture Negative指的是檢測器認爲loc沒有標爲label的物體,實際上也的確沒有,由於我們只可以通過GT b-box來得知哪個地方有哪個物體,而無法得知哪個地方沒有哪個物體,所以這種情況我們無法計算。

我們可以總結得到下表:

  True False
Positive DR與其匹配的GT label相同並且IoU足夠大 DR與其匹配的GT label不同或者IoU過小
Negative 無法判斷 GT與其匹配的DR IoU過小或者label不同

TP + FP是檢測器認爲的Positive樣本,也就是DR b-box的數量,TP + FN是所有的正實例,也就是GT b-box的數量。假如GT的數量大於DR的數量的話,那麼一定會出現FN;假如GT的數量小於DR的數量的話,那麼一定會出現FP,這時FP與FN之間的區別。

3.2將定位與識別分開

我們也可以將TP、...這幾個概念在定位與識別上分開來考慮,可以得到下面的表:

定位:

  True False
Positive DR與其匹配的GT IoU足夠大 DR與其匹配的GT IoU過小
Negative 無法判斷 GT與其匹配的DR IoU過小

識別:

  True False
Positive DR與其匹配的GT label相同 DR與其匹配的GT label不同
Negative 無法判斷

GT與其匹配的DR label不同

 

以上就是 目標檢測的目標以及mAp 的一些介紹和思考,在接下來,我會對一些常見的評價標準進行詳細介紹。

參考:

下面的這個文章中對於COCO中的評價方式進行了十分詳盡的解析,寫的也很好:

https://zhuanlan.zhihu.com/p/56899189

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