1. 程式人生 > >物體交叉檢測---IoU評價指標的計算

物體交叉檢測---IoU評價指標的計算

對於物體檢測的結果不管是HOG+SVM,還是deep learnning 檢測到的結果,我們如何去評價我們檢測的好壞?

一、Jason 提出了IoU---Intersection over Union 來評估物體檢測的好壞,IoU演算法很簡單,其計算條件如下:

1、物體的ground truth bounding box

2 、預測的bounding box

如圖:

計算公式如下:

def check_box(box):
    x1,y1,x2,y2=box
    if x2>x1 and y2>y1:
        return 1
    else:
        return 0
def compute_IoU(box1,box2):
    if check_box(box1) and check_box(box2):
        x1,y1,x2,y2=box1
        x_1,y_1,x_2,y_2=box2
        xA=max(x1,x_1)
        yA=max(y1,y_1)
        xB=min(x2,x_2)
        yB=min(y2,y_2)
        overlap_area=max(0,xB-xA+1)*max(0,yB-yA+1)
        union_area=max(0,y2-y1+1)*max(0,x2-x1+1)+max(0,y_2-y_1+1)*max(0,x_2-x_1+1)-overlap_area
    return overlap_area/union_area
if __name__=="__main__":
    box1=[39,63,203,112] #左下角,右上角
    box2=[54,66,198,114]
    print(compute_IoU(box1,box2))

二、算出來的IoU,它如何評價尼?

通常情況下,IoU>0.5我們則認為其實好的檢測

三、ground truth 從何而來?

我們將資料集分為訓練集合測試集以及交叉驗證集,我們將手動label的稱為ground truth,然後再測試集上計算其IoU