python實現IOU計算

2021-08-22 19:20:30 字數 1342 閱讀 7217

計算兩個矩形的交並比,通常在檢測任務裡面可以作為乙個檢測指標。你的**bbox和groundtruth之間的差異,就可以通過iou來體現。很簡單的演算法實現,我也隨便寫了乙個,嗯,很簡單。

1. 使用時,請注意bbox四個數字的順序(y0,x0,y1,x1),順序不太一樣。

#!/usr/bin/env python

# encoding: utf-8

def compute_iou(rec1, rec2):

"""computing iou

:param rec1: (y0, x0, y1, x1), which reflects

(top, left, bottom, right)

:param rec2: (y0, x0, y1, x1)

:return: scala value of iou

"""# computing area of each rectangles

s_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1])

s_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1])

# computing the sum_area

sum_area = s_rec1 + s_rec2

# find the each edge of intersect rectangle

left_line = max(rec1[1], rec2[1])

right_line = min(rec1[3], rec2[3])

top_line = max(rec1[0], rec2[0])

bottom_line = min(rec1[2], rec2[2])

# judge if there is an intersect

if left_line >= right_line or top_line >= bottom_line:

return 0

else:

intersect = (right_line - left_line) * (bottom_line - top_line)

return (intersect / (sum_area - intersect))*1.0

if __name__=='__main__':

rect1 = (661, 27, 679, 47)

# (top, left, bottom, right)

rect2 = (662, 27, 682, 47)

iou = compute_iou(rect1, rect2)

print(iou)

IOU的計算和python實現

深度學習的目標檢測中,iou表示先驗框 bounding box 和真實框 ground truth 的交並比,在數學上就是表示兩個框之間的交際和兩個框的並集的比值。初中我們就知道,交集一定是小於或等於並集。在faster rcnn等目標檢測框架中,經常用到這個東西,今天來實現一下。雖然網上有很多版...

YOLO 用 Python 來計算 IOU

在做yolo目標檢測相關的專案,裡面涉及到計算iou,可以理解為系統 出來的框與原來中標記的框的重合程度。因為yolo的實現是用tensorflow實現的,而我又要單獨列出來,所以就打算用python來計算 iou。iou的計算這個問題,其實我們可以轉化成兩個矩形框的重合程度,那麼 這裡有個難點,如...

python實現的Iou與Giou

最近看了網上很多博主寫的iou實現方法,但giou的 似乎比較少,於是便自己寫了乙個,新手上路,如有錯誤請指正,話不多說,上 def iou rec1,rec2 x1,x2,y1,y2 rec1 分別是第乙個矩形左右上下的座標 x3,x4,y3,y4 rec2 分別是第二個矩形左右上下的座標 are...