常考題 | IoU 計算
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
本文轉(zhuǎn)自|AI算法與圖像處理
IoU 的計算是面試時常考題,原理簡單,但由于沒有準(zhǔn)備很可能會在面試時,無法正確寫出來,今天我們就一起來好好寫寫。
在深度學(xué)習(xí)領(lǐng)域中,目標(biāo)檢測是一個活躍的研究課題。在一個圖像/框架中的對象是檢測一個簡單的框周圍繪制他們。在對象周圍繪制框的任務(wù)稱為邊界框。邊界框只是圖像中對象的(x-y)坐標(biāo)。這些坐標(biāo)在圖像中唯一定義對象。現(xiàn)在,圖像中對象的邊界框主要是手工標(biāo)記的,可以稱為 Ground Truth 框。深度學(xué)習(xí)模型預(yù)測了物體周圍的一個邊界框,稱為預(yù)測邊界框。

IOU 用于計算區(qū)域交集面積除于區(qū)域并集面積

幫助理解的圖:

來源:https://blog.csdn.net/briblue/article/details/91366128
為了求交集,實(shí)際上是計算這兩個點(diǎn)的坐標(biāo)。

情況(1)
因?yàn)樵谟嬎鉏oU時, A 和 B沿著對角線互換位置并沒不會改變最終的計算結(jié)果。
因此上述的四種情況,可以簡化成兩種來考慮,而另一種則可以計算下面兩點(diǎn)的位置來計算交集面積

情況(2)
而實(shí)際上上面兩種情況的計算方法時一樣的。
具體代碼:
# boxA 存儲的是邊界框的左上頂點(diǎn)坐標(biāo)和右下頂點(diǎn)坐標(biāo)# boxA=[x1,y1,x2,y2]def iou(boxA, boxB):# 計算重合部分的上下左右4個邊的值,注意最大最小函數(shù)的使用left_max = max(boxA[0],boxB[0])top_max = max(boxA[1],boxB[1])right_min = min(boxA[2], boxB[2])bottom_min = min(boxA[3], boxB[3])# 計算重合部分的面積inter = max(0,(right_min-left_max)) * max(0, (bottom_min-top_max)) # 寬*高Sa = (boxA[2]-boxA[0])*(boxA[3]-boxA[1])Sb = (boxB[2]-boxB[0])*(boxB[3]-boxB[1])# 計算所有區(qū)域的面積并計算 iouunion = Sa+Sb-interiou = inter/unionreturn iouif __name__ == "__main__":boxA = [0,0,5,5]boxB = [1,1,6,6]# inter = 16 union=34boxA = [0,0,5,5]boxB = [5,5,6,6]# inter = 0 union=26
IOU的一般門檻可以是0.5。這可能因問題的不同而不同。通常IOU>0.5被認(rèn)為是一個很好的預(yù)測。示意圖

參考鏈接
https://blog.csdn.net/briblue/article/details/91366128
https://medium.com/@nagsan16/object-detection-iou-intersection-over-union-73070cb11f6e
https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

