目標檢測IOU指標的python實現

2021-10-03 02:36:53 字數 1833 閱讀 1476

iou指標是目標檢測中重要的評價指標,即交集與並集的比值。

如圖:

iou的計算公式如下:

即**框與真實框的交並比。先計算交集的面積,在計算並集的面積,然後求兩者的比值。

計算**如下:

其中ground truth的座標為(x0,y0,w0,h0),bounding box的座標分別為(x1,y1,w1,h1)

w =

(min

((x0+w0)

,(x1+w1))-

max(x0,x1)

)h =

(min

((y0+h0)

,(h1+h1))-

max(y0,y1)

)intersection = w*h

union = w0*h0 + w1*h1 -intersection

這裡跟上圖的表示不一致,上圖中的bbox和gtbox的座標表示為(x1,y1,x2,y2),分別表示bbox的左上角座標和右下角座標。

如果將上述**適應於上圖,則**可改寫為:

w0 = gx2 - gx1

w1 = cx2 - cx1

h0 = gy1 - gy2

h1 = cy1 - cy2

w =(

min(

(x0+w0)

,(x1+w1))-

max(x0,x1)

)h =

(min

((y0+h0)

,(h1+h1))-

max(y0,y1)

)intersection = w*h

union = w0*h0 + w1*h1 -intersection

例子:

# 真實框的座標,寬高

gt_box =

[gt_x, gt_y,gt_w,gt_h]=1

,1,4

,5# **框的座標,寬高

c_box =

[c_x, c_y,c_w,c_h]=3

,2,3

,6# iou 計算函式

defiou

(gt_box, c_box)

: w =

(min

((gt_box[0]

+gt_box[2]

),(c_box[0]

+c_box[2]

))-max

(gt_box[0]

, c_box[0]

))h =

(min

((gt_box[1]

+gt_box[3]

),(c_box[1]

+c_box[3]

))-max

(gt_box[1]

, c_box[1]

))inter = w * h

iou = inter /

(gt_box[2]

* gt_box[3]

+ c_box[2]

* c_box[3]

- inter)

print

('iou is {}'

.format

(iou)

)return iou

if __name__ =

'__main__'

: iou(gt_box, c_box)

結果是:

iou is

0.26666666666666666

目標檢測之 IoU

iou 作為目標檢測演算法效能 map 計算的乙個非常重要的函式 但縱觀 iou 計算的介紹知識,都是直接給出 給出計算方法,沒有人徹底地分析過其中的邏輯,故本人書寫該篇部落格來介紹下其中的邏輯。iou 的全稱為交並比 intersection over union 通過這個名稱我們大概可以猜到 i...

目標檢測之IoU

iou 交並比 是目標檢測中乙個常用的概念,通常用來衡量候選框 candidate 與真實標記框 ground truth 之間的交疊程度。定義兩個集合a和b,兩者的iou為兩者的交與兩者的並的比值,即 iou 例如圖中有兩個有重疊部分的矩形 乙個是藍色矩形a,另乙個是綠色矩形b,交疊部分用橙色表示...

目標檢測之 IoU

iou 作為目標檢測演算法效能 map 計算的乙個非常重要的函式。但縱觀 iou 計算的介紹知識,都是直接給出 給出計算方法,沒有人徹底地分析過其中的邏輯,故本人書寫該篇部落格來介紹下其中的邏輯。iou 的全稱為交並比 intersection over union 通過這個名稱我們大概可以猜到 i...